通过这篇文章为大家介绍崔庆才老师对Python爬虫PyQuery库的讲解,包括基本原理及其理论知识点

本文代码较多,建议阅读时间10分钟,并且注重理论与实践相结合

觉得文章比较枯燥和用电脑观看的可以点击阅读原文即可跳转到CSDN网页

目录:

一、什么是PyQuery库?

二、安装

三、PyQuery库用法详解

一、什么是PyQuery库?

强大而灵活的网页解析库。如果你觉得正则写起来太麻烦,如果你觉得BeautifulSoup语法太难记,如果你熟悉jQuery的语法,那么PyQuery就是你的绝佳选择!!!

二、安装

pip install pyquery

三、PyQuery用法讲解初始化(3种)

#字符串初始化

html = '''

  • first item
  • second item<>/li
  • third item
  • fourth item
  • fifth item

'''

from pyquery import PyQuery as pq

doc = pq(html)

print(doc('li'))#选择器实际上就是CSS选择器,即:选id就加“#”,选class前面加“.”

#URL初始化

doc1 = pq(url = "http://www.baidu.com")

print(doc1("head"))

#文件初始化

doc2 = pq(filename = "demo.html")#自己下载一个HTML文件

print(doc2('li'))

基本CSS选择器

#CSS选择器

html = '''

  • first item
  • second item<>/li
  • third item
  • fourth item
  • fifth item

'''

doc3 = pq(html)

print(doc3("#container .list li"))#注意空格,空格代表嵌套关系

查找元素

子元素

#子元素(find)

html = '''

  • first item
  • second item<>/li
  • third item
  • fourth item
  • fifth item

'''

from pyquery import PyQuery as pq

doc = pq(html)

items = doc(".list")#首先选中url标签

print(type(items))

print(items)

lis = items.find('li')#实际上也是一个CSS选择器,将里面所有的li标签都打印出来;只要在它里面的标签都可以找到

print(type(lis))

print(lis)

#查找直接子元素

lis2 = items.children()

print(type(lis2))

print(lis2)

lis3 = items.children('.active')

print(lis3)

父元素

#父元素

html = '''

  • first item
  • second item
  • third item
  • fourth item
  • fifth item

'''

from pyquery import PyQuery as pq

doc = pq(html)

items = doc(".list")#首先选中url标签

#每个标签外面肯定只能套一个父元素

container = items.parent()

print(type(container))

print(container)

#父元素2

html = '''

  • first item
  • second item<>/li
  • third item
  • fourth item
  • fifth item

'''

from pyquery import PyQuery as pq

doc = pq(html)

items = doc(".list")#首先选中url标签

#将所有祖先节点返回

parents = items.parents()

print(parents)

print(type(parents))#打印出两个div

#在其中进行搜索

doc = pq(html)

items = doc(".list")

parents1 = items.parents(".wrap")

print(parents1)#通过筛选,只剩下一个div

兄弟元素

#兄弟元素

html = '''

  • first item
  • second item<>/li
  • third item
  • fourth item
  • fifth item

'''

from pyquery import PyQuery as pq

doc = pq(html)

li = doc('.list .item-0.active')#首先选class=“.list”,空格即使选择list里面的标签,再选class=“item-0”,并列active(实际就是一个整体)

print(li.siblings())#获取所有的兄弟元素

#在向其中筛选

print(li.siblings('.active'))

遍历

#单个元素

html = '''

  • first item
  • second item
  • third item
  • fourth item
  • fifth item

'''

from pyquery import PyQuery as pq

doc = pq(html)

li = doc(".item-0.active")

print(li)

lis = doc('li').items()#多个元素,进行遍历,生成一个产生器

print(type(lis))

for li in lis:

print(li)

获取信息

#获取属性

html = '''

  • first item
  • second item
  • third item
  • fourth item
  • fifth item

'''

from pyquery import PyQuery as pq

doc = pq(html)

a = doc(".item-0.active a")#选择class同时为item-0和active,在选择class里面的啊标签,中间注意空格

print(a)

print(a.attr("href"))

print(a.attr.href)#结果同上

#获取文本

print(a.text())#将上面的选中的class中包围的文字

#获取HTML

a1 = doc(".item-0.active")

print(a1.html())

DOM操作

#addClass,removeClass

html = '''

  • first item
  • second item
  • third item
  • fourth item
  • fifth item

'''

from pyquery import PyQuery as pq

doc = pq(html)

li = doc(".item-0.active")

print(li)

li.removeClass("active")#移除active

print(li)

li.addClass("active")#增加active

print(li)

#attr、css

doc = pq(html)

li = doc(".item-0.active")

li.attr("name","link")#若存在,就会覆盖

print(li)

li.css("font-size","14px")#增加style属性

print(li)

#remove

html1 = '''

Hello,World

This is a paragraph.

'''

from pyquery import PyQuery as pq

doc = pq(html1)

wrap = doc(".wrap")

print(wrap.text())

wrap.find('p').remove()

print(wrap.text())

其他DOM方法:pyquery: a jquery-like library for python​pythonhosted.org

#伪类选择器

html = '''

  • first item
  • second item
  • third item
  • fourth item
  • fifth item

'''

from pyquery import PyQuery as pq

doc = pq(html)

li = doc("li:first-child")#第一个

print(li)

li1 = doc('li:last-child')#最后一个

print(li1)

