excel自动抓取网页数据(Python爬虫获取个人博客的排名,评论数、点赞数量等信息 )
优采云 发布时间: 2021-11-13 18:16excel自动抓取网页数据(Python爬虫获取个人博客的排名,评论数、点赞数量等信息
)
CSDN有排名功能。排名标准是你的博客积分。可以通过发送原创文章、增加阅读量等方式增加积分,具体内容可在CSDN上查看。排名信息每天更新,但没有之前的记录。如果你想每天保持你博客的排名信息,你只能手动进行。
今天想做的是使用Python爬虫程序自动获取个人博客的排名、评论数、点赞数等信息。程序很简单,主要是思路。
1.获取链接
想要获取你的排名信息页面很简单,只需点击博客首页左上角个人信息中的博客名称即可。
点击后可以看到自己的流量、当前排名、点赞数、转发数等信息。这个页面上的链接就是我们要爬取的目标。
2.页面分析
在Chrome中右击“Check”,可以查看该页面的源码,选择我们要获取信息的区域,分析其HTML代码结构:
通过观察,我们发现我们想要的所有信息都在一个类属性为mod_my_t的ul标签中,那么我们就可以开始写代码了!
3.导入相关库
判断文件是否有需要的os库,获取时间需要time库,请求页面需要requests库,解析页面需要bs4库,保存信息到Excel需要xlrd库和xlutils库,以及fake_useragent需要 library 来随机获取 User-Agent。
import os
import time
import xlwt
import requests
from xlutils.copy import copy
from bs4 import BeautifulSoup
from xlrd import open_workbook
from fake_useragent import UserAgent
4.页面抓取
这一步没什么好说的,一个通用的套路,这个函数的返回值是一个HTML页面。
def get_html(csdn_url):
ua = UserAgent()
headers = {'User-Agent': ua.random}
html = requests.get(csdn_url,headers=headers).text
return html
5.页面分析
这个函数的作用是返回一个数组,数组的元素就是排名,点赞数等我们想要的信息。
# 解析页面
def parse_html(html):
results = []
soup = BeautifulSoup(html,'html.parser')
content = soup.find(class_="mod_my_t").find_all(name='li')
results.append(time.strftime("%Y/%m/%d",time.localtime()))
for i in range(1,len(content)):
results.append(int(content[i].find(name='span').text))
return results
6.保存数据
这个函数没有返回值。但是我需要的数据会保存在Excel文件中,方便对数据进行排序、过滤等操作。这里我加了一个判断来检查Excel文件是否存在,如果存在,直接保存数据,如果不存在,先生成Excel文件,然后存储数据。
# 保存数据
def save_to_excel(results):
# 根据文件是否存在,进行不同的操作
if(os.path.exists('csdn.xls')):
open_excel = open_workbook("csdn.xls") # 读取Excel
rows = open_excel.sheets()[0].nrows # 获取现有行数
workbook = copy(open_excel) # 将xlrd对象转为xlwt对象
table = workbook.get_sheet(0) # 用xlwt对象获取要操作的sheet
print("Excel文件已存在,正在保存数据......")
else:
workbook = xlwt.Workbook(encoding='utf-8')
table = workbook.add_sheet('Sheet')
head = ['日期','访问','原创','转发','排名','评论','点赞']
# 生成表头
for i,head_item in enumerate(head):
table.write(0,i,head_item)
rows = 1
print('程序初次运行,已为您生成Excel文件,正在保存数据......')
# 存入数据
for i,result in enumerate(results):
table.write(rows,i,result)
workbook.save("csdn.xls")
print('恭喜,今日数据已成功保存!')
7.查看结果
至此,这个小功能就实现了,但是程序还可以扩展更多的功能,比如在保存数据之前判断今天的数据是否已经存在,比如调整Excel表格的样式,比如设置服务器为自动定期运行脚本,以实现真正的全自动...