【问题标题】:How to click on multiple links within a table using HtmlUnit Java如何使用 HtmlUnit Java 单击表中的多个链接
【发布时间】:2018-01-07 08:45:51
【问题描述】:

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

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

比如我希望能够点击lm_id下的“LMGP10010453”

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

有没有人知道如何访问表格的某些元素(最好是最左上角的元素)并单击其中的链接?

【问题讨论】:

    标签: java hyperlink web-scraping htmlunit


    【解决方案1】:

    首先,尝试通过 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();
    

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

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-19
      • 2016-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多