今天晚上就在我刚刚学了一点python的爬虫时,我的室友找到了我,说他最近关注了一个很有意思的博主,想把他的文章内容全部抓取下来,方便查看。听说我最近学点一点点爬虫的小技巧,于是想让我帮帮忙。
正好我学了爬虫没地方去使用,于是我拿起键盘就敲起了代码。首先找到那位博主,分析分析他文章的结构:
进入该网页:https://blog.csdn.net/evan_qb/article/list/1,我们开始分析,最后的1,肯定是分页的数据,我们可以通过改变数组来获取不同分页的数据。
接着我们通过chrome浏览器来审查一下每个文章的HTML元素:
可以看到,我们需要的信息都在class="article-list"下面的class="csdn-tracking-statistics"盒子下面,我们可以通过python提供的BeautifulSoup库来获取这一块的内容。
整理一下,我们的获取思路如下:
1. 通过requests请求地址获取整个网页的内容
2. 再通过BeautifulSoup获取以上元素的内容
3.最后通过一些处理,获取我们需要的数据
import requests, bs4
count = 1
# # article-item-box > article-item-box
url = 'https://blog.csdn.net/Evan_QB/article/list/'
downpath = 'F:\\test\\download\\Evan_QB发布的文章列表.txt'
downFile = open(downpath, 'a', encoding='utf-8')
for i in range(1, 13):
downFile.write('='*30 + '第' + str(i) + '页' + '='*30 + '\r\n')
# 获取内容
res = requests.get(url + str(i))
res.raise_for_status()
noStarchSoup = bs4.BeautifulSoup(res.text, 'lxml')
# 解析内容
# select获取对应元素的数据
itembox = noStarchSoup.select('.article-list .csdn-tracking-statistics h4 > a')
for item in itembox:
# 获取链接地址
itemUrl = item.attrs['href']
cons = item.text.strip().split(' ')
# 获取文章标题
docTitle = cons[len(cons) - 1]
downFile.write(str(count) + '.' + docTitle + '\t' * 2 + itemUrl + '\r\n')
count += 1
print('获取成功')
downFile.close()
我们可以把获取到的内容存入文件,以便查看
喜欢本文的话,可以关注以下公众号,每天定时更新一篇python学习日记,让我们一起成长!