大家好,本文给大家讲解如何用python获取微博热搜榜信息,包含爬取时间、序号、关键词、热度等信息,希望对大家有所帮助。
1. 网页分析
目标网址(微博热搜榜):
https://s.weibo.com/top/summary
实时热搜榜一共有50条,每个时刻可能都不一样(实时榜单)。
接下来,按 F12 或者右键选择审查元素,以第一个小杨哥发工资回应为例搜索一下:
这里我们可以看到相应的热度数据以及具体链接。
继续搜索其他元素:
发现实际上这个热搜榜的信息在网页中是以表格(Table)的形式展现的。
2. 爬取数据
2.1 导入模块
import time
import requests
import pandas as pd
2.2 请求网页数据
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',
}
url = 'https://s.weibo.com/top/summary'
df = getweibodata(url,headers)
2.3 解析数据
time_mow = time.strftime("%Y-%m-%d %H:%M", time.localtime())
df['时间'] = [time_mow] * df.shape[0]
df['排名'] = df['序号'].apply(int)
df['标题'] = df['关键词'].str.split(' ', expand=True)[0]
df['热度'] = df['关键词'].str.split(' ', expand=True)[1]
2.4 保存结果
df = pd.DataFrame(all_data,columns=cols)
df.to_excel('微博热搜榜.xlsx',index=None)