学习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库的更多相关文章

  1. MXNet 学习 (1) --- 最易上手的深度学习开源库 --- 安装及环境搭建

    安装环境:Win 10 专业版 64位 + Visual Studio 2015 Community. 记录下自己在有GPU的环境下安装配置MXNet的过程.该过程直接使用MXNet release ...

  2. python爬虫从入门到放弃(七)之 PyQuery库的使用

    PyQuery库也是一个非常强大又灵活的网页解析库,如果你有前端开发经验的,都应该接触过jQuery,那么PyQuery就是你非常绝佳的选择,PyQuery 是 Python 仿照 jQuery 的严 ...

  3. 爬虫常用库之pyquery 库

    pyquery库是jQuery的Python实现,可以用于解析HTML网页内容,我个人写过的一些抓取网页数据的脚本就是用它来解析html获取数据的.他的官方文档地址是:http://packages. ...

  4. 深度学习开源库tiny-dnn的使用(MNIST)

    tiny-dnn是一个基于DNN的深度学习开源库,它的License是BSD 3-Clause.之前名字是tiny-cnn是基于CNN的,tiny-dnn与tiny-cnn相关又增加了些新层.此开源库 ...

  5. Python中PyQuery库的使用总结

    介绍 pyquery库是jQuery的Python实现,可以用于解析HTML网页内容,官方文档地址是:http://packages.python.org/pyquery/ pyquery 可让你用 ...

  6. Python爬虫-- PyQuery库

    PyQuery库 PyQuery库也是一个非常强大又灵活的网页解析库,PyQuery 是 Python 仿照 jQuery 的严格实现.语法与 jQuery 几乎完全相同,所以不用再去费心去记一些奇怪 ...

  7. PYTHON 爬虫笔记六:PyQuery库基础用法

    知识点一:PyQuery库详解及其基本使用 初始化 字符串初始化 html = ''' <div> <ul> <li class="item-0"&g ...

  8. AI炼丹 - 深度学习必备库 numpy

    目录 深度学习必备库 - Numpy 1. 基础数据结构ndarray数组 1.1 为什么引入ndarray数组 1.2 如何创建ndarray数组 1.3 ndarray 数组的基本运算 1.4 n ...

  9. 资源| 学习视频库-永久有效,持续更新!附赠java面试汇总

    每天进步一丢丢,连接梦与想 我们总是羡慕他人的光芒,却忘记自己也会发光 声明 资源来自于网络,小编只是资源的搬运工,若有侵权,联系小编即删. 期待已久的学习视频库来啦! 经过小编多日整理,整理了1.5 ...

随机推荐

  1. PKI体系下的 SSL TLS HTTPS 详解

    背景: SSL(Secure Socket Layer 安全套接层)是一个加密函数库,它可以将应用层上所有明文传输的数据,通过调用SSL库,即可摇身一变成为安全通信连接,SSL最初是由网景公司(Net ...

  2. Suricata的初始化脚本

    见官网 https://suricata.readthedocs.io/en/latest/initscripts.html

  3. 【译】建立属于你的个人高效系统——效率专家 Mike Vardy 教你如何设置一个简单的个人高效系统

    原文:http://mux.baidu.com/?p=5300 百度MUX 已经有太多的高效系统供人使用,而对于那些刚刚开始,想寻求更好方法完成他们任务,项目,目标的人来说,要做一个高效系统却是相当艰 ...

  4. C# winform 创建快捷方式

    using System;using IWshRuntimeLibrary;using System.IO; namespace UavSystem.Common{    public class S ...

  5. ABP教程(四)- 开始一个简单的任务管理系统 - 实现UI端的增删改查

    接上一篇:ABP教程(三)- 开始一个简单的任务管理系统 – 后端编码 1.实现UI端的增删改查 1.1添加增删改查代码 打开SimpleTaskSystem.sln解决方案,添加一个“包含视图的MV ...

  6. ArcGIS二次开发之读取遥感图像像素值的做法

    作者:朱金灿 来源:http://blog.csdn.net/clever101 首先是读取遥感图像的R.G.B波段数据的做法.读取R.G.B波段数据的像素值主要通过IRaster接口的Read方法在 ...

  7. xutils3批量上传文件

    前几天开发安卓要用到文件批量上传,就是上传图片,视频,文件之类的用到Xutil3框架,用 RequestParams params = new RequestParams(url); params.a ...

  8. 华为S3700交换机DHCP 配置

    1.设置交换机名称 system-view [Huawei]sysname dhcp01 [dhcp01] 2.配置管理IP [dhcp01]interface Vlanif 1 [dhcp01-Vl ...

  9. Socket网络编程初探

    http://altboy.blog.51cto.com/5440160/1921720 客户端/服务器架构 即C/S架构,其实web服务在某种意义上也算是C/S架构 一个特点是服务器端持续运行对外提 ...

  10. .NET多线程总结

    1.不需要传递参数,也不需要返回参数 我们知道启动一个线程最直观的办法是使用Thread类,具体步骤如下: public void test() { ThreadStart threadStart = ...