python中pyquery的使用(初始化,css选择器,查找节点,遍历)

1.初始化

与Beautiful Soup一样,需要传入HTML文本来初始化一个PyQuery对象。它的初始化方式有多种。直接传入字符串、传入URL、传入文件名,等等。

  • 字符串初始化
from pyquery import PyQuery
html = '''

'''
pq = PyQuery(html)
print(pq('span'))

在这里插入图片描述

  • URL初始化
from pyquery import PyQuery
doc = PyQuery(url='https://blog.csdn.net/weixin_43670190')
print(doc('title'))

在这里,PyQuery对象会先请求URL,然后再使用请求道的HTML来初始化对象,这相当于用王爷的源代码以字符串的形式传递给PyQuery类来初始化。
在这里插入图片描述

  • 文件初始化
from pyquery import PyQuery
doc = PyQuery(filename='demo.html')
print(doc('li'))

这需要一个本地HTML文件,它的内容就是待解析的HTML字符串。

2.基本css选择器

from pyquery import PyQuery
html = '''

'''
pq = PyQuery(html)
# 选取id为container节点下的class为list的节点下的所有li节点
print(pq('#container .list li'))
# 类型为PyQuery类型
print(type(pq('#container .list li')))

python中pyquery的使用(初始化,css选择器,查找节点,遍历)_第1张图片

3.查找结点

  • 子节点

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

from pyquery import PyQuery
html = '''

'''
doc = PyQuery(html)
# 选取class为list的节点
item = doc('.list')
# 调用find()方法获取class为list的节点下的所有li节点
lis = item.find('li')
print(lis)

在这里插入图片描述
find()方法是查找范围内的所有子孙节点,若只想要查找子节点,可以这样:

doc = PyQuery(html)
item = doc('.list')
lis = item.children()
lis1 = item.children('.active') # 筛选出子节点中class为active的节点
print(lis)

在这里插入图片描述

  • 父节点

使用parent()方法来获取某个节点的父节点。

from pyquery import PyQuery
html = '''

'''
doc = PyQuery(html)
item = doc('.list')
lis = item.parent()
print(lis)

python中pyquery的使用(初始化,css选择器,查找节点,遍历)_第2张图片
parent()方法是选择某节点的直接父节点。这里是获取了class为list节点的直接父节点。
如果想要获取祖先节点,要用parents()方法:

doc = PyQuery(html)
item = doc('.list')
lis = item.parents()
print(lis)

python中pyquery的使用(初始化,css选择器,查找节点,遍历)_第3张图片
这里是获取了class为list的节点的祖先节点。可以看见有两个结果,一个是class为warp的节点,另一个是id为container的节点。
若是只想要获取某个祖先节点的花,可以向parents()方法中传入css选择器:

doc = PyQuery(html)
item = doc('.list')
lis = item.parents('#container')
print(lis)

python中pyquery的使用(初始化,css选择器,查找节点,遍历)_第4张图片

  • 兄弟节点

使用siblings()方法可以获取某节点的所有兄弟节点。

from pyquery import PyQuery
html = '''

'''
doc = PyQuery(html)
# 选择class为list的节点中的class为item-0和active的节点
item = doc('.list .item-0.active')
lis = item.siblings()
print(lis)

python中pyquery的使用(初始化,css选择器,查找节点,遍历)_第5张图片
如只想选择某个兄弟节点,那么和parents()方法一样,可以向siblings()方法中传入css选择器:

doc = PyQuery(html)
# 选择class为list的节点中的class为item-0和active的节点
item = doc('.list .item-0.active')
lis = item.siblings('.active')
print(lis)

在这里插入图片描述

4.遍历

pyquery的选择结果可能是单个节点,也可能是多个节点。对于单个节点可以直接打印输出,而对于多个节点的结果可以遍历来获取。

from pyquery import PyQuery
html = '''

'''
doc = PyQuery(html)
item = doc('li').items()
for li in item:
    print(li)

python中pyquery的使用(初始化,css选择器,查找节点,遍历)_第6张图片
在调用items()方法后,会得到一个生成器,遍历就可以逐个得到li节点对象,类型都是PyQuery类型。

你可能感兴趣的:(python)