【问题标题】:Converting XPath to CSS Selector将 XPath 转换为 CSS 选择器
【发布时间】:2015-09-20 05:34:59
【问题描述】:

我正在使用 Jsoup 抓取页面数据,但数据不在特定标签中。

<strong>LABEL IS HERE</strong> DATA IS HERE

使用 XPath,我可以获得路径 //*[@id="center-text"]/text()[1],但不幸的是,chrome 不允许我复制 CSS 路径。

我可以获得<strong> LABEL IS HERE</strong> 的 CSS 路径,但不能获得其他文本的 CSS 路径。有没有办法使用 CSS 选择器语言获取这些数据?


样本数据

<div id="center-text"> 
      <strong>ifno</strong> data&nbsp;&nbsp;&nbsp;
      <strong>ifno</strong> data&nbsp;&nbsp;&nbsp;
      <strong>Tifno</strong> data
      <br> 
      <strong>ifno</strong> data&nbsp;&nbsp;&nbsp;
      <strong>ifno</strong> data&nbsp;&nbsp;&nbsp;
      <strong>ifno</strong> data 
</div>

【问题讨论】:

  • 该行是从另一个标签包裹的吗?
  • @VoodooCoder 看看我的编辑,即数据来自的 div。

标签: java xpath css-selectors jsoup


【解决方案1】:

在 JSOUP 中你可以使用nextSibling 方法:

公共节点 nextSibling()

获取此节点的下一个兄弟节点。

返回: 下一个兄弟,如果这是最后一个兄弟,则返回 null

你应该通过:

Elements elements = doc.select("div[id=\"center-text\"] strong");

for(Element element : elements) {
    System.out.println("nextSibling: " + element.nextSibling());
}

结果将是:

nextSibling:  data&nbsp;&nbsp;&nbsp;
nextSibling:  data&nbsp;&nbsp;&nbsp;
nextSibling:  data
nextSibling:  data&nbsp;&nbsp;&nbsp;
nextSibling:  data&nbsp;&nbsp;&nbsp;
nextSibling:  data 

【讨论】:

  • 这个答案是正确的,但我确实必须将您的 XPath 更改为 css。应该是#center-text。但否则它会起作用。非常感谢。
  • 这背后的一般问题是您无法使用 CSS 选择器选择文本节点:stackoverflow.com/questions/5688712/…
猜你喜欢
  • 2012-09-16
  • 2019-04-20
  • 2012-05-11
  • 2012-01-17
  • 1970-01-01
  • 1970-01-01
  • 2014-04-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多