我有一个用 Htmlunit 编写的程序,可以从网站上的多个页面返回信息。问题是,虽然前两页返回正常,但随后每隔一页返回(返回第 1、2、4、6 页等)。我相信我引用的所有变量都是正确的,所以我不确定问题是服务器与程序通信还是其他问题。我的代码是:
public static void scrapeWebsite() throws IOException {
final WebClient webClient = new WebClient();
final HtmlPage page = webClient.getPage(s);
originalHtml = page.getWebResponse().getContentAsString();
obtainInformation();
originalHtml = "";
//////code below returns page 2 as expected////
final HtmlForm form = page.getForms().get(0);
final HtmlSubmitInput button = form.getInputByValue(">");
final HtmlPage page2 = button.click();
try {
synchronized (page2) {
page2.wait(5000);
}
}
catch(InterruptedException e)
{
System.out.println("error");
}
originalHtml = originalHtml + page2.refresh().getWebResponse().getContentAsString();
obtainInformation();
originalHtml = "";
/////// code below returns page 4, instead of page 3/////
final HtmlForm form2 = page2.getForms().get(0);
final HtmlSubmitInput button2 = form2.getInputByValue(">");
final HtmlPage page3 = button2.click();
try {
synchronized (page3) {
page3.wait(5000);
}
}
catch(InterruptedException e)
{
System.out.println("error");
}
originalHtml = originalHtml + page3.refresh().getWebResponse().getContentAsString();
obtainInformation();
}
我能想到的唯一问题是,当 page.refresh() 运行时,它实际上是双击按钮,但没有 page.refresh(),第一页上的信息只会返回 3 次。此外,s 指的是网站的字符串。