如何在Htmlunit中单击按钮后刷新页面

时间:2013-10-16 21:31:45

标签: java html web-scraping htmlunit

我正在用Java编写一个程序,在点击页面底部的下一个按钮后从一系列页面中删除源代码。我的代码目前是:

public class Htmlunitscraper { 

  private static String s = "http://cpdocket.cp.cuyahogacounty.us/SheriffSearch/results.aspx?q=searchType%3dSaleDate%26searchString%3d10%2f21%2f2013%26foreclosureType%3d%27NONT%27%2c+%27PAR%27%2c+%27COMM%27%2c+%27TXLN%27";

  public static String scrapeWebsite() throws IOException {

    final WebClient webClient = new WebClient();
    final HtmlPage page = webClient.getPage(s);
    final HtmlForm form = page.getForms().get(0);
    final HtmlSubmitInput button = form.getInputByValue(">");
    final HtmlPage page2 = button.click();
    int amountOfTries = 10;
    while (amountOfTries > 0 && String originalHtml = page2.getWebResponse().getContentAsString() !=page.getWebResponse().getContentAsString()) {
    amountOfTries--;
    synchronized (page) {
        page.wait(1000);
    }
   }
    return originalHtml;
  }
}

这是我第一次使用Htmlunit,所以我一直指的是post。对于初学者来说,我并不完全确定“形式”这个类是如何工作的,以及它到底是做什么的。但是对于我的问题,正在打印的字符串是来自原始网页的源代码,而不是在单击下一个按钮之后。当从URL手动查看源时,一旦我单击下一个按钮,我必须刷新页面以查看更新的源代码,所以想象我将不得不在我的程序中模拟它。我该怎么做呢?即使在添加刷新方法之后,它仍然无法正常工作。

2 个答案:

答案 0 :(得分:2)

网页实际上使用的是AJAX,因此点击该按钮无法进入新页面。 HTTP请求在后台发生,一旦完成,页面中的DOM就会刷新。但是,你需要等待这种情况发生,似乎你没有这样做。

请参阅此link以了解如何在HTMLUnit中处理AJAX请求。

答案 1 :(得分:0)

实际上你把错误的网址...    请先手动打开网址,然后您可以看到http://cpdocket.cp.cuyahogacounty.us/SheriffSearch/results.aspx?q=searchType%3dSaleDate%26searchString%3d10%2f21%2f2013%26foreclosureType%3d%27NONT%27%2c+%27PAR%27%2c+%27COMM%27%2c+%27TXLN%27

然后我们得到了像403这样的错误 - 禁止访问:访问被拒绝。 请先检查一下。