python - Xpath 选择 <br/> 标签后的数据

标签 python xml xpath scrapy

我有这个html:

<div class="sys_key-facts">
  <p>
   <strong>Full-time </strong>1 year<br>
   <strong>Part-time</strong> 2 years
  </p>
</div>

我想获取Part-time(After Part-time)的值,即:

2 years</p>

我的 Xpath 代码是:

//div[@class="sys_key-facts"]/p[strong[contains(text(), "Part-time")]][preceding-sibling::br]/text() 

但这返回空。请让我知道我错在哪里。 谢谢

最佳答案

问题是 p[preceding-sibling::br]表示该段落有换行兄弟,而 br实际上是p的 child - 不是 sibling

因此您可以将 XPath 更新为

//div[@class="sys_key-facts"]/p[strong[contains(text(), "Part-time")] and br]/text()[last()]

或者尝试下面的 XPath 来获取所需的输出:

//div[@class="sys_key-facts"]//strong[.="Part-time"]/following-sibling::text()

关于python - Xpath 选择 <br/> 标签后的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50328482/

相关文章:

python - Django - 无法选择自定义日志记录处理程序类

php - 使用 SimpleXMLElement 读取 `&lt;![CDATA[...]]>` 中的文本

MYSQL - 将 XML 多个重复(复制)标签作为一个字符串加载

xml - 在 XML 树中搜索特定文本并在下一个节点中提取文本

php - 在php中使用xpath抓取链接

xml - 为什么以 [*] 结尾的 Xpath 表达式在更改为 [node()] 返回元素时返回空列表

python - 如何将父类方法的内容添加到子类方法中

python - 在Python(可能是pandas)中从文件读取数组时,处理和跳过第一行(包含元数据)的优雅方法?

php - 具有 rtmp 格式的 JW 播放器的动态 XML 播放列表。

python - 为什么 print 2++3 在 python 中打印 5?