java - Htmlunit中点击按钮后如何刷新页面

标签 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 。对于初学者来说,我不太确定“Form”类是如何工作的,以及它到底做了什么。但对于我的问题,正在打印的字符串是原始网页的源代码,而不是单击下一个按钮后的源代码。从 URL 手动查看源代码时,一旦单击“下一步”按钮,我就必须刷新页面才能查看更新的源代码,所以想象一下我必须在程序中模拟这一点。我该怎么做呢?即使添加刷新方法后,它仍然不起作用。

最佳答案

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

引用这个link了解如何在 HTMLUnit 中处理 AJAX 请求。

关于java - Htmlunit中点击按钮后如何刷新页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19414297/

相关文章:

javascript - Jquery 调用 :first 的替代方法

python - 为什么Scrapy不爬取或解析?

python - 如何在不滚动的情况下获取整个页面的 HTML?

java - Spring - 只允许查询字符串中的特定参数,否则会抛出错误

java - 如何在互联网上使用 Eclipse 编写 Java 代码

javascript - 页面加载时自动加载弹出窗口

javascript - 如何为具有多种颜色的导航栏实现淡入淡出的颜色混合

python - 绕过循环AttributeError : 'NoneType' object has no attribute 'findAll'

java - 如何使用 java Apache POI 在 excel 中动态构建边框

java - 当我在initialize()方法中添加TableView功能时按钮停止工作