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

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

from pyquery import PyQuery as pq

html='''
  • a
  • b
  • c
'''
>>> 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>

你可能感兴趣的:(python)