如何使用HtmlUnit Java

时间:2017-07-31 17:06:40

标签: java hyperlink web-scraping htmlunit

我想使用HtmlUnit和Java访问此网站上的表值:

http://www.lipidmaps.org/data/chemdb_lm_text_ontology.php?ABBREV=PA(40:10)

例如,我希望能够点击" LMGP10010453"在lm_id下

我对这种性质的其他问题的解决方案包括寻找元素的xpath或id,但在这种情况下,因为我需要访问许多其他网站,其中lm_id不是这一个,我可以& #39; t只是对xpath链接进行硬编码。例如,在此链接上,lm_id是不同的:http://www.lipidmaps.org/data/chemdb_lm_text_ontology.php?ABBREV=PI(27:0)

有没有人有任何想法如何访问表格的某些元素(最好只是最左上角的元素)并点击其中的链接?

1 个答案:

答案 0 :(得分:0)

要开始,请尝试通过ID获取表格。 (或者你可以通过XPath获取表格。)

WebClient webClient = new WebClient();
HtmlPage page = webClient.getPage("http://www.lipidmaps.org/data/chemdb_lm_text_ontology.php?ABBREV=PA(40:10)");
HtmlTable table = page.getHtmlElementById("table id");

然后,您可以使用table.getCellAt()

访问左上角的元素
HtmlTableCell upperLeft = (HtmlTableCell) table.getCellAt(2,1);

您可以从表格元素中获取链接,如下所示:

List<HtmlLink> links = upperLeft.getHtmlElementsByTagName("a"); 
String href = links.get(0).getHrefAttribute();

以上代码将为您提供您尝试单击的链接的href。

最后,您可以从找到的href中获取锚点,然后单击它。

HtmlAnchor anchor = page.getAnchorByHref(href);
page = anchor.click();

您可能需要调整我的示例代码以匹配您正在使用的表,但它通常应该可以正常工作。

希望这有帮助!