官方学习文档:http://pyquery.readthedocs.io/en/latest/api.html

一、什么是PyQuery?

答:强大有灵活的网页解析库,模仿jQuery实现。如果你觉得正则表达式写起来太麻烦,如果你觉的BeautifulSoup语法太难记,如果你熟悉jQuery的语法,那么PyQuery就是你的绝佳选择。

二、安装

pip3 install pyquery

三、初始化

1、字符串初始化

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="blod">thrid 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>
'''
from pyquery import PyQuery as pq
doc = pq(html)
print(doc('li'))

  

2、URL初始化

from pyquery import PyQuery as pq
doc = pq(url="http://www.baidu.com")
print(doc('head'))

  

3、文本初始化

from pyquery import PyQuery as pq
doc = pq(filename = 'demo.html')
print(doc('li'))

  

四、基本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="blod">thrid 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>
'''
from pyquery import PyQuery as pq
doc = pq(html)
print(doc('#container .list li'))

  

1、查找元素

  子元素

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="blod">thrid 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>
'''
from pyquery import PyQuery as pq
doc = pq(html)
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(lis)

  

  父元素

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="blod">thrid 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>
'''
from pyquery import PyQuery as pq
doc = pq(html)
items = doc('.list')
container = items.parent()
print(type(container))
print(container)

  

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="blod">thrid 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>
'''
from pyquery import PyQuery as pq
doc = pq(html)
items = doc('.list')
container = items.parents()
print(type(container))
print(container)

  

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

  

  兄弟元素

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="blod">thrid 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>
'''
from pyquery import PyQuery as pq
doc = pq(html)
li = doc('.list .item-0.active')
print(li.siblings())

  

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="blod">thrid 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>
'''
from pyquery import PyQuery as pq
doc = pq(html)
li = doc('.list .item-0.active')
print(li.siblings('.active'))

  

五、遍历

1、单个元素

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="blod">thrid 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>
'''
from pyquery import PyQuery as pq
doc = pq(html)
li = doc('.item-0.active')
print(li)

  

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="blod">thrid 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>
'''
from pyquery import PyQuery as pq
doc = pq(html)
lis = doc('li').items()
print(type(lis))
for li in lis:print(li)

  

2、获取信息

  获取属性

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="blod">thrid 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>
'''
from pyquery import PyQuery as pq
doc = pq(html)
a = doc('.item-0.active a')
print(a)
print(a.attr('href'))
print(a.attr.href)

  

  获取文本

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="blod">thrid 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>
'''
from pyquery import PyQuery as pq
doc = pq(html)
a = doc('.item-0.active a')
print(a)
print(a.attr('href'))
print(a.text())

  

获取HTML

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="blod">thrid 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>
'''
from pyquery import PyQuery as pq
doc = pq(html)
li = doc('.item-0.active')
print(li)
print(li.html())

  

六、DOM操作

1、addClass\removeClass

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="blod">thrid 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>
'''
from pyquery import PyQuery as pq
doc = pq(html)
li = doc('.item-0.active')
print(li)
li.removeClass('active')
print(li)
li.addClass('active')
print(li)

  

2、attr、css

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="blod">thrid 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>
'''
from pyquery import PyQuery as pq
doc = pq(html)
li = doc('.item-0.active')
print(li)
li.attr('name','link')
print(li)
li.css('font-size','14px')
print(li)

  

 3、remove

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="blod">thrid 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>
'''
from pyquery import PyQuery as pq
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

七、伪类选择器

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="blod">thrid 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>
'''
from pyquery import PyQuery as pq
doc = pq(html)
li = doc("li:first-child")
print(li)
li = doc("li:last-child")
print(li)
# 标签从0开始
li = doc("li:nth-child(2)") # ntj-child(2)获取第2个标签
print(li)
li = doc("li:gt(2)") # gt-child(2)获取比2大的标签
print(li)
li = doc("li:nth-child(2n)") # nth-child(2n)获取偶数的标签
print(li)
li = doc("li:contains(second)") # contains(second)获取包含second文本的标签
print(li)

  

更多CSS选择器可以查看 http://www.w3school.com.cn/css/index.html

官方文档网站:http://pyquery.readthedocs.io

jQuery官方文档:http://jquery.cuishifeng.cn/

转载于:https://www.cnblogs.com/cthon/p/9410588.html

