pyquery
是模仿 jQuery 去做的,是一个强大的网页解析库。
在爬虫的过程中,主要负责数据解析,将html数据转化为
一、基本用法
import requests
from pyquery import PyQuery as pq
if __name__ == '__main__':
rsp=requests.get('http://127.0.0.1/crawler/spider.html')
rsp.encoding='utf-8'
doc=pq(rsp.text)
doc.encoding='utf-8'
print(doc('body h2')) #选择body 中的内层元素
二、CSS选择器
如果想要输出 class 要有 . 例如:print(doc('.class值'))
如果想要输出 id,要有 # 例如:print(doc('#id值'))
三、查找元素
find方法,也区分 class 和 id,支持 CSS选择
doc=pq(rsp.text)
print(doc.find('.Buffedon'))
四、获取父子节点,兄弟标签
父节点 doc('p').parents()
子节点 doc('p').parent
兄弟节点 doc('p').siblings() doc('p').siblings('.class1')
遍历子节点
doc=pq(rsp.text)
body0=doc('head').items() #生成一个迭代器
print(type(body0))
print('-'*60)
for i in body0:
print(type(i))
print(i)
五、获取信息
1、获取属性
rint(doc('body p'))
print(doc('body p').attr.name)
print(doc('body img').attr.src)
2、获取文本
print(doc('head title'))
print(doc('head title').text())
3、获取HTML
可以获取指定标签内的所有内容,包括html代码
print(doc('head'))
print(doc('head').html()) #获取 head标签的内容
4、attr 和 css
li=doc('.class0')
print(li)
li.attr('name','link') #添加一个 name=link 的属性
li.css('font-size','4px') #添加一个 font-size=4px 的属性
5、remove
某些时候,一个body标签中不仅有HTML代码,还有文本。如果只想获取文本,那么就需要先移除其他标签
doc('body').find('p').remove() #移除body 中的 p标签
参考
视频:https://www.bilibili.com/video/BV1a7411f76Z?p=12
pyquery 完整API:https://pythonhosted.org/pyquery/api.html
|