新手写的简单的python获取微博热搜的脚本

查看 29|回复 0
作者:Anome   
新人第一次发帖,怪紧张的。关注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, )

自己的, 脚本

您需要登录后才可以回帖 登录 | 立即注册

返回顶部