Python爬虫(七)—类似jquery的 解析库 pyquery

python爬虫开发之PyQuery模块详细使用方法与实例全解 这篇文章主要介绍了python爬虫开发之PyQuery模块详细使用方法与实例全解,需要的朋友可以参考下 python爬虫模块PyQuery简介 PyQuery库也是一个非常强大又灵活的网页解析库,如果你有前端开发经验的,都应该接触过jQuery,那么PyQuery就是你非常绝佳的选择,PyQuery 是 Python 仿照 jQuery 的严格实现。语法与 jQuery 几乎完全相同,所以不用再去... 阅读详情

前言

以下关于pyquery 的学习,主要记录常用的知识点,深入了解的查看官方文档。

pyquery : https://pyquery.readthedocs.io/en/latest/

JQuery : http://jquery.cuishifeng.cn/

本文参照博客:https://www.cnblogs.com/zhaof/p/6935473.html

pyquery

pyquery允许您对xml文档进行jquery查询。API尽可能与jquery类似。pyquery使用lxml进行快速xml和html操作。

pip install pyquery -i https://pypi.tuna.tsinghua.edu.cn/simple/

from pyquery import PyQuery as pq

<class ‘pyquery.pyquery.PyQuery’>对象

  • 字符串初始化
    print(doc(‘li’))
    doc其实就是一个pyquery对象,我们可以通过doc可以进行元素的选择,其实这里就是一个css选择器,所以CSS选择器的规则都可以用,直接doc(标签名)就可以获取所有的该标签的内容,如果想要获取class 则doc(’.class_name’),如果是id则doc(’#id_name’)
  • URL初始化
    在pq()这里可以传入url参数也可以传入文件参数,当然这里的文件通常是一个html文件,例如:pq(filename=‘index.html’)
from pyquery import PyQuery as pq

# 字符串初始化
html = '''
<div id="container">
    <ul class="list">
         <li class="item-1">one item</li>
         <li class="item-0 active" ><a href="link3.html"><span class="bold">two item</span></a></li>
         <li class="item-1 active"><a href="link4.html">fourth item</a></li>
     </ul>
</div>
'''
doc = pq(html)
print(doc)
print(type(doc))
print(doc('li'))

# URL初始化
doc = pq(url="http://www.baidu.com",encoding='utf-8')
print(doc('head'))

CSS选择器

  • 样例
    需要注意的是:
    • 第二第三个li会保留前面的空格。
    • doc(’#container .list li’),这里的三者之间的并不是必须要挨着,只要是层级关系就可以
html = '''
<div id="container">
    <ul class="list">
         <li class="item-1">one item</li>
         <li class="item-0 active" ><a href="link3.html"><span class="bold">two item</span></a></li>
         <li class="item-1 active"><a href="link4.html">fourth item</a></li>
     </ul>
</div>
'''
doc = pq(html)
print(doc('#container .list li'))
"""
<li class="item-1">one item</li>
         <li class="item-0 active"><a href="link3.html"><span class="bold">two item</span></a></li>
         <li class="item-1 active"><a href="link4.html">fourth item</a></li>
"""

下面是常用的CSS选择器方法:

写法样例含义
**选择所有元素
.class.colorclass="color"的所有元素
#id#infoid="info"的所有元素
elementp选择所有p标签元素
element,elementdiv,p选择所有div标签和所有p标签元素
element elementdiv p选择所有div标签下的所有p标签元素
[attribute][class] [style]选择含有class属性下带有style属性的元素
[attribute=value][class=“test”] [style]选择含有class属性为test下带有style属性的元素
  • 子元素
    children,find
    如下代码:

    doc = pq(html)
    items = doc('.list')
    print(items)
    
    lis = items.find('li')
    print(lis)
    
    li = items.children()
    # 在children里也可以用CSS选择器
    li2 = items.children('.active') print(li2)
    

    可以看出通过pyquery找到结果其实还是一个pyquery对象,可以继续查找,上述中的代码中的items.find(‘li’) 则表示查找ul里的所有的li标签。
    通过children可以实现同样的效果,并且通过.children方法得到的结果也是一个pyquery对象。

  • 父元素
    parent: 父元素的内容
    parents: 最上层父节点信息即祖先节点的信息
    items = doc(’.list’)

    container = items.parent()
    parents = items.parents()

    .parents查找的时候也可以添加css选择器来进行内容的筛选

  • 兄弟元素
    siblings
    li = doc(’.list .item-0.active’)
    print(li.siblings())

    doc(’.list .item-0.active’) 中的.tem-0和.active是紧挨着的,所以表示是并的关系,这样满足条件的就剩下一个了:thired item的那个标签了
    通过.siblings就可以获取所有的兄弟标签,当然这里是不包括自己的
    在.siblings()里也是可以通过CSS选择器进行筛选

遍历

doc = pq(html)

lis = doc('li').items()
print(type(lis))
for li in lis:
    print(li)
"""
<class 'generator'>
<li class="item-1">one item</li>
         
<li class="item-0 active"><a href="link3.html"><span class="bold">two item</span></a></li>
         
<li class="item-1 active"><a href="link4.html">fourth item</a></li>
"""

通过items()可以得到一个生成器,并且我们通过for循环得到的每个元素依然是一个pyquery对象。
需要注意的是,每个li都隔着一个空行,这是由于html每个li单独一行的原因。但是lis还是只有三个而并非六个

获取信息

  • 获取属性
    pyquery对象.attr(属性名)
    pyquery对象.attr.属性名
from pyquery import PyQuery as pq

html = '''
<div id="container">
    <ul class="list">
         <li class="item-1">one item</li>
         <li class="item-0 active" ><a href="link3.html"><span class="bold">two item</span></a></li>
         <li class="item-1 active"><a href="link4.html">fourth item</a></li>
     </ul>
</div>
'''
doc = pq(html)
a = doc('.item-0.active a')
print(a)
print(a.attr('href'))
print(a.attr.href)
"""
<a href="link3.html"><span class="bold">two item</span></a>
link3.html
link3.html
"""
  • 获取文本
    .text()

  • 获取html
    .html()的方式可以获取当前标签所包含的html信息

doc = pq(html)
a = doc('.item-0.active a')
print(a)
print(a.text())
print(a.html())
"""
<a href="link3.html"><span class="bold">two item</span></a>
two item
<span class="bold">two item</span>
"""

DOM操作

内容略,需要可直接查看官方文档:https://pyquery.readthedocs.io/en/latest/manipulating.html

个人博客:Loak 正 - 关注人工智能及互联网的个人博客
文章地址:Python爬虫(七)—类似jquery的 解析库 pyquery

〖Python网络爬虫实战⑮〗- pyquery的使用 PyQuery 是 Python 仿照 jQuery 的严格实现。语法与 jQuery 几乎完全相同,所以不用再去费心去记一些奇怪的方法了。 阅读详情

相关推荐

【Python爬虫教程】基础篇-03解析库安装

摘要:python解析库 lxml安装、beautiful soup 安装、pyquery安装、tesserocr安装

仲君Johnny的博客 1780

python爬虫学习笔记-jQuery

jQuery是什么jQuery是一个快速、简洁的JavaScript框架。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理等功能。jQuery兼容各种主流浏览器,如IE 6.0+、FF 1.5+、Safari 2.0+、Opera 9.0+等jQuery的版本。

weixin_36058228的博客 1885

爬虫解析库:pyquery的详细使用

pyquery 是一个类似于 jQuery 的 Python 库,用于解析 HTML 和 XML 文档。它提供了简洁的 API,可以方便地提取和操作网页中的数据。动态内容:pyquery 只能解析静态 HTML,无法处理 JavaScript 动态加载的内容。如果需要处理动态内容,可以结合 Selenium 或 Pyppeteer 使用。通过以上方法,你可以使用 pyquery 轻松解析和提取网页中的数据。首先,确保你已经安装了 pyquery。pyquery 支持类似 jQuery 的选择器语法。

数据知道的博客 7836

python pyquery不规则数据的抓取_[Python爬虫] 之二十九:Selenium +phantomjs 利用 pyquery抓取节目信息信息...

#coding=utf-8importosimportrefrom selenium importwebdriverfrom datetime importdatetime,timedeltaimportselenium.webdriver.support.ui as uiimporttimefrom pyquery importPyQuery as pqclasscctvDriver:def _...

weixin_39749501的博客 146

万字博文教你python爬虫pyquery库【详解篇】

如果你对web比较熟悉,比较喜欢用CSS选择器,如果你对jQuery有所了解。那么,就一起来看看这个解析库——pyquery吧!

孤寒者的博客 3万+

Python爬虫:一文掌握PyQuery模块

PyQuery 是一个类似于 jQuery 的 Python 库,用于解析和操作 HTML 文档。它提供了简洁的 API,使得 HTML 文档的解析和数据提取变得非常方便。PyQuery 基于 lxml 和 cssselect,支持类似于 jQuery 的语法,适合用于爬虫开发中的网页解析和数据提取。与其他解析库的比较​:BeautifulSoup 是另一个流行的 HTML 解析库,语法简单。

数据知道的博客 8783

【Python模块学习】pyquery库解析数据

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)

buffedon的博客 795

爬虫爬到的内容_JS生成的数据基于JQuery

爬到的内容,用处不大,爬虫爬到的内容_JS生成的数据基于JQuery

python爬虫1

Hey 这是我的第一篇博客。 本次实例完整程序地址:源码地址 这是一篇完全给新手写的爬虫教程、也是我第一次写博文···也不知道怎么写… 我们所要做的是随时获取燕大图书馆内书籍的馆藏信息,并保存到本地,就本着给完全不懂的新手弄明白为目的来讲解吧 基础环境部分: 工欲其事必先利器,要想随时获得燕大图书馆的书籍信息,我们需要下面这几把斧子! Python基础运行环境: 本篇教程采用Python3...

qq_42885483的博客 1792

python爬取w3shcool的JQuery课程并且保存到本地

本文主要介绍python爬取w3shcool的JQuery的课程并且保存到本地的方法解析。具有很好的参考价值。下面跟着小编一起来看下吧

全志DRM框架下LVDS双屏异显配置实战

本文详细介绍了在全志DRM框架下配置LVDS双屏异显的实战经验。涵盖硬件连接、内核配置、设备树修改、背光控制及U-Boot适配等关键步骤,重点解析屏参转换技巧与双屏route配置,帮助开发者解决工业控制台等多屏应用中的显示适配问题,提升开发效率。

rnn9storyteller的博客 814

零基础篇-python高级-06-JQuery

jQuery

Xiaowu2048的博客 625

手把手教你用ROS2 Humble给PX4无人机写个“画圆”程序:从C++代码到Gazebo仿真全流程

本文详细介绍了如何使用ROS2 Humble和PX4飞控实现无人机圆形轨迹控制,涵盖从环境配置、Gazebo仿真到C++代码实现的完整流程。通过实战教程,读者将掌握轨迹跟踪仿真的核心技术,包括ROS2与PX4的通信接口、圆形轨迹算法设计及Gazebo仿真调试技巧。

weixin_29056781的博客 257

【Python爬虫详解】第四篇:使用解析库提取网页数据——PyQuery

PyQuery是一个强大而优雅的HTML解析库,它将jQuery的语法和思想带入Python世界。熟悉的语法:如果你熟悉jQuery,那么使用PyQuery将非常自然简洁优雅:代码简洁,表达能力强CSS选择器:支持完整的CSS3选择器语法链式调用:可以链式调用方法,使代码更简洁DOM操作:不仅可以提取数据,还能修改DOM结构PyQuery结合了BeautifulSoup的简洁性和lxml的高性能,是一个非常值得掌握的网页解析工具。

Luck_ff的博客 2905

学习海康VisionMaster之表面缺陷滤波

本文介绍了VisionMaster中表面缺陷滤波技术的应用。该技术通过数学变换抑制背景干扰、增强缺陷特征,适用于电池铝壳、垫圈/螺丝等无纹理背景的表面缺陷检测(划痕、凹坑、异物等)。操作流程包括:图像导入、轮廓定位、位置修正、参数设置(重点讲解滤波核尺寸/数量/标准差等关键参数的调整策略)。文章通过案例演示了如何通过多方向滤波响应识别表面划伤,并指出需结合blob分析进一步优化检测结果。该技术对工业质检具有实用价值,参数设置需结合缺陷特征与背景特性灵活调整。

yuhouxiyang的专栏 2831

使用sklearn学习多项式回归(三)

1,什么是线性 我们无数次提到”线性“这个名词。在支持向量机中,我们也曾经提到最初的支持向量机只能够分割线性可分的数据,然后引入了”核函数“来帮助我们分类那些非线性可分的数据。我们也曾经说起过,比如说决策树,支持向量机是”非线性“模型。所有的这些概念,让我们对”线性“这个词非常熟悉,却又非常陌生——因为我们并不知道它的真实含义。接下来我们看看线性回归模型改进的核心之一:帮助线性回归解决非线性问题。 1.1,变量之间的线性关系 ”线性“这个词用于描述不同事物时有着不同的含义。我们最常使用的线性是指“变量

理科男同学 5101

Python网络爬虫案例实战:解析网页:PyQuery 解析库

前面介绍了BeautifulSoup 的用法,它是一个非常强大的网页解析库,你是否觉得它的一些方法用起来有点不适用?有没有觉得它的CSS选择器的功能没有那么强大?下面来介绍一个更适合的解析库—PyQuery。PyQuery库是jQuery的Python实现,能够以jQuery的语法来操作解析HTML 文档,易用性和解析速度都很好,使用起来还是可以的,有些地方用起来很方便简洁。

andyyah晓波的博客 1872

SpringBoot文件上传实战:MultipartFile重复读取的3种方法(附避坑指南)

本文详细介绍了SpringBoot中处理MultipartFile重复读取的3种实用方法,包括字节数组缓存法、临时文件法和流重置法,并提供了避坑指南和性能优化技巧。特别适合需要多次读取上传文件内容的开发者,帮助解决InputStream流只能读取一次的问题。

weixin_28710999的博客 398

网络爬虫之XPath、Beautiful Soup、PyQuery的使用

网络爬虫解析库的引入 之前基于re正则,比较繁琐,出错率较高 爬取信息大多基于html结构的web页面, 网页节点较多,各种层级关系。 常见的Python解析库 XPath: 基于XML文档,包含html查找功能 官方文档 Beautiful Soup: 依赖于lxml的解析库 官方文档 PyQuery: Python仿照jQuery严格实现 官方文档 关于 XPath 的使用 XPath(XML Path Language)是一门在XML文档中查找信息的语言。 XPath 可用来在XML文

qq_37232731的博客 812

DRAM 埋入式字线(Buried Wordline)技术深度解析:从二维平面到三维凹槽

埋入式字线(bWL)及其核心的埋入式沟道阵列晶体管(BCAT)架构,无疑是 DRAM 发展史上的一次关键性革命。它在约 40nm 技术节点被行业主流采纳,成功地帮助 DRAM 产业克服了传统平面晶体管的物理缩放极限。力挽狂澜的续命技术:bWL 通过引入三维沟道结构,从根本上解决了由短沟道效应和漏电流失控引发的数据保持危机,为经典的 1T1C(单晶体管 - 单电容)DRAM 单元架构延续了超过十年的生命力。协同优化的基石技术。

m0_37606066的博客 3336

鸿蒙接入微信支付 微信H5网页在鸿蒙系统的适配方法(含支付兼容方案) 微信H5适配鸿蒙系统 | ArkWeb识别 | 鸿蒙浏览器UA | 微信支付鸿蒙适配 | 鸿蒙微信判断方式

微信H5网页鸿蒙系统适配指南 针对微信H5网页在鸿蒙系统出现的兼容问题,本文提供完整适配方案。关键点包括: 环境识别:

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1301

Python网络爬虫数据采集实战:网页解析库

​ 在了解爬虫基础、请求库和正则匹配库以及一个具体豆瓣电影爬虫实例之后,可能大家还对超长的正则表达式记忆犹新,设想如果想要匹配的条目更加多那表达式长度将会更加恐怖,这显然不是我们想要的,因此本文介绍的解析库可以帮助我们更加轻松地提取到特定信息。 目录 一、Xpath库 1.库简介 2.入门测试 3.基本方法 二、BeautifulSoup库 ...

大数据之眸 2027

45、使用 sqlread 函数将数据从数据库表导入 MATLAB

本文详细介绍了如何使用 MATLAB 中的 `sqlread` 函数从不同类型的数据库(如 Microsoft SQL Server 和 SQLite)中导入数据。文章涵盖了 `sqlread` 的基本语法、输入输出参数、使用示例以及注意事项,并通过多个实例演示了自定义导入选项、元信息检索和数据类型转换等内容。此外,还总结了导入数据库数据的通用流程及最佳实践建议,帮助用户更高效地进行数据分析和处理工作。

bash7scripter的博客 134

python pyquery安装_PyQuery的安装

pyquery是一个类似jquery的工具,不过它是在服务端进行处理的,不像jquery是在浏览器中进行处理。如果我们要进行网络爬虫,爬取有用的信息,那么它是我至今见到的不二选择。我们当然可以自己爬取网页,然后可以通过正则表达式,选取有用的信息,但这其实要求挺高的。我以前也做过爬虫工具,专门抓取招聘网站的招聘信息,但我发先我以前做的实在是复杂。而我们程序员很重要的一点是,不要重复的发明轮子,我们只...

weixin_39826809的博客 1743

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

19-爬虫解析利器pyquery详解

强大灵活的网页解析库。如果你觉得正则写起来太麻烦,或者BeautifulSoup语法太难记,如果你熟悉jQuery的语法,那么pyquery就是最佳选择。它与jQuery api相同,可以无缝迁移 1.pyquery库的了解 pyquery库是jQuery的Python实现,能够以jQuery的语法来操作解析 HTML 文档,易用性和解析速度都很好。 1.1 pyquery库的安装方法: 在cmd输入:pip install pyquery 1.2 pyquery库的引用:(注意大小写) from pyq

bigzql的博客 1万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

小白学 Python 爬虫(23):解析库 pyquery 入门

人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Linux基础入门 小白学 Python 爬虫(4):前置准备(三)Docker基础入门 小白学 Python 爬虫(5):前置准备(四)数据库基础 小白学 Python 爬虫(6):前置准备(...

极客挖掘机 1656

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: Python爬虫(六)—解析利器 BeautifulSoup
下一篇: 爬虫实战(一)—利用requests、mongo、redis代理池爬取英雄联盟opgg实时英雄数据
luoz_python
博客等级 码龄10年 57粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值