PyQuery 快速上手
为什么选择 PyQuery
在 Python 爬虫开发中,处理 HTML 结构是家常便饭。虽然 BeautifulSoup 和 lxml 很强大,但如果你熟悉 jQuery,PyQuery 会让你倍感亲切。它用 CSS 选择器操作 DOM,代码简洁,非常适合快速提取数据。
基础环境
安装很简单,直接 pip 搞定:
pip install pyquery
导入模块时,习惯上这样写:
from pyquery import PyQuery as pq
核心功能实战
1. 元素选择
PyQuery 的核心在于 CSS 选择器。不管是 ID、类名还是层级关系,都能轻松搞定。
html = '<div id="main"><p class="text">Hello</p></div>'
doc = pq(html)
# 获取 ID 为 main 的元素
print(doc('#main'))
# 获取所有 class 为 text 的段落
print(doc('.text'))
# 获取 div 下的第一个 p
print(doc('div > p:first'))
注意,返回的是一个 PyQuery 对象,可以继续链式调用。
2. 节点遍历
有时候我们需要往上找父级,或者往两边找兄弟节点,PyQuery 提供了直观的方法。
# 获取父元素
parent = doc('p').parent()
# 获取子元素列表
children = doc('div').children()
# 获取同级兄弟元素
siblings = doc('p').siblings()
# 获取下一个或上一个兄弟
next_p = doc('p').next()
prev_p = doc('p').prev()
这里有个细节,siblings() 会返回当前元素之外的所有兄弟,如果只想排除自身,记得过滤一下。
3. 内容与属性
提取文本或属性值是最常见的需求,方法也很统一。
# 获取文本内容(去除多余空白)
text = doc('.text').text()
# 获取特定属性
href = doc('a').attr('href')
html_content = doc().html()
doc().attr(, )

