Day33.爬虫基础之PyQuery

PyQuery详解 为什么选择PyQuery? Python爬虫解析库,主流的有 PyQuery Beautifulsoup Scrapy Selectors 正则表达式。 PyQuery和scrapy Selectors都是基于lxml模块,而lxml和正则表达式都是C语言写的,只有Beautifulsoup是用纯Python编写的,所以在实测中,Beautifulsoup 的解析速度比其他几种慢了5倍以上!... 阅读详情

爬虫基础之PyQuery



前言

本文主要展示了PyQuery的基本使用和常见操作。


一. PyQuery 基本操作

1.1 初始化

1.1.1 字符串初始化

from pyquery import PyQuery as pq

html = '''
<div>
    <ul>
         <li class="item-0">first item</li>
         <li class="item-1"><a href="link2.html">second item</a></li>
         <li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li>
         <li class="item-1 active"><a href="link4.html">fourth item</a></li>
         <li class="item-0"><a href="link5.html">fifth item</a></li>
     </ul>
 </div>
'''

doc = pq(html)
print(doc('li'))  # 类似于 CSS 选择器

1.1.2 URL 初始化

doc = pq(url="http://www.baidu.com")
print(doc('head'))

1.1.3 文件初始化

doc = pq(filename='demo.html')
print(doc('li'))

1.2 基本 CSS 选择器

html = '''
<div id="container">
    <ul class="list">
         <li class="item-0">first item</li>
         <li class="item-1"><a href="link2.html">second item</a></li>
         <li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li>
         <li class="item-1 active"><a href="link4.html">fourth item</a></li>
         <li class="item-0"><a href="link5.html">fifth item</a></li>
     </ul>
 </div>
'''

doc = pq(html)
print(doc('#container .list li'))
# '#' 表示id , '.' 表示下级 li 列表不用 '.'

1.3 查找元素

1.3.1 子元素

items = doc('.list')
print(type(items))
print(items)
lis = items.find('li')
print(type(lis))
print(lis)

# 单纯的子节点
lis = items.children()
print(type(lis))
print(lis)

# 子节点中带有某种元素
lis = items.children('.active')
print(type(lis))
print(lis)

# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #

# 父节点
html = '''
<div class="wrap">
    <div id="container">
        <ul class="list">
             <li class="item-0">first item</li>
             <li class="item-1"><a href="link2.html">second item</a></li>
             <li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li>
             <li class="item-1 active"><a href="link4.html">fourth item</a></li>
             <li class="item-0"><a href="link5.html">fifth item</a></li>
         </ul>
     </div>
 </div>
'''
doc = pq(html)
items = doc('.list')
container = items.parent()
print(type(container))
print(container)
# 发现这里要取父节点的话,只会出现一级父节点,而且本级的结点本身也会展现出来。

# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #

parents = items.parents()  # 父节点
print(type(parents))
print(parents)
# 与上面不同的是,这里使用的是parents(),然后展现的是上面两级的父节点。

parent = items.parents('.wrap')
print(parent)

# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #
# 兄弟元素
li = doc('.list .item-0.active')  # 后面的 ‘.’与前面没有空格,表示同级别结点
print(li.siblings())

print(li.siblings('.active'))  # 直接去特定的子节点

1.4 遍历

1.4.1 单个元素

li = doc('.item-0.active')
print(li)

# +++++++++++++++++++++++++++++++++++++++++++ # 
lis = doc('li').items()
print(type(lis))
for li in lis: print(li)

二. PyQuery 高级操作

2.1 获取信息

2.1.1 获取属性

from pyquery import PyQuery as pq

html = '''
<div class="wrap">
    <div id="container">
        <ul class="list">
             <li class="item-0">first item</li>
             <li class="item-1"><a href="link2.html">second item</a></li>
             <li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li>
             <li class="item-1 active"><a href="link4.html">fourth item</a></li>
             <li class="item-0"><a href="link5.html">fifth item</a></li>
         </ul>
     </div>
 </div>
'''

