初始化方式:直接传入URL,字符串,文件名
如:
from pyquery import PyQuery as pq
res=pq(url="https://www.baidu.com/")
print(res('title'))
pyquery对象会将请求URL的html初始化,上述代码相当于
from pyquery import PyQuery as pq
import requests
doc = pq(requests.get("https://www.baidu.com/").text)
print(doc('title'))
当获取的节点太多时,用items方法得到生成器,遍历每个节点
html = '''
<div id="container">
<ul class="list">
<li class="item-0">first item</li>
<li class="item-1"><a href="link2.html">second item</a></li>
<li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li>
<li class="item-1 active"><a href="link4.html">fourth item</a></li>
<li class="item-0"><a href="link5.html">fifth item</a></li>
</ul>
</div>
'''
from pyquery import PyQuery as pq
doc = pq(html)
for item in doc('#container .list li').items():
print(item)
print(item.text())#获取节点的内容
运行结果如下
first item
<li class="item-1"><a href="link2.html">second item</a></li>
second item
<li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li>
third item
<li class="item-1 active"><a href="link4.html">fourth item</a></li>
fourth item
<li class="item-0"><a href="link5.html">fifth item</a></li>
fifth item
查询节点
查询子节点:find
以上面的html为参数,查找所有的子孙节点
from pyquery import PyQuery as pq
doc = pq(html)
items = doc('.list')
print(type(items))
print(items)
lis = items.find('li')
print(type(lis))
print(lis)
若指向查找子节点,使用children()方法
lis = items.children()
print(type(lis))
print(lis)
若想筛选出只有节点为中class为active的节点,传入CSS选择器.active即可
lis = items.children('.active')
print(lis)
同理可以用parent()方法得到父节点,若想得到祖先节点,则使用parents()
若想得到兄弟节点则使用siblings 方法
若想得到某个节点的某个属性,使用attr方法,如得到a节点的href属性
a.attr.href或a.attr(‘href’)
注意:如果想得到多个节点的某个属性,则需要items然后遍历,但若想得到多个节点的内部html文本,则可以不遍历
参考课程:52讲轻松搞定网络爬虫