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>