python获取某博热搜数据并保存成Excel

python获取某博🧣热搜数据

一、获取目标、准备工作

1、获取目标: 本次获取教程目标:某博🧣热搜

2、准备工作

  • 环境python3.x
  • requests
  • pandas

       requests跟pandas为本次教程所需的库,requests用于模拟http请求,pandas用于数据处理(将结果保存为Excel)。

  • 在Chrome浏览器中打开需要请求的页面,然后F12打开浏览器的控制台。点击Network选择网络,然后再点击XHR。找到相应的XHR请求,就能获取到热搜数据接口了。

二、开始编码

  1. 导入所依赖的库
import requests
import pandas as pd
  1. 构造一个请求头:
browse_header = {
    "Accept": "application/json, text/plain, */*",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36",
    "Host": "weibo.com",
    "Referer": "https://weibo.com/newlogin?tabtype=search&gid=&openLoginLayer=0&url=https%3A%2F%2Fweibo.com%2F",
    "Cookie": "_xsrf=Pd0NpG6J8kZdHtzBVnNyQP1g0rO7NKeg; _zap=d7f27b9f-4fe3-4ef4-9376-df278af16940;"
}
  1. 定义一个请求接口,即数据地址
url = "https://weibo.com/ajax/side/hotSearch"
  1. 发送请求,由于接口返回的是JSON格式,所以这里一步到位,将响应结果也转成JSON格式。
res = requests.get(url, headers=browse_header).json()
  1. 注意:某博有两种热搜数据,一个置顶热搜、一个普通热搜,所以我们得分开获取。
# 获取置顶热搜
top_content_list = res['data']['hotgovs']
# 热搜列表
content_list = res['data']['realtime']
  1. 然后再分别进行json解析,对应的字段(标题、排名、热搜指数、描述、链接地址)。
df = pd.DataFrame(  # 拼装爬取到的数据为DataFrame
	{
		'热搜话题': title_list,
	    '热搜排名': order_list,
	    '热搜热度': score_list,
	    '描述': desc_list,
	    '链接地址': url_list
	}
)
df.to_excel('微博热搜榜.xlsx', index=False)  # 保存结果数据

注意:普通热搜没有返回热搜的链接,我们得自己组装链接::
url_list.append(f"https://s.weibo.com/weibo?q=%23{content_item['word']}%23")

完整代码:

import requests
import pandas as pd

browse_header = {
    "Accept": "application/json, text/plain, */*",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36",
    "Host": "weibo.com",
    "Referer": "https://weibo.com/newlogin?tabtype=search&gid=&openLoginLayer=0&url=https%3A%2F%2Fweibo.com%2F",
    "Cookie": "_xsrf=Pd0NpG6J8kZdHtzBVnNyQP1g0rO7NKeg; _zap=d7f27b9f-4fe3-4ef4-9376-df278af16940;"
}

url = "https://weibo.com/ajax/side/hotSearch"
res = requests.get(url, headers=browse_header).json()
# 获取置顶热搜
top_content_list = res['data']['hotgovs']
# 热搜列表
content_list = res['data']['realtime']
title_list = []
order_list = []
score_list = []
desc_list = []
url_list = []
# 置顶热搜数据组装
for content in top_content_list:
    order_list.append("置顶")
    title_list.append(content['word'])
    score_list.append('')
    desc_list.append(content['note'])
    url_list.append(content['url'])

# 普通热搜数据组装
index = 0
for content_item in content_list:
    index += 1
    order_list.append(index)
    title_list.append(content_item['word'])
    score_list.append(content_item['num'])
    desc_list.append(content_item['note'])
    url_list.append(f"https://s.weibo.com/weibo?q=%23{content_item['word']}%23")

# 将组装好的数据保存成Excel
df = pd.DataFrame({
    '热搜话题': title_list,
    '热搜排名': order_list,
    '热搜热度': score_list,
    '描述': desc_list,
    '链接地址': url_list
})
df.to_excel('微博热搜榜.xlsx', index=False)  # 保存结果数据

最后,查看一下获取到的数据:
在这里插入图片描述
一共52条数据。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值