java - 使用 htmlunit 检索结果页面

标签 java web-crawler htmlunit

我正在尝试使用 HtmlUnit 模拟搜索网站旅行票证。目标是获得搜索结果页面。我的代码返回搜索页面(等待结果...)

这是代码:

public class TestHtmlUnit {

public static void main(String[] args) throws Exception {

    // Create and initialize WebClient object
    WebClient webClient = new WebClient(BrowserVersion.FIREFOX_10);
    webClient.setThrowExceptionOnScriptError(false);
    webClient.setRefreshHandler(new RefreshHandler() {
        public void handleRefresh(Page page, URL url, int arg) throws IOException {
            System.out.println("handleRefresh");
        }

    });

    // visit Yahoo Mail login page and get the Form object
    HtmlPage page = (HtmlPage) webClient.getPage("http://www.voyages-sncf.com/");
    HtmlForm form = page.getFormByName("TrainTypeForm");

    // Enter login and passwd of 
    form.getInputByName("origin_city").setValueAttribute("paris");
    form.getInputByName("destination_city").setValueAttribute("marseille");
    form.getInputByName("outward_date").setValueAttribute("28/03/2013");


    // Click "Sign In" button/link
    page = (HtmlPage) form.getInputByValue("Rechercher").click();





    // Print the newMessageCount to screen
    //System.out.println("newMessageCount = " + newMessageCount);

   // System.out.println(page.asHTML());                    
    System.out.println(page.asText());
    }
}

最佳答案

点击后您应该等待页面加载

试试这个

webClient.waitForBackgroundJavaScript(1000);

 webClient.setAjaxController(new NicelyResynchronizingAjaxController());
            webClient.setAjaxController(new AjaxController(){
                @Override
                public boolean processSynchron(HtmlPage page, WebRequest request, boolean async)
               {
                    return true;
                }
            });

JavaScriptJobManager manager = page.getEnclosingWindow().getJobManager();
            while (manager.getJobCount() > 0) {
                Thread.sleep(100);
            }

关于java - 使用 htmlunit 检索结果页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15661259/

相关文章:

java - 如何使用 XPath 获取元素节点之间的原子值

java - htmlunit:发送 POST 表单并检索响应

java - 找不到符号 - javax.swing.JTextField.getDocument().setDocumentFilter(javax.swing.text.DocumentFilter)

java - 检索 List 中 Map 的值

java - 在java中正确地将字符串数组转换为字符串并返回

php - 将字段组合成数组

python - Scrapy 爬虫不适用于网站,我得到部分结果

python - scrapy拒绝规则不被忽略

java - 奇怪的 HtmlUnit 行为(错误?)

java - 替换 JTable 空值 JAVA