【问题标题】:Get content of list of span elements with HTMLUnit and XPath使用 HTMLUnit 和 XPath 获取 span 元素列表的内容
【发布时间】:2013-06-13 15:29:47
【问题描述】:

我想从 HTML 文档中获取值列表。我正在使用 HTMLUnit。

类主题有很多span元素。我想提取跨度标签内的内容:

<span class="topic">
  <a href="http://website.com/page/2342" class="id-24223 topic-link J_onClick topic-info-hover">Lean Startup</a>
 </span>

我的代码如下所示:

    List<?> topics = (List)page.getByXPath("//span[@class='topic']/text()");

但是,每当我尝试遍历列表时,我都会得到一个NoSuchElementException。任何人都可以看到一个明显的错误吗?还可以提供优秀教程的链接。

【问题讨论】:

  • 您可以添加错误附带的行吗?从 xpath 中删除 text() 并使用 HtmlElement.getTextContent() 是一种更好、更安全的解决方案。

标签: java xpath htmlunit


【解决方案1】:

如果您知道您将始终拥有 &lt;a&gt;,那么只需将其添加到 XPath,然后从 a 获取 text()

如果你真的不知道你是否总是在那里有一个a,那么我建议使用所有HtmlElement 及其后代都有的.asText() 方法。

所以首先获取每个跨度:

List<?> topics = (List)page.getByXPath("//span[@class='topic']");

然后,在循环中,获取每个跨度内的文本:

topic.asText();

【讨论】:

    【解决方案2】:

    text() 只会从该元素中提取文本,而您给出的示例没有文本组件,只有一个子元素。

    试试这个:

    List<?> topics = (List)page.getByXPath("//span[@class='topic']");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-03
      • 1970-01-01
      • 2015-11-06
      • 2013-01-15
      • 1970-01-01
      • 2020-07-20
      • 1970-01-01
      相关资源
      最近更新 更多