新手写的简单的python获取微博热搜的脚本
新人第一次发帖,怪紧张的。关注52pj很久了,哈哈,以前都是在这里找大家分享的工具,前段时间学了爬虫,但是一直觉得比较简单,就没发,突然心血来潮想分享下自己写的获取微博热搜的脚本,本来是因为找微博热搜的RSS找不到,就打算自己爬一下,后来还得自己手动运行,就没怎么用过。大家如果有微博热搜的RSS分享一下哈。感谢。> 使用了csv包和requests包,填写自己的cookies后直接运行就行。
> 获取到的文件会保存在同目录下的'weibo_hot.csv'文件里,csv格式保存的。
> 获取的结果有4列,分别是id(获取时的热搜排名),note(热搜标题),category(类型),raw_hot(热度),url(链接)
> 上传的附件后缀是txt,需要改成py才能用
```python
import csv
import requests
url = "https://weibo.com/ajax/statuses/hot_band"
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.62',
'Referer': 'https://weibo.com/newlogin?tabtype=search&gid=&openLoginLayer=1&url=https://s.weibo.com/realtime?q=%E4%B8%BAi%E5%81%9Ae&rd=realtime&tw=realtime&Refer=weibo_realtime',
'Cookie': ''
} # 在单引号里填写你自己的Cookie就可以了
response = requests.get(url, headers=headers)
response = response.json()["data"]["band_list"]
hot = []
count = 0
for dict1 in response:
count += 1
if 'note' in dict1:
note = dict1['note']
else:
note = 'Unknown'
if 'category' in dict1:
category = dict1['category']
else:
category = 'Unknown'
if 'raw_hot' in dict1:
raw_hot = dict1['raw_hot']
else:
raw_hot = 'Unknown'
hot_url = f'https://s.weibo.com/weibo?q={note}&Refer=index'
lst =
hot.append(lst)
with open('weibo_hot.csv', 'w', newline='', encoding="utf-8") as file:
writer = csv.writer(file)
writer.writerow(["id", "note", "category", "raw_hot", "url"])
# 遍历列表中的每个元素,写入 CSV 文件的单独一行中
for item in hot:
writer.writerow(item, )
``` 曾经的歌42 发表于 2023-5-12 14:18
request.get(url) 括号里面也要加headers么。。
不用了的,response = requests.get(url, headers=headers)
代码里已经写上了,只需要在这一行的前面哪个,headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.62',
'Referer': 'https://weibo.com/newlogin?tabtype=search&gid=&openLoginLayer=1&url=https://s.weibo.com/realtime?q=%E4%B8%BAi%E5%81%9Ae&rd=realtime&tw=realtime&Refer=weibo_realtime',
'Cookie': ''
}
在最后面这个Cookie的单引号里面填上自己cookie就好了。
如果是自己写的爬虫,先不填试试能不能爬到结果,不能的话就需要添加header了,就想我这个脚本里的一样,就需要在request.get(url,headers)都添加了 _T_WM=86637299753; XSRF-TOKEN=1b2636; WEIBOCN_FROM=1110005031; MLOGIN=1; mweibo_short_token=9b71794a9f; SCF=AnGo8PBecuWfX5jnDKrHmoWpUriVG1zPOWqhoqgWjhM16bIkOhuUTwAkF8EczckE1dG_aA4r9OFhZEDzGwxpr8g.; SUB=_2A25JTLXkDeRhGeBL61YT8SjKyzSIHXVqztusrDV6PUJbktCOLVDwkW1NR0glr3wtry3LOyviZYUiePOqoYPuAWkG; SUBP=0033WrSXqPxfM725Ws9jqgMF55529P9D9WFY7vUVI4N0vgZfG3XI7U215JpX5K-hUgL.FoqfehBEeKqcehn2dJLoI0YLxKqL1K.LB-qLxKnLBKML1hzLxK.LBo2LB.eLxKqLBo2LBK5LxKnLB.qL1hMLxKqLB.zLBKBLxK-L1K.LBKnt; SSOLoginState=1682490805; ALF=1685082805; M_WEIBOCN_PARAMS=luicode%3D20000174%26uicode%3D20000174
cookie是类似上面这个吗?填进去没反应 yinfu123 发表于 2023-4-26 14:45
_T_WM=86637299753; XSRF-TOKEN=1b2636; WEIBOCN_FROM=1110005031; MLOGIN=1; mweibo_short_token=9b71794a ...
我是这样的,进入微博后,点”热搜榜“这个选项,然后F12进入开发者模式,重新刷新一下,上面那栏选择Network选项,然后找到hot_band这个,选择requests Headers下面的cookies直接右键单击,然后复制value。注意不是上面的response Headers。你看图片中,标出来了 yinfu123 发表于 2023-4-26 14:45
_T_WM=86637299753; XSRF-TOKEN=1b2636; WEIBOCN_FROM=1110005031; MLOGIN=1; mweibo_short_token=9b71794a ...
你填了后运行了会报错吗?运行结束后不会有提示的,会直接在同目录生成一个文件,里面就是热搜 Anome 发表于 2023-4-26 17:06
你填了后运行了会报错吗?运行结束后不会有提示的,会直接在同目录生成一个文件,里面就是热搜
明天再试一下,谢谢 yinfu123 发表于 2023-4-26 18:14
明天再试一下,谢谢
嗯嗯,没事的 厉害厉害 值得学习下 厉害,学习下{:1_921:} 刚去运行了下 ,直接粘贴运行 生产了csv文件 我要开始学习了,嘎嘎嘎
页:
[1]
2