python - 标记值不打印 etree lxml
问题描述
我想打印代码的“可打印字符串”部分。我也尝试打印整个标签本身,但没有找到打印整个标签而不仅仅是标签名称的方法。检索 Xpath 和整个标签本身是目前最大的挑战,谢谢!
代码:
from bs4 import BeautifulSoup
from lxml import etree
doc = "<p><a></a><a></a>Printable String</p>"
soup = BeautifulSoup(doc, "lxml")
root = etree.fromstring(str(soup))
tree = etree.ElementTree(root)
for i, e in enumerate(root.iter()):
print(e.text)
输出:
None
None
None
None
None
[Finished in 0.2s]
预期输出:
None
None
Printable String
None
None
解决方案
有几点需要注意:
首先,由于某种原因,您doc
先用 lxmlsoup
解析,然后再用 lxml 解析字符串soup
。第一个问题是 BS 没有留下字符串。如果你
print(soup)
输出是
<html><body><p><a></a><a></a>Printable String</p></body></html>
您会注意到现在添加了两个新元素 (html
和),这就解释了为什么您会得到五个而不是三个。body
None
如果您doc
像这样直接使用 lxml 解析并使用 xpath:
doc = "<p><a></a><a></a>Printable String</p>"
root = etree.fromstring(doc)
for z in root.xpath('//*'):
print(z.xpath('text()'))
输出是
['Printable String']
[]
[]
推荐阅读
- javascript - Material UI Texboxes Dynamically created form Array Disply in multi columns ReactJs
- javascript - 如何使用鼠标悬停显示内容
- maven - 如何在 IntelliJ 中调试 Maven OpenJFX 应用程序
- javascript - 如何使用 CSS、HTML 和 javascript 将菜单从父菜单折叠和展开到子菜单?
- css - 背景图像的相对 URL 导致语法错误
- java - 尝试从 AWS windowsInstance 下载时 JKS 文件损坏
- python - 从 Pytorch 中的 Resnet 模型中删除 RELU 激活
- r - ifelse 在 r 中给出了设计之外的答案,表现得很奇怪
- reactjs - react-native-device-info `getUniqueId()` 是否提供 UUID 或 GUID?
- c# - 用不同的内部for循环重构两个相似的函数