一、PyQuery的介绍
PyQuery 是一个 Python 库,它提供了一种类似于 jQuery 的方式来解析和操作 HTML 文档。如果你熟悉 jQuery,那么使用 PyQuery 将会非常直观,因为它的 API 尽可能地模仿了 jQuery。
二、PyQuery的简单使用
PyQuery 安装
PyQuery 可以通过 Python 的包管理器 pip 进行安装。在命令行中输入以下命令即可安装 PyQuery:
pip install pyquery
确保你的系统中已经安装了 pip。如果 pip 不可用,你可能需要先安装 Python。
PyQuery 使用方法
基本使用
首先,你需要导入 PyQuery 库:
from pyquery import PyQuery as pq
然后,你可以加载一个 HTML 文档:
html = '<div><p>这是一个段落。</p></div>'
doc = pq(html)
现在,你可以使用类似于 jQuery 的选择器来查找元素:
paragraph = doc('p') # 选择所有的 p 标签
print(paragraph.text()) # 输出:这是一个段落。
选择器
PyQuery 支持多种选择器,包括:
- 标签选择器:
doc('p')
选择所有的 p 标签。 - 类选择器:
doc('.classname')
选择所有具有 classname 类的元素。 - ID 选择器:
doc('#idname')
选择 ID 为 idname 的元素。
遍历
你可以使用 PyQuery 来遍历 HTML 元素:
for p in doc('p'):print(p.text())
属性操作
PyQuery 允许你获取和设置元素的属性:
# 获取属性
href = doc('a').attr('href')# 设置属性
doc('a').attr('href', 'http://example.com')
内容操作
你可以获取或设置元素的内容:
# 获取内容
content = doc('div').html()# 设置内容
doc('div').html('新的内容')
创建和删除元素
PyQuery 也支持创建新的元素和删除元素:
# 创建新元素
new_element = pq('<div>新元素</div>')# 删除元素
doc('p').remove()
事件处理
虽然 PyQuery 主要用于服务器端的 HTML 解析,但它也支持简单的事件处理:
def handle_click(event):print('点击事件')
doc('button').click(handle_click)
三、PyQuery的详细用法
1. 获取属性
提取到 PyQuery 类型的节点后,可以调用 attr
方法来获取属性:
from pyquery import PyQuery as pq
html = '''
<div class="wrap"><div id="container"><ul class="list"><li class="item-0">first item</li><li class="item-1"><a href="link2.html">second item</a></li><li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li></ul></div>
</div>
'''
doc = pq(html)
a = doc('.item-0.active a')
print(a.attr('href')) # 输出: link3.html
2. 遍历获取所有的 a 节点的属性
from pyquery import PyQuery as pq
doc = pq(html)
lis = doc('li').items()
for li in lis:print(li, type(li))
3. 初始化 HTML 文件
初始化文件,只需要加个 filename
参数,指明文件路径即可:
# filename参数为html文件路径
test_html = pq(filename='test.html')
print(type(test_html))
print(test_html)
如果文件不是 HTML 文件,那么初始化的时候会自动加上 HTML 标签。
4. 初始化请求响应
我们可以把请求的网址内容初始化为 PyQuery 对象,只需要加个参数 url
,将网址赋值给它即可:
response = pq(url='https://www.baidu.com')
print(type(response))
print(response)
5. 使用 CSS 选择器
PyQuery 里面 CSS 选择器的用法跟 jQuery 里面是一样的:
doc = pq(html)
print(doc('#container')) # 获取 id 为 container 的标签
print(doc('.li2')) # 使用 class 选择器
6. 使用伪类选择器
pseudo_doc = pq(html)
print(pseudo_doc('li:nth-child(2)')) # 打印第二个 li 标签
print(pseudo_doc('li:first-child')) # 打印第一个 li 标签
print(pseudo_doc('li:last-child')) # 打印最后一个 li 标签
7. 查找标签
我们可以按照条件在 Pyquery 对象中查找符合条件的标签:
# 打印id为container的标签
print(doc.find('#container'))
8. 查找子标签
使用 children
方法可以查找某个标签的子标签:
container = doc.find('#container')
print(container.children())