excel自动抓取网页数据(Python爬虫获取个人博客的排名,评论数、点赞数量等信息 )

优采云 发布时间: 2021-11-13 18:16

  excel自动抓取网页数据(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表格的样式,比如设置服务器为自动定期运行脚本,以实现真正的全自动...

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线