python - 使用 XPath 解析粗体标记后的文本

标签 python xpath

我在 Python 中使用 Xpath 提取文本。 正文结构如下:

<b>Field1:</b>" Value1" <br>
<b>Field2:</b>" Value2" <br><br>
<b>Field3:</b>" Value3" <br><br>
<b>Field4:</b>" Value4" <br>
<b>Field5:</b>" Value5" <br><br>

注意换行符(br标签)的数量可以不一致

我要提取:

Field 1: Value 1
Field 2: Value 2
Field 3: Value 3
Field 4: Value 4
Field 5: Value 5

目前我的 XPath//b/text() 正在提取字段而不是值。

请帮忙。

最佳答案

你可以用BeautifulSoup来解决HTML 解析器,它是 .next_sibling :

from bs4 import BeautifulSoup

data = """
<div>
<b>Field1:</b>" Value1" <br>
<b>Field2:</b>" Value2" <br><br>
<b>Field3:</b>" Value3" <br><br>
<b>Field4:</b>" Value4" <br>
<b>Field5:</b>" Value5" <br><br>
</div>
"""
soup = BeautifulSoup(data, 'html.parser')

for b in soup.find_all("b"):
    label = b.get_text(strip=True)
    value = b.next_sibling.strip()

    print(label, value) 

或者,使用 lxml.htmlfollowing-sibling轴:

from lxml.html import fromstring

data = """
<div>
<b>Field1:</b>" Value1" <br>
<b>Field2:</b>" Value2" <br><br>
<b>Field3:</b>" Value3" <br><br>
<b>Field4:</b>" Value4" <br>
<b>Field5:</b>" Value5" <br><br>
</div>
"""

root = fromstring(data)
for b in root.xpath("//b"):
    label = b.text_content()
    value = b.xpath("following-sibling::text()")[0].strip()

    print(label, value)

关于python - 使用 XPath 解析粗体标记后的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36101772/

相关文章:

python - 加快对 pandas 系列的异常值检查

Python Itertools 排列

xpath - Xpath解析样式标签中的背景图片网址

xml - XPath 只返回包含文本的元素,而不返回其父元素

xpath - Xpath选择一级子级

python - 使用 Tkinter/ttk 垂直展开一个小部件,同时锁定另一个小部件

Python泰勒级数sin函数图

python - 在 C 扩展中返回多个输出?

java - 可见但被覆盖

javascript - 是否可以使用 xPath 从脚本中提取数据?