2015-07-17 2 views
1
import com.jaunt.*; 
public class JauntCrawler{ 
    public static void main(String[] args){ 
    try{ 
     UserAgent userAgent = new UserAgent();   //create new userAgent (headless browser) 
     userAgent.visit("http://google.de");   //visit google 
     userAgent.doc.apply("schmetterlinge");   //apply form input (starting at first editable field) 
     userAgent.doc.submit();   //click submit button labelled "Google Search" 


     Elements links = userAgent.doc.findEvery("<h3 class=r>").findEvery("<a>"); //find search result links 
     for(Element link : links) System.out.println(link.getAt("href"));   //print results 

     if(userAgent.doc.nextPageLinkExists()) { 
      userAgent.visit(userAgent.doc.nextPageLink().getHref()); 
      Elements newlinks = userAgent.doc.findEvery("<h3 class=r>").findEvery("<a>"); 
      System.out.println("\nPage 2:"); 
      for(Element link : newlinks) System.out.println(link.getAt("href")); 
     } 
    } 
    catch(JauntException e){   //if an HTTP/connection error occurs, handle JauntException. 
     System.err.println(e); 
    } 
    } 
} 

Я хочу вернуть больше результатов поиска из Google, чем только на первую страницу. Таким образом, второй for-loop должен в основном возвращать результаты следующей страницы, но это не так. Любая идея почему?Jaunt webcrawler - не может посещать следующую страницу результатов поиска Google

+0

Поскольку вы соскабливаете немецкую страницу Google, она не содержит текст «Страница 2» Запустите запрос в браузер, и посмотрите исходный код первой страницы, чтобы найти немецкую страницу 2. Удачи, поскольку на странице в основном используются вызовы JavaScript. –

+0

Я только выводю это на консоль;) Я не думаю, что это проблема языка – Pete

ответ

1

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

Elements nextLinks = userAgent.doc.findEvery("<a class=fl"); 
     for(int i=0;i<nextLinks.size();i++) { 
      userAgent.visit("http://google.co.in/search?q="+<search_string+"&start="+(i+1)*10); 
      links = userAgent.doc.findEvery("<h3 class=r>").findEvery("<a>"); 
      for(Element link : links) System.out.println(link.getAt("href")); 
     } 
+0

ваше решение работало на 10 страниц, его не пересекали до конца страницы. – Rudra

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