新人第一次发帖,怪紧张的。关注52pj很久了,哈哈,以前都是在这里找大家分享的工具,前段时间学了爬虫,但是一直觉得比较简单,就没发,突然心血来潮想分享下自己写的获取微博热搜的脚本,本来是因为找微博热搜的RSS找不到,就打算自己爬一下,后来还得自己手动运行,就没怎么用过。大家如果有微博热搜的RSS分享一下哈。感谢。
使用了csv包和requests包,填写自己的cookies后直接运行就行。
获取到的文件会保存在同目录下的'weibo_hot.csv'文件里,csv格式保存的。
获取的结果有4列,分别是id(获取时的热搜排名),note(热搜标题),category(类型),raw_hot(热度),url(链接)
上传的附件后缀是txt,需要改成py才能用
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 = [count, note, category, raw_hot, hot_url]
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, )
|