pyquery 的使用

pyquery 的使用

跟XPath 和 BeautifulSoup类似的,pyquery也是一个解析库。像Beautiful Soup 一样,初始化pyquery的时候,也需要传入HTML文本来初始化一个pyquery对象。除此以外,还可以直接传入URL,传入文件名等。下面来详细介绍:

from pyquery import PyQuery as pq

html = ‘‘‘
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<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"><a href="link3.html"><span class="bold">third item</span></a></li>
        <li class="item-1"><a href="link4.html">fifth item</a></li>
        <li class="item-0"><a href="link5.html">fifth item</a></li>
    </ul>
</div>
</body>
</html>
‘‘‘
doc = pq(html)
print(doc(‘li‘))

这里首先引入了PyQuery这个对象,取别名为pq,然后声明了一个HTML字符串,并将其当作参数传递给PyQuery对象,这样就完成了初始化了。接下来,将初始化的对象传入CSS选择器,就可以获取到相应的节点。除此以外,还可以传一个URL参数:

from pyquery import PyQuery as pq

doc = pq(url=‘https://www.cnblogs.com/jonas-von‘)
print(doc(‘title‘))

结果打印输出我的博客的title内容。还可以通过文件的形式初始化:

from pyquery import PyQuery as pq

doc = pq(filename=‘test.html‘)
print(doc(‘li‘))

当然,在本地需要有test.html这个文件。

1. 基本选择器

其实在上面的实例中也用到了CSS选择器,PyQuery实例对象的参数就是CSS选择器,这在里就不过多阐述了。

2. 查找节点

查找子节点,需要用到find()方法,此时传入的参数就是CSS选择器:

from pyquery import PyQuery as pq

doc = pq(filename=‘test.html‘)
lis = doc(‘li‘)
print(lis.find(‘.bold‘))

首先通过通过元素选择器选择了所有的li,然后调用find()方法,传入类选择器找到了class属性为bold的元素。从这里也可以看出,find()方法查找的范围是所有子孙节点,如果我们只想找子节点,可以用children()方法。

查找父节点,可以使用parent()方法,如果需要查找祖先节点,可以使用parents()方法。

查找兄弟节点,可以使用siblings()方法。

3. 遍历

从上面的实例可以得出结论:pyquery的选择结果可能是多个节点,也可以是一个节点,但无论是一个结果还是多个结果,类型都是PyQuery类型,并不像BeautifulSoup(一个结果直接返回,多个结果使用列表储存再返回)。对于单个节点,可以直接打印输出,也可以直接使用str()方法转化为字符串,但是对于多个节点,我们就需要遍历来获取了。

from pyquery import PyQuery as pq

doc = pq(filename=‘test.html‘)
lis = doc(‘li‘).items()
for li in lis:
    print(li,type(li))

调用items()方法后,会得到一个生成器,遍历即可得到每个li对象了,这里的类型也是PyQuery对象。

4. 获取信息

提取到某个PyQuery对象后,可以通过attr()方法来获取属性:

from pyquery import PyQuery as pq

doc = pq(filename=‘test.html‘)
print(doc(‘li span‘).attr(‘class‘))

需要注意的是,attr()方法返回的结果只有一个,无论选择器匹配的结果有多少个。所以,如果存在多个结果时,需要遍历来实现。

调用text()方法来获取标签文本:

from pyquery import PyQuery as pq

doc = pq(filename=‘test.html‘)
print(doc(‘li span‘).text())

该方法会忽略HTMl标签,只返回纯文字文本,但如果需要获取html文本,可以使用html()方法,此时返回的是标签体!!但是需要注意一个问题,text()可以返回多个结果,而html()只返回第一个匹配的标签体文本,如果需要获取多个,则同样需要遍历。

5. 节点操作

pyquery提供了一系列方法来对节点进行动态修改(类似于jQuery),比如添加或移除一个class等操作:

addClass 和 removeClass

前者用于添加class属性,后者用于删除class属性

attr、text 和 html

除了class 以外,可以通过attr()方法对属性进行操作,还可以使用text()和html()方法来改变标签内容。

remove

移除某个节点

原文地址:https://www.cnblogs.com/jonas-von/p/9186837.html

时间: 2024-10-13 04:42:17

pyquery 的使用的相关文章

Python爬虫利器六之PyQuery的用法

前言 你是否觉得 XPath 的用法多少有点晦涩难记呢? 你是否觉得 BeautifulSoup 的语法多少有些悭吝难懂呢? 你是否甚至还在苦苦研究正则表达式却因为少些了一个点而抓狂呢? 你是否已经有了一些前端基础了解选择器却与另外一些奇怪的选择器语法混淆了呢? 嗯,那么,前端大大们的福音来了,PyQuery 来了,乍听名字,你一定联想到了 jQuery,如果你对 jQuery 熟悉,那么 PyQuery 来解析文档就是不二之选!包括我在内! PyQuery 是 Python 仿照 jQuery

学习笔记之PyQuery篇

什么是PyQuery? 这是一个强大又灵活的网页解析库. 如果你觉得写正则太麻烦, 如果你觉得BeautifulSoup语法太难记, 如果你熟悉jQuery, 那么,PyQuery将会成为你的最佳实践! #一个简单的例子 from pyquery import PyQuery as pq html = '''     请在这里输入html代码     ''' doc = pq(html)      #初始化PyQuery对象 print(doc('li'))    #选择li标签 CSS选择器

Python开发包推荐系列之xml、html解析器PyQuery

使用python,喜欢她的简洁是一方面,另外就是它有着丰富的开发包 好用又方便 接下来会给大家推荐一系列很赞的开发包. 在解析html.xml过程中,我们有不少的包可以用.比如bs.lxml.xmltodict等 如果说你想立即上手,那么pyquery必然是最佳之选. 从名字上就可以看出,她一定和jQuery有着一定的关系 在官方网站上就是这样描述它的 pyquery: a jquery-like library for python 没错,作者就是将html.xml的解析接口封装成了类似jQu

pyspider示例代码三:用PyQuery解析页面数据

本系列文章主要记录和讲解pyspider的示例代码,希望能抛砖引玉.pyspider示例代码官方网站是http://demo.pyspider.org/.上面的示例代码太多,无从下手.因此本人找出一下比较经典的示例进行简单讲解,希望对新手有一些帮助. 示例说明: 本示例主要是PyQuery解析返回的response页面数据.response.doc解析页面数据是pyspider的主要用法,应该熟练掌握基本使用方法.其他返回类型示例见后续文章. pyspider爬取的内容通过回调的参数respon

安装pyquery

1.在电脑上安装cygwin(首次安装一路向下) 2.再次安装,选择full 模式,选择以下插件 2.安装完后,安装插件 python ez_setup.py  输入which python which easy_install # 显示如下:需要修改下C:\cygwin\home\dell\.bash_profile文件,增加 export PATH=/usr/local/bin:/usr/bin alias ls='/bin/ls --color'alias clear='/cygdrive

初触Python,关于pyquery解析html(百度贴吧)

一直听同事说Python是个奇妙的语言,上周在逛知乎的时候深受这个话题的启示. 能利用爬虫技术做到哪些非常酷非常有趣非常实用的事情? 先是说到IDE的选择,作为python新人,尽管知道mac终端自带Python,但在一番谷歌百度之后,还是选择了PyCharm .理由大概是 PyCharm比較像xcode吧.看上去有种亲切感. Python的第三方库和iOS开发的第三方库大体相像.可是在引入第三方库的时候,PyCharm似乎是更加的简单.注意选择相应的版本号然后下载第三方库,稍等片刻就成功了.

python - PyQuery

偶尔的机会,知道这么个扩展,手贱翻了下文档,发现似乎挺有意思,遂记录一二. what: 这是一个python版本的jquery,而且是后端执行的,至少官方是这么说的: pyquery allows you to make jquery queries on xml documents. The API is as much as possible the similar to jquery. pyquery uses lxml for fast xml and html manipulation

windows下python安装pyquery

安装pyquery之前首先要明确一点,easyinstall 是一款python包管理器,类似于node的npm,用于安装python的扩展包,它安装的包是以*.egg的方式. 要安装pq需要经历以下步骤: 1:下载easyinstall 官网 设置环境变量,将python目录加入path,在cmd中切换到py的目录 python ez_setup.py 等待下载并安装setuptools 2:设置easy_install环境变量 将C:\Python27\Scripts加入环境变量(每次设置环

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

1.pyquery简介 python中的pyquery模块语法与jquery相近,可用来解析HTML文件.官方文档地址:https://pythonhosted.org/pyquery/ .通过HTML中的标签.id.给定的索引等来获取元素,使得解析HTML文件极为方便. 2.实例 2.1 爬取豆瓣电影页面中主演 右键chrome中的审查元素,观察到主演的标签为<a href="/celebrity/1005773/" rel="v:starring">

pyquery 安装

取得网页源代码,导入pyquery库 pip3 install pyquery 如果报错的话:python安装pyquery报错error: 'libxml/xmlversion.h' file not found xcode-select --install sudo C_INCLUDE_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/