pyquery的遍历需要使用items()方法

使用pyquery选择得到的节点不管是单个还是多个,类型都是<class 'pyquery.pyquery.PyQuery'>
如果得到的是多个节点的对象,则需要进行遍历来获取单个节点对象,这时要注意不能直接遍历多个节点对象,而是要调用多节点对象的items()方法:

from pyquery import PyQuery as pq

html='''
<ul>
	<li>a</li>
	<li>b</li>
	<li>c</li>
</ul>'''
>>> doc=pq(html)
# 直接获取节点,得到的是pyquery类型
>>> items=doc('li')
>>> print(type(items))
<class 'pyquery.pyquery.PyQuery'>
# 直接遍历,元素为lxml类型,不可用
>>> for item in items:
	print(type(item))
<class 'lxml.etree._Element'>
<class 'lxml.etree._Element'>
<class 'lxml.etree._Element'>

# 使用items()方法,得到的是一个生成器
>>> items=doc('li').items()
>>> print(type(items))
<class 'generator'>
# 遍历这个生成器,可以发现每个元素都是一个pyquery类型
>>> for item in items:
	print(type(item))
<class 'pyquery.pyquery.PyQuery'>
<class 'pyquery.pyquery.PyQuery'>
<class 'pyquery.pyquery.PyQuery'>

# 另外需注意若对父节点进行遍历,得到的结果将包含父节点自身
>>> items=doc('ul').items()
>>> for item in items:
	print(item)

	
<ul class="xx">
	<li>a</li>
	<li>b</li>
	<li>c</li>
</ul>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值