doc = pq(html)
a = doc('.item-0.active a')
print(a)
print(a.attr('href'))
print(a.attr.href)

2.1.2 获取文本

print(a)
print(a.text)

2.1.3 获取 HTML

li = doc('item-0.active')
print(li)
print(li.html())

2.2 DOM操作

DOM表示分割文档中的信息的能力,包括添加、编辑,它还包含使用这些对象所必需的方法和属性。

2.2.1 addClass, removeClass

li = doc('.item-0.active')
print(li)
li.removeClass('active')
print(li)
li.addClass('active')
print(li)

2.2.2 attr, css

li = doc('.item-0.active')
print(li)
li.attr('name', 'link')
print(li)
li.css('font-size', '14px')
print(li)

2.2.3 remove

html = '''
<div class="wrap">
    Hello, World
    <p>This is a paragraph.</p>
 </div>
'''

doc = pq(html)
wrap = doc('.wrap')
print(wrap.text())
wrap.find('p').remove()
print(wrap.text())

其他DOM方法 http://pyquery.readthedocs.io/en/latest/api.html

2.3 伪类选择器

html = '''
<div class="wrap">
    <div id="container">
        <ul class="list">
             <li class="item-0">first item</li>
             <li class="item-1"><a href="link2.html">second item</a></li>
             <li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li>
             <li class="item-1 active"><a href="link4.html">fourth item</a></li>
             <li class="item-0"><a href="link5.html">fifth item</a></li>
         </ul>
     </div>
 </div>
'''

doc = pq(html)
li = doc('li:first-child')  # 第一个节点
print(li)
li = doc('li:last-child')  # 最后一个节点
print(li)
li = doc('li:nth-child(2)')  # 第二个节点
print(li)
li = doc('li:gt(2)')  # 第二个及其之后的式子(从0开始算)
print(li)
li = doc('li:nth-child(2n)')  # 第偶数个节点
print(li)
li = doc('li:contains(second)')  # contains 内的 第二个。
print(li)

更多CSS选择器可以查看 http://www.w3school.com.cn/css/index.asp
官方文档 http://pyquery.readthedocs.io/


总结

今天主要是学习了PyQuery库的基础知识和简单的使用。其实这个库跟BeautifulSoup里面的CSS选择器很相似。对该库有兴趣的小伙伴可以观看官方文档进一步学习。

溜了遛了,脑壳疼。Loading(33/100)。。

爬虫解析利器 PyQuery 的使用 爬虫解析利器 PyQuery 的使用,爬取B站视频热搜榜单数据。 阅读详情

相关推荐

星座SAR动目标检测(GMTI)

参考代码 星座SAR动目标检测 www.youwenfan.com/contentcsg/52399.html。

feifeigo123的博客 549

Python爬虫项目PyQuery全网最全介绍

PyQuery是一个Python库,它提供了一种用于解析HTML、XML和JSON文档的非常直观和方便的方式。它基于jQuery库的选择器语法,并支持类似于XPath的表达式。

程序之雅 3193

海思Hi3519AV100 sensor移植实战:IMX586驱动调试与硬件验证全流程

本文详细解析了在海思Hi3519AV100平台上移植索尼IMX586传感器的全流程实战。内容涵盖从硬件I2C通信验证、驱动代码移植与修改,到内核配置、时钟设定,以及使用示波器进行硬件信号深度验证和ISP图像调优等关键步骤,为开发者提供了一套清晰、可复现的sensor移植与调试方法。

weixin_29168393的博客 395

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万+

创意视觉项目实战:用ESP32-S3+OV5640构建智能图像流系统

本文详细介绍了如何使用ESP32-S3开发板与OV5640摄像头模块构建智能图像流系统。从硬件连接到软件配置,涵盖Arduino环境搭建、图像采集优化、WiFi视频流传输及外设集成,为开发者提供完整的实战指南,助力智能家居和机器人视觉项目开发。

tech5的博客 1292

基于 Simulink 的 PFC + LLC 级联系统联合仿真与优化实战教程

