2014-09-12 73 views
0

單擊我想使用的HtmlUnit從http://www.jobolizer.com網站獲取信息,使Java應用程序。 所以,事情是我必須用我的網址填寫文本框,然後點擊錨點提交表單。 第一部分效果很好(用我的數據找到表單和填充表單文本框),但我找不到使用getByXPath()方法的錨點,錨點沒有名稱或值。 enter image description here的Java上的HtmlUnit錨

這裏是我的代碼:

public class JobolizerCrawler { 
    private final String jobolizerUrl = "http://www.jobolizer.com"; 
    WebClient webClient = new WebClient(BrowserVersion.FIREFOX_24); 

    public JobolizerCrawler() { 
     webClient.getOptions().setJavaScriptEnabled(true); 
     webClient.getOptions().setCssEnabled(false); 
    } 
    public void fillTextBoxWithUrl(String vacancyURL) throws IOException { 

     final HtmlPage page = webClient.getPage(jobolizerUrl); 
     System.out.println(page.asText()); 
     final HtmlForm form = page.getFirstByXPath("//form[@action='/phpProxy/getJOBolizerResponse_en.php']"); 
     final HtmlTextInput input = form.getInputByName("url"); 
     input.setText(vacancyURL); 

     HtmlButton button = (HtmlButton) page.getByXPath("/form[@action='/phpProxy/getJOBolizerResponse_en.php']/a[@id=lightboxlink]").get(0); 
     HtmlPage page2 = button.click(); 


     String page2Text = page2.asText(); 
     System.out.println(page2Text); 
    } 
} 

回答

1

我想通了,這裏是工作代碼:

HtmlAnchor link = null; 
    for (HtmlAnchor anchor : anchors) { 
     String str = anchor.asText(); 
     if (anchor.asText().equals("Start")) 
      link = anchor; 
    } 
    HtmlPage page2 = link.click(); 
+0

當你拿到從,你用//形式(選擇的節點來自當前節點的與選擇相匹配的文檔,而不管它們在哪裏)。但是,當您嘗試獲取錨點時,可以使用/ form(從根節點選擇)。我不知道你整個表格的結構,但這可能是問題。與此同時,你可以試試這個:HtmlAnchor hyperElm =(HtmlAnchor)form.getFirstByXPath(「// a [@ id = lightboxlink]」); – 2015-08-27 00:50:02