官方文档: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>