PyQuery(基于lxml模块) Python四个爬虫解析方法之一
pip install pyquery 安装

html = """
<html lang="en"><head>简单好用的<title>PyQuery</title></head><body><ul id="container">Hello World!<li class="object-1">Python</li><li class="object-2">大法</li><li class="object-3">好</li></ul></body>
</html>
"""

相当于BeautifulSoup库的初识化方法,将html转化为BeautifulSoup对象
初识化方法,将html转化为PyQuery对象
1.1 将字符串初始化

from pyquery import PyQuery as pq
#初始化为PyQuery对象
doc = pq(html)
print(type(doc))
print(doc)

1.2 将html文件初始化

#filename参数为html文件路径
test_html = pq(filename = 'test.html')
print(type(test_html))
print(test_html)

1.3 对网址响应进行初始化

response = pq(url = 'https://www.baidu.com')
print(type(response))
print(response)

二、常用的CCS选择器
打印id为container的标签(#)

print(doc('#container'))
print(type(doc('#container')))

打印class为object-1的标签(.)

print(doc('.object-1'))

多种css选择器使用

print(doc('html #container'))

三、伪类选择器
伪类nth

#打印第二个li标签
print(doc('li:nth-child(2)'))
#打印第一个li标签
print(doc('li:first-child'))
#打印最后一个标签
print(doc('li:last-child'))

contains

#找到含有Python文本的li标签
print(doc("li:contains('Python')"))
#找到含有好文本的li标签
print(doc("li:contains('好')"))

四、查找标签
按照条件在Pyquery对象中查找符合条件的标签,类似于BeautifulSoup中的find方法

打印id=container的标签

print(doc.find('#container'))
print(doc.find('li'))
4.2 子辈标签-children方法
#id=container的标签的子辈标签
container = doc.find('#container')
print(container.children())
4.3 父辈标签-parent方法
object_2 = doc.find('.object-2')
print(object_2.parent())
4.4 兄弟标签-siblings方法
object_2 = doc.find('.object-2')
print(object_2.siblings())

**五、获取标签的信息
定位到目标标签后,我们需要标签内部的文本或者属性值,这时候需要进行提取文本或属性值操作

5.1 标签属性值的提取
.attr() 传入 标签的属性名,返回属性值**

object_2 = doc.find('.object-2')
print(object_2.attr('class'))

5.2 标签内的文本
.text()

print(doc.text())
object_1 = doc.find('.object-1')
print(object_1.text())
container = doc.find('#container')
print(container.text())

tips:如果我只想获得Hello World这个,不想得到其他的文本,可以使用remove方法将li标签去掉,然后再使用text方法

container = docs.find('#container')
container.remove('li')
print(container.text())

pyquery一些自定义的用法
访问网址

from pyquery import PyQuery
PyQuery(url = 'https://www.baidu.com')

opener参数
这是PyQuery对百度网址进行请求,并将请求返回的响应数据处理为PyQuery对象。一般pyquery库会默认调用urllib库,如果想使用selenium或者requests库,可以自定义PyQuery的opener参数。
opener参数作用是告诉pyquery用什么请求库对网址发起请求。常见的请求库如urllib、requests、selenium。这里我们自定义一个selenium的opener。

from pyquery import PyQuery
from selenium.webdriver import PhantomJS#用selenium访问url
def selenium_opener(url):#我没有将Phantomjs放到环境变量,所以每次用都要放上路径driver = PhantomJS(executable_path = 'phantomjs的路径')driver.get(url)html = driver.page_sourcedriver.quit()return html#注意,使用时opener参数是函数名,没有括号的!
PyQuery(url='https://www.baidu.com/', opener=selenium_opener)

cookies、headers
在requests用法中,一般为了访问网址更加真实,模仿成浏览器。一般我们需要传入headers,必要的时候还需要传入cookies参数。而pyquery库就有这功能,也能伪装浏览器。

from pyquery import PyQuerycookies = {'Cookie':'你的cookie'}
headers = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36'}PyQuery(url='https://www.baidu.com/',headers=headers,cookies=cookies)

让你的selenium带上pyquery功能
让driver访问的网址得到的网页直接变为PyQuery对象,更方便提取数据

from pyquery import PyQuery
from selenium.webdriver import PhantomJSclass Browser(PhantomJS):@property    def dom(self):return PyQuery(self.page_source)"""
这部分property是装饰器,需要知道@property下面紧跟的函数,实现了类的属性功能。
这里browser.dom,就是browser的dom属性。
"""browser = Browser(executable_path='phantomjs的路径')
browser.get(url='https://www.baidu.com/')
print(type(browser.dom))

PyQuery 简介相关推荐

  1. python爬虫科研数据提取_python爬虫数据提取四之pyquery

    1 pyquery 简介:同样是一个强大的网页解析工具 它提供了和jQuery类似的语法来解析HTML文档,支持CSS选择器,使用非常方便 2 pyquery基本用法 2.1 安装 pip insta ...

  2. python pyquery.get()_Python爬虫之PyQuery使用(六)

    Python爬虫之PyQuery使用 PyQuery简介 pyquery能够通过选择器精确定位 DOM 树中的目标并进行操作.pyquery相当于jQuery的python实现,可以用于解析HTML网 ...

  3. python pyquery库_python解析HTML之:PyQuery库的介绍与使用

    前言 Python关于爬虫的库挺多的,也各有所长.了解前端的也都知道, jQuery 能够通过选择器精确定位 DOM 树中的目标并进行操作,所以我想如果能用 jQuery 去爬网页那就 cool 了. ...

  4. 【Python】网络爬虫(一):pyquery一瞥

    1.pyquery简介 python中的pyquery模块语法与jquery相近,可用来解析HTML文件.官方文档地址:pyquery: a jquery-like library for pytho ...

  5. Python手记-11:PyQuery爬取豆瓣电影评论

    目录 1.PyQuery简介 2. PyQuery简单使用 PyQuery允许对xml文档进行jQuery查询,该API尽可能类似于jQuery,PyQuery使用lxml进行快速的xml和html操 ...

  6. 用pyquery5行代码爬取百度热点新闻

    导读:学习python爬虫很久了,一直习惯于requests抓取+xpath解析的两步走套路,直到我今天发现了pyquery这个爬虫利器后,才意识到python的世界没有最简,只有更简-- 01 py ...

  7. Py之pyquery:pyquery的简介、安装、使用方法之详细攻略

    Py之pyquery:pyquery的简介.安装.使用方法之详细攻略 目录 pyquery的简介 pyquery的安装 pyquery的使用方法 pyquery的简介 pyquery允许您对xml文档 ...

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

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

  9. 第11讲:Reqeusts + PyQuery + PyMongo 基本案例实战

    在前面我们已经学习了多进程.requests.正则表达式.pyquery.PyMongo 等的基本用法,但我们还没有完整地实现一个爬取案例.本课时,我们就来实现一个完整的网站爬虫案例,把前面学习的知识 ...

最新文章

  1. 五、linux总线中设备和驱动注册流程详解
  2. Oracle 多行合并一行 方法
  3. 从电子工程师到研发经理到老板的多面人生
  4. 作者:杨丽彬,华侨大学信息管理系讲师。
  5. 域名授权系统源码 网站源码授权系统_单域名授权系统
  6. 谷歌新开源的MorphNet到底能为我们做什么?
  7. oracle 12c grid db 安装的的checklist
  8. 用unity制作能量护盾(1)
  9. vue-cli4 无法访问static资源问题
  10. php访问mysql 封装
  11. jQuery对象复制
  12. 排序算法之十 希尔排序(C++版本)
  13. 随手记_C++语法中的一些注意事项
  14. 在IEEE会议论文LaTeX模板中添加页码
  15. oracle闰年,oracle 闰年判断
  16. FasterR-CNN,R-FCN,SSD,FPN,RetinaNet,YOLOv3速度和准确性比较
  17. 七周成为数据分析师 | 统计学
  18. selenium+python 的微博自动转赞评功能实现
  19. html5制作坦克大战
  20. 计算机网络如何选择路由器,路由器上网方式如何选择?

热门文章

  1. 天津理工大学研究生学位课《算法设计与分析》期末大作业
  2. 最热网友收藏:写得蛮好的linux学习笔记(2007年第10周)
  3. Paint、Canvas、Matrix使用讲解
  4. 个人计算机采用risc处理器,计算机三级PC技术临考模拟题及答案详解
  5. (阅读)MPC-BERT: A Pre-Trained Language Model for Multi-Party Conversation Understanding
  6. 迟滞比较器原理及计算
  7. 使用matplotlib绘制双坐标图
  8. EdgeX(7)使用usb ttl 链接 RX TX 调试,输出乱码问题解决,没有想到最后居然是没有焊好。可以使用cuteCom或者putty 在linux上进行界面查询日志
  9. 开关柜局部放电检测及模式识别如何实施?
  10. 【刷题篇】领扣3168.求两数加减乘除后的值(python)