MENU

爬虫练习案例---使用requests和PyQuery库爬取并采集‘Python入门指南’目录页

June 29, 2020 • 数据采集与数据分析(python)

该案例使用requests库模拟浏览器连接 Python入门指南目录(采集目标)
使用PyQuery库提取目录和对应连接,并保留到txt文件

pycharm界面.png

首先我们先对网页源码进行分析,见下图

网页源码截图.jpg

从上图的网页源码可以看到,目录就在 <div class="toctree-wrapper compound"> 目录</div>
这里使用class选择器直接锁定 .toctree-wrapper ,会产生PyQuery对象。
接下来继续使用PyQuery对象寻找所以a节点,目录信息与连接都在a节点中。之后调用a节点的items()得到生成器,遍历获取信息

具体代码见下:

import requests
from pyquery import PyQuery as pq

head = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3756.400 QQBrowser/10.5.4039.400'}
url = 'https://www.runoob.com/manual/pythontutorial3/docs/html/index.html'
preUrl = 'https://www.runoob.com/manual/pythontutorial3/docs/html/'

response = requests.get(url=url,headers=head)      
response.encoding = 'utf-8'                     //使用utf-8编码,否则会出现乱码
html = response.text                         
print(html + '\n' + '=======================================')
parsedoc = pq(html)           
root = parsedoc('.toctree-wrapper')        //使用class选择器,选择class=toctree-wrapper下的所以节点
aNode = root('a')                  //选择所有a节点
aNode_items = aNode.items()        //获取a节点的生成器,用于后期*遍历*更多信息
for item in aNode_items:         //使用遍历的方法获取a节点的属于文本,否则只能获取第一个a节点的属性信息
    aitem = item.text() + '    ' + preUrl + item.attr('href')
    print('\n'.join([aitem]))    **//注意这里join()参数必须是列表**
    with open('catalog.txt','a',encoding='utf-8') as file:  //打开文本,编码UTF-8 
        file.write(aitem + '\n')   //写入文本

最后查看文本

文本截图.jpg

没毛病,这个案例非常简单,适合新手操作。

源码文件: https://github.com/Cwoner/DataAcquisition.study/blob/master/store02.py