爬虫pyquery基础篇

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chengqiuming/article/details/86411478

一 点睛

如果你对Web有所涉及,如果你比较喜欢用CSS选择器,如果你对jQuery有所了解,那么这里有一个更适合你的解析库——pyquery。

二 安装

(venv) E:\WebSpider>pip install pyquery

三 初始化

1 点睛

pyquery初始化方式有多种,比如直接传入字符串,传入URL,传入文件名。

2 字符串初始化

2.1 代码

html = '''
<div>
    <ul>
         <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)
print(doc('li'))

2.2 结果

E:\WebSpider\venv\Scripts\python.exe E:/WebSpider/4_3.py
<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>

2.3 说明

这里首先引入PyQuery这个对象,取别名为pq。然后声明了一个长HTML字符串,并将其当作参数传递给PyQuery类,这样就成功完成了初始化。然后传入li节点,这样就可以选择所有的li节点。

扫描二维码关注公众号,回复: 4897582 查看本文章

3 URL初始化

3.1 代码

html = '''
<div>
    <ul>
         <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
# 初始化的参数不仅可以以字符串的形式传递,还可以传入网页的URL,此时只需要指定参数为url即可
doc = pq(url='https://blog.csdn.net/')
print(doc('title'))

3.2 结果

E:\WebSpider\venv\Scripts\python.exe E:/WebSpider/4_3.py
<title>CSDN博客-专业IT技术发表平台</title>

3.3 说明

这样的话,PyQuery对象会首先请求这个URL,然后用得到的HTML内容完成初始化,这其实就相当于用网页的源代码以字符串的形式传递给PyQuery类来初始化。

类似实现:

from pyquery import PyQuery as pq
import requests
doc = pq(requests.get('https://blog.csdn.net/').text)
print(doc('title'))

4 文件初始化

4.1 点睛

当然,除了传递URL,还可以传递本地的文件名,此时将参数指定为filename即可。

4.2 代码

from pyquery import PyQuery as pq
doc = pq(filename='demo.html')
print(doc('li'))

4.3 说明

当然,这里需要有一个本地HTML文件demo.html,其内容是待解析的HTML字符串。这样它会首先读取本地的文件内容,然后用文件内容以字符串的形式传递给PyQuery类来初始化。

以上3种初始化方式均可,当然最常用的初始化方式还是以字符串形式传递。

四 CSS选择器

1 代码

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)
print(doc('#container .list li'))
print(type(doc('#container .list li')))

2 结果

E:\WebSpider\venv\Scripts\python.exe E:/WebSpider/4_3.py
<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>
     
<class 'pyquery.pyquery.PyQuery'>

3 说明

这里我们初始化PyQuery对象之后,传入了一个CSS选择器#container .list li,它的意思是先选取id为container的节点,然后再选取其内部的class为list的节点内部的所有li节点。然后,打印输出。可以看到,我们成功获取到了符合条件的节点。

最后,将它的类型打印输出。可以看到,它的类型依然是PyQuery类型。

猜你喜欢

转载自blog.csdn.net/chengqiuming/article/details/86411478