摘要:本教程详细介绍了2kW级AC-DC变换器建模方法,采用"BoostPFC+LLC谐振变换器"组合架构。重点解析了双级系统的核心控制策略:前级BoostPFC实现功率因数校正(PF>0.95),后级LLC通过变频调制(PFM)实现高效能量传输。教程包含四大关键步骤:PFC建模与控制、LLC参数计算与实现、母线电容优化设计以及系统联合调试,特别针对级联系统常见的母线电容震荡问题提供了解决方案。同时给出了仿真波形分析指南和避坑建议,包括代数环处理、仿真步长设置等实用技巧,为新能源车

MHD0815的博客 118

一起学爬虫——PyQuery常用用法总结

什么是PyQuery PyQuery是一个类似于jQuery的解析网页工具,使用lxml操作xml和html文档,它的语法和jQuery很像。和XPATH,Beautiful Soup比起来,PyQuery更加灵活,提供增加节点的class信息,移除某个节点,提取文本信息等功能。 初始化PyQuery对象 html文档的所有操作都需要PyQuery对象来完成,初始化PyQuery对象主要...

weixin_30622181的博客 2007

Simulink开发项1000例实战专栏--实例38:基于Simulink的周波变换器(Cycloconverter)

需求分析周波变换器(Cycloconverter),也称为频率变换器或直接变频器,是一种将输入的固定频率交流电直接转换为不同频率的交流电的电力电子设备。它广泛应用于工业领域,如大功率电机驱动、风力发电、船舶推进系统等场合。与传统的间接变频器(如交-直-交变频器)相比,周波变换器具有更高的效率和更简单的结构,适用于需要低频输出的应用场景。

xiaoheshang_123的博客 334

学习爬虫第二天:继续爬公司内部的通讯录

import requests from bs4 import BeautifulSoup import re #首先通过chrome获得headers,包括user-agent和cookie headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gec...

Cyber的博客 3987

QGIS编译(跨平台编译)之五十六:QScintilla编译、QScintilla安装(Windows、Linux、MacOS环境下编译、安装)

QGIS编译;QScintilla编译、QScintilla安装(Windows、Linux、MacOS环境下编译、安装)

LuckyHanMo的博客 1898

48、住宅抵押贷款支持证券的定价、风险评估与结构化设计

本文深入探讨了住宅抵押贷款支持证券(RMBS)的定价、风险评估与结构化设计。内容涵盖提高定价准确性的方差缩减方法,如准蒙特卡罗序列的应用;分析RMBS面临的利率风险、信用风险和模型风险,并提出相应的度量与应对策略;介绍利用动态规划优化CMO分层结构以最大化发行利润的方法。同时总结了RMBS的基本类型、定价流程及市场发展趋势,为投资者和发行人提供全面的决策支持。

quiet的专栏 154

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

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

Luck_ff的博客 2904

OV9734 DATASHEET,完整规格书

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

浅谈Python库之PyQuery

PyQuery 是一个 Python 库,它提供了一种类似于 jQuery 的方式来解析和操作 HTML 文档。如果你熟悉 jQuery,那么使用 PyQuery 将会非常直观,因为它的 API 尽可能地模仿了 jQuery。

a876106354的博客 1101

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

PyQuery详细教学(保姆级别)

注:来源于崔庆才<<python3爬虫实战开发2>>本人学习并分享,略有补充。 1.准备工作 如果你对Web编程有所了解,如果你比较喜欢CSS选择器,如果你对jquery有所了解,那么这里有一个更适合你的解析库pyquery pip3 install pyquery 2.初始化 在用pyquery库解析HTML文本的时候,需要先将其初始化为一个PyQuery对象。 初始化有很多种方法,比如直接传入字符串,传入url、文件名称,等等。 字符串初始化 这种方式很多方式直接把HTML的

wangzhuanjia的博客 7751

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

PyQuery 简介

