我正在用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手动查看源时,一旦我单击下一个按钮,我必须刷新页面以查看更新的源代码,所以想象我将不得不在我的程序中模拟它。我该怎么做呢?即使在添加刷新方法之后,它仍然无法正常工作。
答案 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这样的错误 - 禁止访问:访问被拒绝。 请先检查一下。