Python Lxml 在 <strong></strong> 标签后查找文本

标签 python lxml

请问您能找到解决这个简单问题的方法吗?

<strong>text1</strong>: text2 

我正在尝试抓取这个 html 部分,所以我需要分别获取 text1 和 text2。怎么做? 它应该是这样的:

x = tree.xpath('//strong[text()="text1"]/text()') 

但是这段代码返回实际的“text1”,我也需要 text2..

最佳答案

需要获取strong标签元素,然后使用element.tail获取其后的文本。示例 -

In [12]: from lxml import html

In [13]: tree = html.fromstring("<strong>text1</strong>: text2 ")

In [14]: x = tree.xpath('//strong[text()="text1"]')

In [15]: for i in x:
   ....:     print(i.tail)
   ....:
: text2

这也适用于 lxml.etree ,而不仅仅是 lxml.html 。示例 -

In [16]: from lxml import etree

In [18]: tree = etree.fromstring("<elem><strong>text1</strong>: text2</elem>")

In [19]: x = tree.xpath('//strong[text()="text1"]')

In [20]: for i in x:
   ....:     print(i.tail)
   ....:
: text2

要将它们放在一起,您可以这样做 -

In [21]: x = tree.xpath('//strong[text()="text1"]')

In [23]: for i in x:
   ....:     print('text :',i.text)
   ....:     print('tail :',i.tail)
   ....:
text : text1
tail : : text2

关于Python Lxml 在 <strong></strong> 标签后查找文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32494661/

相关文章:

python - 使用 PhantomJs 下载文件

clojure - 是否有与 Python 的 lxml 等效的 Clojure 模块?

python - 如何根据XML中XPath中子节点的值获取特定的 block (组)?

python - 比较路径和请求的字符串结果

Python/Kivy - 使用手机屏幕方向更改屏幕(android)

python - 重命名列的条目,然后在 pandas 中重命名 groupby

python - 如何在pyspark数据框中将groupby转换为reducebykey?

python - Selenium /lxml : Get xpath

python - 如何使用 python 和 lxml 检索某些子元素

python - 将 partial 与条件默认参数一起使用