hello,大家好,我是wangzirui32,今天我们来学习如何爬取CSDN博客各专栏访问量,开始学习吧!
1. HTML分析
这里以我的博客主页为例,打开https://blog.csdn.net/wangzirui32,再打开开发者工具,找到装着专栏信息的div标签:
再点击其中的一个专栏,进行解析:
2. 编写代码
代码奉上——(不懂看注释)
from requests import get
from bs4 import BeautifulSoup as bs
from fake_useragent import UserAgent as UA
import time
"""
安装fake_useragent命令:pip install fake_useragent
"""
# 生成请求头
headers = {
"User-Agent": UA().random,
}
# 爬取URL
blog_url = "https://blog.csdn.net/wangzirui32"
r = get(blog_url, headers=headers)
soup = bs(r.text, 'lxml')
"""
下面这行代码为什么加了[3]呢?
因为博客主页的HTML中还存在着其他class属性一样的div标签,
所以使用find_all函数找出所有此属性的div标签,
再选择其中的第4项([3])。
"""
div = soup.find_all("div", class_="aside-common-box-content")[3]
li = div.find_all("li") # 找出所有li标签
links = []
for i in li:
a = i.find("a")
links.append(( # 向列表添加一个元组
a.get_text().strip(), # 获取内容 剔除空格
a.get("href"))) # 获取链接
# 循环遍历
for link in links:
r = get(link[1], headers=headers)
soup = bs(r.text, "lxml")
# 获取访问量
read = soup.find("div", class_="column_operating").find_all("span", class_="mumber-color")[2].get_text()
name = link[0] # 获取专栏名称
print(name, read) # 输出访问量
time.sleep(1) # 等待1秒
3. 运行代码
运行代码,输出:
Python番外篇 5452
Python 11512
Python模块介绍使用 4481
Python网络爬虫 2727
HTML 5548
CSS学习笔记 155
jQuery 144
JavaScript 3289
好了,今天的课程就到这里,我是wangzirui32,我们下次再见!