2012-02-17 2 views
0

Я использую следующий код, чтобы получить первые две страницы результатов поиска google , но я могу получить только первую страницу (на странице поиска 2, это то же самое с страница 1)Как использовать htmlunit получить «следующую страницу» в google

import com.gargoylesoftware.htmlunit.WebClient; 
import com.gargoylesoftware.htmlunit.html.HtmlElement; 
import com.gargoylesoftware.htmlunit.html.HtmlPage; 
import com.gargoylesoftware.htmlunit.html.HtmlTextInput; 


/** 
* A simple Google search test using HtmlUnit. 
* 
* @author Rahul Poonekar 
* @since Apr 18, 2010 
*/ 
public class Author_search { 
    static final WebClient browser; 

    static { 
     browser = new WebClient(); 
     browser.setJavaScriptEnabled(false); 
    } 

    public static void main(String[] arguments) { 
      searchTest(); 
    } 

    private static void searchTest() { 
     HtmlPage currentPage = null; 

     try { 
      currentPage = (HtmlPage) browser.getPage("http://www.google.com"); 
     } catch (Exception e) { 
      System.out.println("Could not open browser window"); 
      e.printStackTrace(); 
     } 
     System.out.println("Simulated browser opened."); 

     try { 
      ((HtmlTextInput) currentPage.getElementByName("q")).setValueAttribute("xxoo"); 
      currentPage = currentPage.getElementByName("btnG").click(); 
      System.out.println("contents: " + currentPage.asText()); 
      HtmlElement next = (HtmlElement)currentPage.getByXPath("//span[contains(text(), 'Next')]").get(0); 
      currentPage = next.click(); 
      System.out.println("contents: " + currentPage.asText()); 
     } catch (Exception e) { 
      System.out.println("Could not search"); 
      e.printStackTrace(); 
     } 
    } 
} 

может кто-нибудь сказать мне, как исправить это?

кстати:

  1. Как изменить языковые настройки в Google с помощью HtmlUnit? любой удобными способами?
  2. htmlunit обрабатывает html как «firebug» в firefox или просто обрабатывает его, как тексты в «file-> save». В моем ответе я считаю, что он относится к нему так, как будто это был исследователь, я прав ?

ответ

2

я заменил:

HtmlElement next = (HtmlElement)currentPage.getByXPath("//span[contains(text(),'Next')]").get(0); 
currentPage = next.click(); 

с:

HtmlAnchor nextAnchor =currentPage.getAnchorByText("Next"); 
currentPage = nextAnchor.click(); 
+0

нужно импортировать: com.gargoylesoftware.htmlunit.html.HtmlAnchor –