li2 = doc('li:nth-child(2)')#指定缩写顺序,第二个

print(li2)

li3 = doc("li:gt(2)")#大于2的

print(li3)

li4 = doc("li:nth-child(2n)")#偶数

print(li4)

li5 = doc("li:contains(second)")#内容包含second

print(li5)

更多CSS选择器可以查看:CSS 教程​www.w3school.com.cn

python解析库详解_PyQuery库详解相关推荐

  1. Python 解析构建数据大杂烩 -- csv、xml、json、excel

    Python 可以通过各种库去解析我们常见的数据.其中 csv 文件以纯文本形式存储表格数据,以某字符作为分隔值,通常为逗号:xml 可拓展标记语言,很像超文本标记语言 Html ,但主要对文档和数据 ...

  2. python read_excel header_详解pandas库pd.read_excel操作读取excel文件参数整理与实例

    除了使用xlrd库或者xlwt库进行对excel表格的操作读与写,而且pandas库同样支持excel的操作:且pandas操作更加简介方便. 首先是pd.read_excel的参数:函数为: pd. ...

  3. time库是python中处理时间的标准库_python语言time库和datetime库基本使用详解

    今天是边复习边创作博客的第三天,我今年大二,我们专业开的有这门课程,因为喜欢所以更加认真学习,本以为没人看呢,看了后台浏览量让我更加认真创作,这篇博客花了2个半小时的时间,结合自己所学,所思,所想写作 ...

  4. python的threading库_python标准库介绍——31 threading 模块详解

    threading 模块 (可选) ``threading`` 模块为线程提供了一个高级接口, 如 [Example 3-1 #eg-3-1] 所示. 它源自 Java 的线程实现. 和低级的 ``t ...

  5. python标准库对象导入语句_Python标准库之Sys模块使用详解

    sys 模块提供了许多函数和变量来处理 Python 运行时环境的不同部分. 处理命令行参数 在解释器启动后, argv 列表包含了传递给脚本的所有参数, 列表的第一个元素为脚本自身的名称. 使用sy ...

  6. python可以处理多大的数据_科多大数据之Python基础教程之Excel处理库openpyxl详解...

    原标题:科多大数据之Python基础教程之Excel处理库openpyxl详解 科多大数据小课堂来啦~Python基础教程之Excel处理库openpyxl详解 openpyxl是一个第三方库,可以处 ...

  7. Python标准库datetime之date模块详解

    Python标准库datetime之date模块详解 datetime是Python提供的操作日期和时间的标准库,主要有datetime.date模块.datetime.time模块及datetime ...

  8. python的excell库_扣丁学堂Python基础教程之Excel处理库openpyxl详解

    扣丁学堂Python基础教程之Excel处理库openpyxl详解 2018-05-04 09:49:49 3197浏览 openpyxl是一个第三方库,可以处理xlsx格式的Excel文件.pipi ...

  9. python标准库random中函数的作用_Python随机函数库random的使用方法详解

    Python随机函数库random的使用方法详解 前言 众所周知,python拥有丰富的内置库,还支持众多的第三方库,被称为胶水语言,随机函数库random,就是python自带的标准库,他的用法极为 ...

最新文章

  1. gmp会屏蔽掉base里的几个函数
  2. python 视图对象_python web框架篇:views视图函数
  3. 用不好PPT模板的本质原因是什么,怎么办
  4. DbEntry on Mono 测试
  5. Java的scjp,Java(一些基础) for SCJP
  6. top命令的使用查看进程占用
  7. 一个人的简历(林肯)
  8. CCF201412-5 货物调度【费用流】(100分解题链接)
  9. 语言学博士、Kaggle数据分析师,她说:读研不是必选项,这4项技能学校不教
  10. Android HandlerThread和IntentService
  11. 9-4-插值查找-查找-第9章-《数据结构》课本源码-严蔚敏吴伟民版
  12. OpenCV阈值分割
  13. 分布式主动感知在智能运维中的实践
  14. 判断一个数n能否同时被3和5整除。
  15. 火狐Android 附加组件,Android版Firefox 85允许AMO安装附加组件
  16. 伦敦国王学院计算机申请要求,伦敦大学国王学院教育中计算机应用文学硕士研究生申请要求及申请材料要求清单...
  17. 大二的第一次社会毒打
  18. Introduction to Graph Neural Network(图神经网络概论)翻译:Chapter2:Basic of Math and Graph
  19. 换脸上阵的路由界新面孔,联想云路由动手玩
  20. 漫反射:兰伯特和半兰伯特

热门文章

  1. CentOS 7 Linux实时内核下的epoll性能分析
  2. DPDK内存篇(一): 基本概念
  3. 【网站推荐】Solaris 平台编写设备驱动程序
  4. C 标准库 limits.h
  5. android 自定义控件linearlayout,自定义控件(瀑布流,LinearLayout)
  6. Python程序异常处理:try、except、else、finally,捕获指定异常类型、捕获多个异常类型、捕获所有异常类型、捕获异常信息、异常的传递、raise抛出自定义异常
  7. python一张图学懂_【python系统学习07】一张图看懂字典并学会操作
  8. android的Handler、Message机制*
  9. 有关asp.net技术的外文文献_医学科技论文写作中参考文献的标准格式及常见问题...
  10. 域控计算机策略转换成用户策略,windows组策略实验-本地组策略和域控组策略