python - 使用pyquery过滤html
问题描述
我正在尝试使用 pyquery 解析 html。我面临一个不确定的问题。我的代码如下:
from pyquery import PyQuery as pq
document = pq('<p id="hello">Hello</p><p id="world">World !!</p>')
p = document('p')
print(p.filter("#hello"))
并且打印结果的期望应该如下:
<p id="hello">Hello</p>
但实际响应如下:
<p id="hello">Hello</p><p id="world">World !!</p></div></html>
如果我只想指定部分 html 而不是整个 html 内容的其余部分,我应该如何编写它。
谢谢
解决方案
您可以使用内置库ElementTree
import xml.etree.ElementTree as ET
html = '''<html><p id="hello">Hello</p><p id="world">World !!</p></html>'''
root = ET.fromstring(html)
p = root.find('.//p[@id="hello"]')
print(ET.tostring(p))
输出
b'<p id="hello">Hello</p>'
推荐阅读
- sql - 需要在SQL中获取两个日期之间的数据
- flutter - 是否有像图像中的任何默认小部件,或者如果我需要这样做,如何实现?
- spring-boot - 如果同时使用 @EnableAsync 和 @EnableWebSocketMessageBroker,则 Spring boot 2.2.6 不会引导
- .net - 使用带有 Saxon.Api(.NET 版本)的 XSD 断言的 XML 日期验证
- python-3.x - PyPDF2 写入损坏的文件
- sql - Postgres SQL 按最近日期选择两个字段,一个字段必须是唯一的
- python - 如何从 Mysql 数据库中删除列表框 Python Tkinter 中选择的项目
- c# - 如何在不使用 foreach 循环的情况下从列表中打印 X 个名称?
- node.js - 无法将变量从 app.js 传递到节点中的另一个文件
- python - 使用 bs4 和 python 删除 html 代码中的隐藏行