好了,又是学习的时光啦,今天学习pyquery 来进行网页解析html
常规导入模块(PyQuery库中的pyquery类)
from pyquery import PyQuery as pqpython
一般使用url初始化
doc = pq(url='http://www.baidu.com')浏览器
文件初始化
doc = pq(filename='demo.html')工具
基本CSS选择器的使用,以起点中文网的为例子
doc = pq(url='https://www.qidian.com/free/all')学习
下面来获取小说名字信息
1.打开浏览器,进入要分析的网页
2.F12开发人员调试工具
3.进行元素检查
4.定位到爬取节点指定位置
5.分析一下 咱们本身写 CSS选择器方法url
id 使用的是# class 使用的是英文句号 空格表明 层级关系
调试
此时咱们先使用语句来获取页面中的全部<h4>
的元素
doc = pq(url='https://www.qidian.com/free/all')
a = doc('h4').items()
for i in a:
print(i)code
迭代出所筛选出来的结果
htm
但也会遇到上面的状况,共同是h4元素的,但筛选到咱们不想要的数据。图片
这时咱们能够采用往上级找,直到找到有区别的元素。
doc = pq(url='https://www.qidian.com/free/all') a = doc('.book-mid-info h4').items() for i in a: print(i)
获得了期待的数据!!!(要仍是有那前两个,说明还定位不够准确,再往上一层走)
咱们若是要获取简介内容,咱们能够下图方式代码 获取子节点(记得find方法是子孙节点)
但上图也没抓取咱们特别想要的信息呀,这时发现 咱们所指定的解析底下有不少li标签 里标签底下又有不少内容,因此此时还得继续往下解析。
首先咱们用children方法查找子节点,而后使用items方法来获得一个生成器,将数据遍历打印或者添加到列表中,方便数据存储和最终结果打印。
此时咱们来获取一下小说的图片连接试试 利用attrs方法 来返回属性字典 进一步获取value值。
怎么来抓取解析节点 理清层级关系 利用好 F12来分析就好啦!!!
总结一下:
id 使用的是# class 使用的是英文句号 空格表明 层级关系
find()方法是遍历子孙节点
chlidren()方法是获取节点的子节点(看上面实例也支持往下继续选择节点)
parent()方法是获取节点的父节点
parents()方法是获取节点的全部父节点(下面实例从全部祖先节点中挑选出符合条件的节点)
parent = items.parents('.wrap') print(parent)
siblings()方法是获取兄弟节点(下面实例从全部兄弟节点中挑选出符合条件的节点)
from pyquery import PyQuery as pq doc = pq(html) li = doc('.list .item-0.active') print(li.siblings('.active'))
items()方法是用于遍历每个节点结果
attr()方法是返回属性字典 进一步获取value值
text()方法是获取节点内部文本(Tips:当内容中先后出现\n 空格 可配合strip()来删除)
也能够百度学习下伪类选择器来获取节点数据,并且右键就能copy出表达式!!!