2013-12-07 9 views
2

Я пытаюсь создать приложение, написанное в java, которое использует мою функцию поиска в университете. Я использую простой запрос http-запроса со следующим кодом:Скребок экрана в Java

public static String GET_Request(String urlToRead) { 

    java.net.CookieManager cm = new java.net.CookieManager(); 
    java.net.CookieHandler.setDefault(cm); 

    URL url; 
    HttpURLConnection conn; 
    BufferedReader rd; 
    String line; 
    String result = ""; 

    try { 

     url = new URL(urlToRead);  
     conn = (HttpURLConnection) url.openConnection();  
     conn.setRequestMethod("GET"); 
     rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
     while ((line = rd.readLine()) != null) { 
      result += line; 
    } 

    rd.close(); 

    } 
    catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return result; 
} 

Но он не работает.

Вот URL, я пытаюсь скрести: https://webapp4.asu.edu/catalog/classlist?c=TEMPE&s=CSE&n=100&t=2141&e=open&hon=F

Я попытался глядя в jsoup, но когда я иду на их вкладке попробовать jsoup и принести URL он приходит с теми же результатами, как запрос GET придумывает.

Повторные неудачные результаты, которые я получаю с запросом http get и jsoup, это то, что оно выводит страницу поиска в университете, но не фактические классы и информацию о том, открыты ли они или нет.

То, что я в конечном счете ищу, это способ очистить сайт, который показывает, имеют ли классы открытые места или нет. Как только я получу содержимое веб-страницы, я смогу разобраться с ней, я просто не получаю хороших результатов.

Спасибо!

+0

Можете ли вы создать единый URL-адрес, который работает в вашем браузере? Кажется, что у него отсутствуют параметры запроса. –

+0

Этот url * должен * работать в браузере ... здесь он снова .. https://webapp4.asu.edu/catalog/classlist?c=TEMPE&s=CSE&n=100&t=2141&e=open&hon=F –

+0

Он делает, но он не отображает результаты поиска в моем браузере - он запрашивает больше ввода. –

ответ

1

Вы должны добавить печенье, чтобы ответить на первоначальный курс подношения вопрос:

класс каталог Поиск курса
указать, какие Конечно предложения вы хотите увидеть
* ASU Campus
* ASU Online

Вы можете сделать это, просто добавляя

conn.setRequestProperty("Cookie", "onlineCampusSelection=C"); 

HttpURLConnection.

Я нашел файл cookie с помощью инструментов разработчика Google Chrome (Ctrl-Shift-I) и просмотрел вкладку Resources, а затем развернул Cookies, чтобы просмотреть файлы cookie webapp4.asu.edu.

Следующий код (в основном за вами) получает HTML страницы, которую вы ищете:

public static void main(String[] args) { 
    System.out.println(download("https://webapp4.asu.edu/catalog/classlist?c=TEMPE&s=CSE&n=100&t=2141&e=open&hon=F")); 
} 

static String download(String urlToRead) { 
    java.net.CookieManager cm = new java.net.CookieManager(); 
    java.net.CookieHandler.setDefault(cm); 
    String result = ""; 
    try { 
     URL url = new URL(urlToRead); 
     HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
     conn.setRequestMethod("GET"); 
     conn.setRequestProperty("Cookie", "onlineCampusSelection=C"); 

     BufferedReader rd = new BufferedReader(new InputStreamReader(
       conn.getInputStream())); 
     String line; 
     while ((line = rd.readLine()) != null) { 
      result += line + "\n"; 
     } 
     rd.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return result; 
} 

Хотя, я бы использовать реальный анализатор как jsoup или HTML Parser сделать фактическую работу синтаксического анализа.

+0

Спасибо, сработало! –

Смежные вопросы