gpt4 book ai didi

java - 在 Htmlunit 中处理 AJAX 请求

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:13:44 25 4
gpt4 key购买 nike

我编写了一个程序,用于在单击按钮后从网页中抓取源代码。我无法抓取正确的页面,因为我相信正在发送 AJAX 请求,而我没有等待此响应发生。我的代码目前是:

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 {

java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(Level.OFF);
System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog");

final WebClient webClient = new WebClient();
final HtmlPage page = webClient.getPage(s);
final HtmlForm form = page.getForms().get(2);
final HtmlSubmitInput button = form.getInputByValue(">");
final HtmlPage page2 = button.click();
String originalHtml = page2.refresh().getWebResponse().getContentAsString();
return originalHtml;
}
}

引用这个之后link ,我相信要解决这个问题,我可以实现方法“webClient.waitForBackgroundJavaScript(10000)”。唯一的问题是我不明白如何执行此操作,因为每次单击按钮时我都会创建一个 HtmlPage 对象,而不是 WebClient 对象。我如何结合此方法来解决问题?

最佳答案

对我来说,使用带有 NicelyResynchronizingAjaxController 的 htmlunit 2.15 以及

webClient.getOptions().setThrowExceptionOnScriptError(false);

我的完整设置是

    WebClient webClient = new WebClient(BrowserVersion.FIREFOX_24);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setCssEnabled(false);
webClient.setAjaxController(new NicelyResynchronizingAjaxController());

关于java - 在 Htmlunit 中处理 AJAX 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19551043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com