Я пытаюсь скопировать результаты поиска ключевых слов из ответов Yahoo, в моем случае, «алкогольная зависимость». Я использую Jsoup и модификацию URL, чтобы просматривать страницы результатов поиска, чтобы очистить результаты. Тем не менее, я замечаю, что, хотя я добавил URL для результатов «Новые», он продолжает показывать результаты «Релевантность», и, что еще хуже, результаты не совсем то же, что и в браузере.Скребок Yahoo Ответы с Jsoup
Например, URL-адрес для новейших результатов: http://answers.yahoo.com/search/search_result?p=alcohol+addiction&s=1&sort=new
И для соответствующих результатов, URL-адрес является: http://answers.yahoo.com/search/search_result?p=alcohol+addiction&s=1&sort=rel
И "1" изменится на 2, 3, 4, и т.д. когда вы переходите на следующую страницу (на странице 10 результатов).
Вот что мне делать, чтобы очистить страницу:
String urlID = "";
String end = "&sort=new";
String glob = "http://answers.yahoo.com/search/search_result?p=alcohol+addiction&s=";
Integer forumID = 0;
while(nextPageIsThere){
forumID++;
System.out.println("Now extracting the page: "+forumID);
try {
urlID = glob+forumID+end;
System.out.println(urlID);
exdoc = Jsoup.connect(urlID).get();
java.util.Date date= new java.util.Date();
} catch (IOException e) {
e.printStackTrace();
}
...
Что еще более запутанной, даже если я увеличить число страниц, а на выходе системы показывает, что URL меняется на:
http://answers.yahoo.com/search/search_result?p=alcohol+addiction&s=2&sort=new
и
http://answers.yahoo.com/search/search_result?p=alcohol+addiction&s=3&sort=new
все еще царапает ту же страницу, что и на странице 1 снова и снова. Я знаю, что мой код не ошибается. Я отлаживал его часами. Я думаю, что это что-то связано с Jsoup.connect и/или Yahoo Answer, возможно, блокируя ботов? В то же время, я не думаю, что это действительно так.
Кто-нибудь знает, почему это может произойти?
На странице использует javascript для загрузки страниц. Jsoup не может справиться с этим. – alkis
alkis: Спасибо. Какое обходное решение? Мой соавтор уведомил меня, что проблема могла быть в &, которая прервала URL. Замена &% 26 в URL-адресе работала, но все равно это не то же самое, что при использовании браузера. –
Посмотрите на веб-драйвер htmlunit или selenium. Они содержат среду выполнения js (браузер без браузера), поэтому они могут выполнять js, а затем анализировать данные. – alkis