python爬虫知识点总结(七)PyQuery详解相关推荐

  1. Python爬虫之selenium库使用详解

    Python爬虫之selenium库使用详解 本章内容如下: 什么是Selenium selenium基本使用 声明浏览器对象 访问页面 查找元素 多个元素查找 元素交互操作 交互动作 执行JavaS ...

  2. python爬虫图片实例-【图文详解】python爬虫实战——5分钟做个图片自动下载器...

    我想要(下)的,我现在就要 python爬虫实战--图片自动下载器 之前介绍了那么多基本知识[Python爬虫]入门知识(没看的赶紧去看)大家也估计手痒了.想要实际做个小东西来看看,毕竟: talk ...

  3. python代码案例详解-新手必学Python爬虫之Scrapy框架案例详解

    Scrapy简介 Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内 ...

  4. python爬虫-urllib2的使用方法详解(python3)

    文章目录 python编程快速上手(持续更新中-) python爬虫从入门到精通 urllib2概述 python2与python3对比 urlopen Request User-Agent 添加更多 ...

  5. python爬虫requests的库使用详解

            Requests是python实现的简单易用的HTTP库,使用起来比urllib简洁很多,Requests库是用pythony语言开发,基urllib,采用Apache2 Licens ...

  6. 万字博文教你python爬虫Beautiful Soup库【详解篇】

  7. python爬虫多线程是什么意思_python爬虫中多线程的使用详解

    queue介绍 queue是python的标准库,俗称队列.可以直接import引用,在python2.x中,模块名为Queue.python3直接queue即可 在python中,多个线程之间的数据 ...

  8. 爬虫解析利器PyQuery详解及使用实践

    作者:叶庭云 整理:Lemon 爬虫解析利器 PyQuery详解及使用实践 之前跟大家分享了 selenium.Scrapy.Pyppeteer 等工具的使用. 今天来分享另一个好用的爬虫解析工具 P ...

  9. Python爬虫教程-Python爬取股票数据过程详解

    这篇文章主要介绍了基于Python爬取股票数据过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 基本环境配置 python 3.6 pycha ...

  10. python镜像下载包_python包详解

    干货大礼包!21天带你轻松学Python(文末领取更多福利) 点击查看课程视频地址 本课程来自于千锋教育在阿里云开发者社区学习中心上线课程<Python入门2020最新大课>,主讲人姜伟. ...

最新文章

  1. Apache ZooKeeper - 使用原生的API操作ZK
  2. python读取ini文件utf-16 le_Python文件编码不可以使用UTF16
  3. python中dataframe导出文件_使用Python将Pandas DataFrame导出为PDF文件
  4. 使用list和tuple
  5. C# LINQ系列:LINQ to DataSet的DataTable操作 及 DataTable与Linq相互转换
  6. 【渝粤教育】电大中专职业应用写作作业 题库
  7. stream 过滤俩个字段_Java8 Stream:2万字20个实例,玩转集合的筛选、归约、分组、聚合...
  8. linux开热点软件,在Ubuntu系统的电脑上开启无线热点全攻略,
  9. 数据科学入门与实战:玩转pandas之四
  10. bzoj 1642: [Usaco2007 Nov]Milking Time 挤奶时间(DP)
  11. Linux实用小工具
  12. Android项目开发填坑记-so文件引发的攻坚战
  13. 百度网盘解压显示服务器错误,百度网盘、Winrar等解压文件解压出错怎么办?
  14. msdia140.dll 已加载,但对DllRegisterServer 的调用失败, 错误代码: 0x80070005
  15. postman支持https、安卓抓包
  16. CRC32、murmur32、SDBM32碰撞实验数据对比
  17. 解读场景化视频制作工具的实现过程
  18. 微信公众号教程(7)新浪云计算平台注册和使用
  19. 摄像机传输到计算机,如何将摄像机文件导入计算机 - Windows 10
  20. 网址怎么输入打开?网站和网址有什么区别?

热门文章

  1. 性能测试:基础(1)
  2. 视图可以修改表数据吗_Excel-数据透视表、数据透视图
  3. php自动打印小票_php操作 cookie
  4. Teamcenter 入门开发系列问答(3)
  5. viper4android2.3.1.1,【资源】ViPER4Android FX 音效驱动 v2.3.0.1
  6. JAVA泛型只能用引用类型_Java泛型和设计模式:不参数化对泛型类型的引用总是一件坏事吗?...
  7. python中英文切换_vue根据按钮进行中英文切换
  8. mysql备份至cos_宝塔面板网站文件/数据库定时同步备份至腾讯云COS设置
  9. 表格是html文档的基本属性吗,Html
  10. D1. Kirk and a Binary String (easy version)