PyQuery(基于lxml模块) Python四个爬虫解析方法之一 pip install pyquery 安装 html = """ <html lang="en"> <head> 简单好用的 <title>PyQuery</title> </head> <body>...

gly的博客 805

Python- 玩转数据-PyQuery库

Python- 玩转数据-PyQuery库 一、说明 pyquery库是jQuery的Python实现,能够以jQuery的语法来操作解析 HTML 文档,和XPATH,Beautiful Soup比起来,PyQuery更加灵活,提供增加节点的class信息,移除某个节点,提取文本信息等功能 使用lxml操作xml和html文档。 二、初始化PyQuery对象 html文档的所有操作都需要PyQuery对象来完成,初始化PyQuery对象主要有三种方式,分别是通过网址、字符串和文件名创建。 方式一:通过网址

s_unbo的博客 1292

PyQuery用法详解

人生苦短,我用Python PyQuery是强大而又灵活的网页解析库,如果你觉得正则写起来太麻烦,如果你觉得BeautifulSoup语法太难记,如果你熟悉jQuery的语法 那么,PyQuery就是你绝佳的选择。 一、初始化方式,有三种,可以传入字符串,传入url,传入文件。 字符串初始化 html = ‘’’ first item second item third item fourth item

weixin_45213878的博客 2110

Python 爬虫(五):PyQuery 框架

PyQuery是仿照JQuery实现的

weixin_66348343的博客 765

3.3 pyquery 的使用

简要概述了pyquery的安装、初始化、查找节点、获取节点属性和文本、CSS选择器等操作

学编程的菜恐龙的博客 1795

2.9.2.3Python-解析库_PyQuery

总目录:https://www.jianshu.com/p/e406a9bc93a9 Python-爬虫 - 子目录:https://www.jianshu.com/p/23cf57674bf1 文档:https://pythonhosted.org/pyquery/ 如果感觉正则书写太过麻烦,beatifulsoup...

寒暄的博客 386

Python3爬虫之PyQuery库的使用

1.PyQuery库的介绍 PyQuery库是一个强大又灵活的网页解析库。如不不熟悉正则,BeautifulSoup中的语法不熟,但是熟悉jQuery的语法,那么使用PyQuery是最佳的选择。 2.PyQuery的安装 使用下面命令的前提是已经安装了anaconda,并且环境变量配置正确。 cmd命令:pip install pyquery 3.用法详解 html = ''' <div&g...

qq_33168924的博客 633

爬虫入门到精通_基础篇5(PyQuery库_PyQuery说明,初始化,基本CSS选择器,查找元素,遍历,获取信息,DOM操作)

PyQuery说明,初始化,基本CSS选择器,查找元素,遍历,获取信息,DOM操作

weixin_41865866的博客 669

python爬虫之pyquary详解

本文介绍了PyQuery库的安装、基本用法以及两个实践应用。PyQuery库能够很好地与Python爬虫进行整合,提高我们的工作效率。如果您对Python爬虫和PyQuery库感兴趣,可以尝试自己动手实现更多的实例,进一步了解和掌握相关技术。

naer_chongya的博客 1946

关于DOM4J对xml的解析步骤

DOM4J解析XML 掌握 步骤: 1. //引入jar文件 dom4j.jar 2. //创建一个指向XML文件的输入流 3. FileInputStream fis = new FileInputStream("xml文件的地址"); 4. //创建一个XML读取工具对象 5. SAXReader sr = new SAXReader(); 6. //使用读取工具对象, 读取XML文档的输入流 , 并得到文档对象 7. Document doc = sr.read(fis); 8. //通

weixin_44835937的博客 523

Python爬虫第13节-解析库pyquery 的使用

上两节我们讲了Beautiful Soup这个网页解析库,它确实很厉害。不过,大家用它的一些方法时,会不会感觉不太顺手?还有它的CSS选择器,用起来是不是觉得功能没那么强呢?要是你接触过Web开发,平时习惯用CSS选择器,或者对jQuery有一定了解,那我得给你介绍一个更称手的解析库,它就是pyquery。下面,咱们就一起来见识下pyquery有多厉害。

攻城狮7号的博客 2246
上一篇: Day32.爬虫基础之BeautifulSoup
下一篇: Day34.爬虫基础之Selenium
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值