学习PyQuery库
学习PyQuery库
好了,又是学习的时光啦,今天学习pyquery 来进行网页解析
常规导入模块(PyQuery库中的pyquery类)
from pyquery import PyQuery as pq
通常使用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选择器方法
id 使用的是# class 使用的是英文句号 空格代表 层级关系
此时我们先使用语句来获取页面中的所有<h4>
的元素
doc = pq(url='https://www.qidian.com/free/all')
a = doc('h4').items()
for i in a:
print(i)
迭代出所筛选出来的结果
但也会遇到上面的情况,共同是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出表达式!!!
学习PyQuery库的更多相关文章
- MXNet 学习 (1) --- 最易上手的深度学习开源库 --- 安装及环境搭建
安装环境:Win 10 专业版 64位 + Visual Studio 2015 Community. 记录下自己在有GPU的环境下安装配置MXNet的过程.该过程直接使用MXNet release ...
- python爬虫从入门到放弃(七)之 PyQuery库的使用
PyQuery库也是一个非常强大又灵活的网页解析库,如果你有前端开发经验的,都应该接触过jQuery,那么PyQuery就是你非常绝佳的选择,PyQuery 是 Python 仿照 jQuery 的严 ...
- 爬虫常用库之pyquery 库
pyquery库是jQuery的Python实现,可以用于解析HTML网页内容,我个人写过的一些抓取网页数据的脚本就是用它来解析html获取数据的.他的官方文档地址是:http://packages. ...
- 深度学习开源库tiny-dnn的使用(MNIST)
tiny-dnn是一个基于DNN的深度学习开源库,它的License是BSD 3-Clause.之前名字是tiny-cnn是基于CNN的,tiny-dnn与tiny-cnn相关又增加了些新层.此开源库 ...
- Python中PyQuery库的使用总结
介绍 pyquery库是jQuery的Python实现,可以用于解析HTML网页内容,官方文档地址是:http://packages.python.org/pyquery/ pyquery 可让你用 ...
- Python爬虫-- PyQuery库
PyQuery库 PyQuery库也是一个非常强大又灵活的网页解析库,PyQuery 是 Python 仿照 jQuery 的严格实现.语法与 jQuery 几乎完全相同,所以不用再去费心去记一些奇怪 ...
- PYTHON 爬虫笔记六:PyQuery库基础用法
知识点一:PyQuery库详解及其基本使用 初始化 字符串初始化 html = ''' <div> <ul> <li class="item-0"&g ...
- AI炼丹 - 深度学习必备库 numpy
目录 深度学习必备库 - Numpy 1. 基础数据结构ndarray数组 1.1 为什么引入ndarray数组 1.2 如何创建ndarray数组 1.3 ndarray 数组的基本运算 1.4 n ...
- 资源| 学习视频库-永久有效,持续更新!附赠java面试汇总
每天进步一丢丢,连接梦与想 我们总是羡慕他人的光芒,却忘记自己也会发光 声明 资源来自于网络,小编只是资源的搬运工,若有侵权,联系小编即删. 期待已久的学习视频库来啦! 经过小编多日整理,整理了1.5 ...
随机推荐
- LuoguP3964 [TJOI2013]松鼠聚会【切比雪夫距离/前缀和】
题目传送门 前置知识:切比雪夫距离和曼哈顿距离的相互转化--自为风月马前卒 有了这个知识,我们便可以在读入松鼠的家的坐标时,先把他转化一下,然后把最后的总式化简,我们会得到一个充满后缀和以及前缀和的式 ...
- spring AOP excution表达式各符号意思
execution(*com.sample.service.impl..*.*(..)) 符号 含义 execution() 表达式的主题 第一个“*”符号 表示返回值的类型任意: com.sampl ...
- Oracle 单引号与双引号的区别
双引号一般是用来转义的,如果alias里面有空格或其它保留符号,必须使用双引号.而单引号是用来特制的,比如字符串的引用,日期字符串的引用,都必须包括在单引号中,可以参与运算或其它表达式中.两者不可混用 ...
- python之list操作
序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. 列表(list)是最常用的Python数据类型,它可以作为一个方 ...
- Almost Acyclic Graph Codeforces - 915D
以前做过的题都不会了.... 此题做法:优化的暴力 有一个显然的暴力:枚举每一条边试着删掉 注意到题目要求使得图无环,那么找出图上任意一个环,都应当要在其某一处断开(当然没有环是YES) 因此找出图中 ...
- 转 OGG Troubleshooting-Database error 1 (ORA-00001: unique constraint ...)
Q5: After imp data to target, when we start replc process, we find the following error: 2011-11-10 0 ...
- 自動獲取外網IP并發郵件
問題: 公司有一Web系統需開放給香港Office公司查詢資料,但最近動態域名需實名認證, 因系統較小型,非公開大範圍使用,所以再認證一域名也沒多大必要, 所以想定時生成一封能查詢外網IP的郵件發送給 ...
- redis过期事件
背景:目前在商城项目,订单有过期逻辑,小伙伴提议用redis做,经讨论分析,redis有key的过期事件,貌似可以实现,但是咨询大神,好像不建议这样用,可能会丢数据 随便写了段python代码测试 i ...
- fetch和axios区别,proxy代理配置
1.今天使用fetch调用接口时使用console.log(res.data)始终是undefined,使用anxios请求则可以成功请求到数据,非常奇怪,于是查了一圈,才搞明白是我自以为了,哎,浪费 ...
- springdata-jpa 八种查询方法
使用:maven+Spring+jpa+Junit4 查询方式:SQL,JPQL查询,Specification多条件复杂查询 返回类型:list<POJO>,list<Stinrg ...