如何解决使用 pyquery 库或 beautifulsoup 解析 HTML 元素或不同的选择
<div1 class="tag1">
<div2 class="tag2">
<div3 class="tag3">no</div3>
yes
</div2>
</div1>
我想解析 div1,如果有文本,我会得到它的文本
我想保留{name_class: tag1 (or None),text: None}
,
我重申:{name_class: tag2,text: yes},{name_class: tag3,text: no}
我解决这个问题的代码:
from pyquery import PyQuery as pq
a = '<div><div>no</div>yes</div>'
tryy = pq(a)[0]
tmp = [{"text" : tryy.text,"class" : pq(tryy).attr('class')}]
tmp + parse_rec(a)
type(tryy) = lxml.etree._Element'
但问题是:lxml.etree._Element.text
不保留 div2 中包含的“是”
我试过了,但它不适用于 bs4 Only extracting text from this element,not its children
欢迎图书馆的所有解决方案
解决方法
根据文档,文本“是”将被视为元素 div3 的 tail。使用您的示例 XML,以下代码:
from lxml import etree
root = etree.parse("sample.xml")
for element in root.getiterator():
print(f"{element.text.strip()},{element.attrib['class']},{element.tail.strip() if element.tail else ''}")
输出:
,tag1,tag2,no,tag3,yes
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。