官方文档:https://pythonhosted.org/pyquery/index.html
CSS 选择器参考手: http://www.w3school.com.cn/cssref/css_selectors.asp
pyquery可以解析网页
pyquery: a jquery-like library for python
代码示例
from pyquery import PyQuery
# 获取网页文档
doc = PyQuery(url="http://www.baidu.com", encoding="utf-8")
print(doc("title"))
# <title>百度一下,你就知道</title>
html = """
<html>
<head>
<title>测试的内容</title>
</head>
<body>
<p>第一个p标签</p>
<p id="p2">第二个p标签</p>
<p class="myp">第三个p标签</p>
<a href="http://www.baidu.com"><span>百度图标</span>百度</a>
</body>
</html>
"""
# 通过字符串实例化
doc = PyQuery(html)
print(type(doc))
# <class 'pyquery.pyquery.PyQuery'>
# 获取元素文本
print(doc("title").text())
# 测试的内容
# 查找元素
body = doc("body")
p = body.find("p")
print(p)
"""
<p>第一个p标签</p>
<p id="p2">第二个p标签</p>
<p class="myp">第三个p标签</p>
"""
# 子元素
child = body.children()
print(child)
"""
<p>第一个p标签</p>
<p id="p2">第二个p标签</p>
<p class="myp">第三个p标签</p>
<a href="http://www.baidu.com"><span>百度图标</span>百度</a>
"""
# 父元素
container = doc("#p2").parent()
print(container)
"""
<body>
<p>第一个p标签</p>
<p id="p2">第二个p标签</p>
<p class="myp">第三个p标签</p>
<a href="http://www.baidu.com"><span>百度图标</span>百度</a>
</body>
"""
# 兄弟标签
p = doc(".myp")
p3 = p.siblings()
print(p3)
"""
<p id="p2">第二个p标签</p>
<p>第一个p标签</p>
<a href="http://www.baidu.com"><span>百度图标</span>百度</a>
"""
# 遍历
ps = doc.find("p").items()
for p in ps:
print(p)
"""
<p>第一个p标签</p>
<p id="p2">第二个p标签</p>
<p class="myp">第三个p标签</p>
"""
# 获取属性
a = doc.find("a")
print(a.attr("href"))
print(a.attr.href)
"""
http://www.baidu.com
http://www.baidu.com
"""
# 获取html
print(a.html())
# <span>百度图标</span>百度
# DOM操作
# add_class remove_class
a.add_class("myclass")
print(a)
# <a href="http://www.baidu.com" class="myclass"><span>百度图标</span>百度</a>
a.remove_class("myclass")
print(a)
# <a href="http://www.baidu.com" class=""><span>百度图标</span>百度</a>
# 获取、赋值attr
a.attr("name", "link")
print(a)
# <a href="http://www.baidu.com" class="" name="link"><span>百度图标</span>百度</a>
print(a.attr("name"))
# link
# 设置css
a.css("color", "red")
print(a)
# <a href="http://www.baidu.com" class="" name="link" style="color: red"><span>百度图标</span>百度</a>
# remove
print(a.text())
# 百度图标百度
a.remove("span")
print(a.text())
# 百度
# 伪类选择器
p1 = doc("p:first-child")
print(p1)
# <p>第一个p标签</p>
p3 = doc("p:last")
print(p3)
# <p class="myp">第三个p标签</p>
p2 = doc("p:nth-child(2)")
print(p2)
# <p id="p2">第二个p标签</p>
p2 = doc("p:nth-child(2n)")
print(p2)
# <p id="p2">第二个p标签</p>
p = doc("p:contains(第三)")
print(p)
# <p class="myp">第三个p标签</p>