- 使用
Xpath
- 使用
pyquery
from pyquery import PyQuery as pq
doc = pq(html)
print(doc)
PyQuery对象可以接受的参数有
- html格式的字符串
- html文件
- 指定参数
url = '...'
PyQuery对象用于后续的进行选择、筛选等操作
用于解析的html格式的字符串
html
html = '''
second itemthird item
fifth item
'''
from pyquery import PyQuery as pq
doc = pq(html)
doc('#container .list li')
print(doc)
- 用pq对象初始化后,通过在单引号中输入筛选条件来完成在pq文件中的筛选
- 这种筛选用法为css选择器,选择条件间以空格分开
#name
表示id为name,.name
表示class为name,name
表示选择name节点- 此时doc对象仍为pq类型
- 选择器的并列于先后关系 以
doc('.list .item-0.active')
为例 - 先选择了
class = "list"
的节点,之后再进行一次筛选,选择了class = "item-0 active"
的节点 -
也即是说空格前后在筛选时有着先后的顺序关系,未以空格分割开的同类条件有着并列关系。
-
pq.find()
:在所有子孙节点中查找 pq.children()
:在所有子节点中查找pq.parent()
:在该结点的父结点中查找pq.parents()
:在该结点的祖先节点中查找
其中括号中传入的参数仍为CSS选择器的语法,即仍为: doc('#container .list li')
在查询结果不止一条时,需要通过遍历来完成更高的操作要求。
doc = pq(html)
lis = doc('li').items()
for aNode in lis:
print(aNode)
- 对查询结果调用了
items()
方法,这时类型会由PyQuery转变为迭代对象generator,可以使用for语句来进行操作
可以进行的操作包括
- 获取节点的属性、文本
- 删除、改变或添加节点的属性、文本
-
移除某个节点
-
pq.attr('attrName')
doc = pq(html)
a = doc('.item-0.active a')
print(a.attr('href'))
print(a.attr.href) #另一种写法
该代码段选中的节点如下: <a href="link3.html"><span class="bold">third item</span></a>
最后输出结果为: link3.html
,输出了对应的a节点中的超链接的内容。
– 特别注意:在PyQuery查询对象结果中有多个时,该方法只会输出第一个节点中的内容。若要实现多个节点的内容均输出,需要结合上一届的迭代来完成。
pq.text()
doc = pq(html)
a = doc('.item-0.active a')
print(a.text())
该代码段选中的节点如下: <a href="link3.html"><span class="bold">third item</span></a>
最后输出的结果为: third item
,输出了节点的纯文字内容。
* pq.html()
若选择该方法,则返回的为该节点的全部html语句,即输出结果为: <a href="link3.html"><span class="bold">third item</span></a>
,但此时的类型为字符串。
* 特别注意 若得到的查询结果为多个节点
– .text()方法不需要遍历就可以取得
– .html()方法需要遍历才可以取得
pq.attr('name','content)
: 若name为已经存在的属性名称,则进行修改操作;若name尚不存在,则表示添加新属性pq.text('content')
: 将该节点的纯文本内容改作content
pq.html('content')
:将该节点的html内容改为content
pq.remove()
: 需要先选中某个节点,执行后会将该节点删除。
Original: https://www.cnblogs.com/dysonxxxxx/p/16581937.html
Author: dysonkkk
Title: 解析库的使用
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/578856/
转载文章受原作者版权保护。转载请注明原作者出处!