【问题标题】:how to get text between a specific span with HtmlUnit如何使用 HtmlUnit 在特定跨度之间获取文本
【发布时间】:2013-05-04 14:28:11
【问题描述】:

我是 HtmlUnit 的新手,我什至不确定它是否适合我的项目。 我正在尝试解析一个网站并从中提取我需要的值。我需要从中获取值“07:05”,

<span class="tim tim-dep">07:05</span>

我知道我可以使用 getTextContent() 来提取值,但我不知道如何选择特定范围。我使用 getElementById 来查找

<div>

这个表达式所属的标签,但是当我得到那个 div 的文本内容时,我得到了一整行带有很多不必要数据的文本。谁能告诉我如何选择这个表达式,可能使用类名?

【问题讨论】:

    标签: html-parsing html htmlunit


    【解决方案1】:

    您需要浏览一个页面并与之交互,如下所示:

    final WebClient web = new HtmlUnit();
    final HtmlPage page = web.getPage("http://www.whateveryouwant.com.br");
    

    通过标记名获取元素,并对其进行迭代:

    final List<DomElement> spans = page.getElementTagName("span");
    for (DomElement element : spans) {
        if (element.getAttribute("class").equals("tim tim-dep")) {
            return element.getNodeValue();
        }
    }
    

    或者只使用 XPath:

    // Not sure what getFirstByXPath return
    DomElement element = page.getFirstByXPath("//span[@class='tim tim-dep']");
    final String text = element.getNodeValue();
    

    【讨论】:

    • // 由于元素的节点值为空,您可能希望通过以下方式获取子节点(文本节点)的节点值。 element.getChildNodes().get(0).getNodeValue();或 element.getTextContent();
    【解决方案2】:

    给你..

    DomElement element = page.getFirstByXPath("//span[@class='tim tim-dep']");
    String text = element.getTextContent();
    

    【讨论】:

    • @brnfd 回答一年后,您只发布了其中的一部分。
    猜你喜欢
    • 2019-03-09
    • 1970-01-01
    • 2019-11-01
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    • 2019-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多