使用HtmlUnit刮擦aspx站点,如何单击Javascript按钮?

时间:2013-04-09 20:50:35

标签: java htmlunit

我正在尝试抓一个.aspx网站,这个网站基本上只是一个大的分页表,沿着这里找到的一行:http://data.fingal.ie/ViewDataSets/(注意,我正在抓的实际网站在付费墙后面,所以无法发布实际链接)。

然而,问题在于,表格不是具有唯一网址的每个页面,而是通过发布到自身来更改页面,然后更新表格内的内容。

next page按钮如下所示:

</td>
<td class="dxpButton" onclick="aspxGVPagerOnClick('ctl00_cphProduct_gvList','PBN');" style="cursor:pointer;">
<img class="dxWeb_pNext" src="/DXR.axd?r=1_5-BUdv6" alt="Next" /></td><td style="width:4px;"><div style="height:1px;width:4px;overflow:hidden;">

如何使用HtmlUnit模拟点击此按钮?

1 个答案:

答案 0 :(得分:3)

您希望找到<div class="dxpButton">。 最简单的方法是使用xPath:

final WebClient webClient = new WebClient();
HtmlPage page = webClient.getPage("http://<<YOUR URL HERE>>");

final HtmlDivision div = page.getFirstByXPath("//div[@class='dpxButton']");
page = div.click(); 
// This returns the page shown after the click

这将执行点击。我假设它是通过AJAX加载的,在这种情况下你可能想要使用:

while(some new element doesn't exist; or some 'completed' condition) {
    // Wait for javascript to catch up.
    webClient. waitForBackgroundJavaScript(1000);
}