微博热搜榜单采集,微博热搜榜单爬虫,微博热搜榜单解析,完整代码(话题榜+热搜榜+文娱榜和要闻榜)

文章目录

    • 代码
      • 1. 话题榜
      • 2. 热搜榜
      • 3. 文娱榜和要闻榜
    • 过程
      • 1. 话题榜
      • 2. 热搜榜
      • 3. 文娱榜和要闻榜

代码

1. 话题榜

import requests  
import pandas as pd  
import urllib  
from urllib import parse  headers = {  'authority': 'weibo.com',  'accept': 'application/json, text/plain, */*',  'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',  'client-version': 'v2.44.64',  'referer': 'https://weibo.com/newlogin?tabtype=topic&gid=&openLoginLayer=0&url=',  'sec-ch-ua': '"Chromium";v="116", "Not)A;Brand";v="24", "Microsoft Edge";v="116"',  'sec-ch-ua-mobile': '?0',  'sec-ch-ua-platform': '"Windows"',  'sec-fetch-dest': 'empty',  'sec-fetch-mode': 'cors',  'sec-fetch-site': 'same-origin',  'server-version': 'v2024.02.19.1',  '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 Edg/116.0.1938.69',  'x-requested-with': 'XMLHttpRequest',  'x-xsrf-token': 'HOU1s1Hak41bvvQjYsR86Oar',  
}  def get_page_resp(num):  params = {  'sid': 'v_weibopro',  'category': 'all',  'page': f'{num}',  'count': '10',  }  response = requests.get('https://weibo.com/ajax/statuses/topic_band', params=params, headers=headers)  return response  def process_resp(response):  statuses = response.json()['data']['statuses']  if statuses:  _df = pd.DataFrame([[statuse['topic'], statuse['summary'], statuse['read'], statuse['mention'], f"https://s.weibo.com/weibo?q=%23{urllib.parse.quote(statuse['topic'])}%23"] for statuse in statuses], columns=['topic', 'summary', 'read', 'mention', 'href'])  return _df  else:  return  if __name__ == '__main__':  df_list = []  num = 1  while num:  resp = get_page_resp(num)  _df = process_resp(resp)  if isinstance(_df, pd.DataFrame):  df_list.append(_df)  num += 1  else:  num = 0  df = pd.concat(df_list).reset_index(drop=True)  print(df)  df.to_csv('话题榜.csv')

2. 热搜榜

import requests  
import urllib  
import pandas as pd  
import numpy as np  def get_hot():  headers = {  'authority': 'weibo.com',  'accept': 'application/json, text/plain, */*',  'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',  'client-version': 'v2.44.64',  'referer': 'https://weibo.com/newlogin?tabtype=search&gid=&openLoginLayer=0&url=',  'sec-ch-ua': '"Chromium";v="116", "Not)A;Brand";v="24", "Microsoft Edge";v="116"',  'sec-ch-ua-mobile': '?0',  'sec-ch-ua-platform': '"Windows"',  'sec-fetch-dest': 'empty',  'sec-fetch-mode': 'cors',  'sec-fetch-site': 'same-origin',  'server-version': 'v2024.02.19.1',  '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 Edg/116.0.1938.69',  'x-requested-with': 'XMLHttpRequest',  'x-xsrf-token': 'HOU1s1Hak41bvvQjYsR86Oar',  }  response = requests.get('https://weibo.com/ajax/side/hotSearch', headers=headers)  df = pd.DataFrame(response.json()['data']['realtime'])  df['url'] = df['word'].map(lambda x: 'https://s.weibo.com/weibo?q=' + urllib.parse.quote(x))  df['onboard_time'] = pd.to_datetime(df['onboard_time'], unit='s')  gov_name = response.json()['data']['hotgov']['name']  gov_url = response.json()['data']['hotgov']['url']  df = df[['word_scheme', 'word', 'star_name', 'realpos', 'label_name', 'onboard_time', 'url', 'raw_hot']]  gov_info = [gov_name, gov_name[1:-1], {}, 0, '顶', np.nan, gov_url, np.nan]  df = pd.DataFrame(np.insert(df.values, 0, gov_info, axis=0), columns=df.columns)  return df  if __name__ == '__main__':  df = get_hot()  df.to_csv('热搜榜.csv')

3. 文娱榜和要闻榜

这里需要更换cookies

import requests  
import pandas as pd  
import urllib  # 跟换为自己的cookies  
def get_entertainment_and_news():  headers = {  'authority': 'weibo.com',  'accept': 'application/json, text/plain, */*',  'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',  'client-version': 'v2.44.75',  # 跟换为自己的cookies  'cookie': 'SINAGLOBAL=1278126679099.0298.1694199077980; UOR=,,localhost:8888; _s_tentry=localhost:8888; Apache=6414703468275.693.1710132397752; XSRF-TOKEN=4A9SIIBq9XqCDDTlkpxBLz76; ULV=1710132397782:20:1:1:6414703468275.693.1710132397752:1708482016120; login_sid_t=b637e1846742b4dd85dfe4d86c2c9413; cross_origin_proto=SSL; wb_view_log=1920*10801; SUBP=0033WrSXqPxfM725Ws9jqgMF55529P9D9WFARU4r6-VQ2BMDorVsYLdC5JpX5o275NHD95Qce0eX1KefehMXWs4DqcjMi--NiK.Xi-2Ri--ciKnRi-zNSoe0Sh.0SK5NS5tt; ALF=1712724726; SSOLoginState=1710132727; SCF=ApDYB6ZQHU_wHU8ItPHSso29Xu0ZRSkOOiFTBeXETNm74LTwE3TL5gaw4A4raSthpN-_7ynDOKXDUkiKc1jk720.; SUB=_2A25I6v2nDeRhGeBN6FYY8yvMzDiIHXVrhn9vrDV8PUNbktAGLXb1kW9NRGsSAV5UnWQYNJKU-WfqLNcAf0YTSxtn; WBPSESS=LZz_sqga1OZFrPjFnk-WNlnL5lU4G2v_-YZmcP-p0RFdJenqKjvGkmGWkRfJEjOjxH0yfYfrC4xwEi4ExzfXLO84Lg-HDSQgWx5p8cnO_TnE_Gna1RnTgtIpZu7xWJpq8fJ35LrwI2KAkj4nnVzB_A==',  'referer': 'https://weibo.com/hot/entertainment',  'sec-ch-ua': '"Chromium";v="116", "Not)A;Brand";v="24", "Microsoft Edge";v="116"',  'sec-ch-ua-mobile': '?0',  'sec-ch-ua-platform': '"Windows"',  'sec-fetch-dest': 'empty',  'sec-fetch-mode': 'cors',  'sec-fetch-site': 'same-origin',  'server-version': 'v2024.03.06.1',  '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 Edg/116.0.1938.69',  'x-requested-with': 'XMLHttpRequest',  'x-xsrf-token': '4A9SIIBq9XqCDDTlkpxBLz76',  }  response_entertainment = requests.get('https://weibo.com/ajax/statuses/entertainment', headers=headers)  response_news = requests.get('https://weibo.com/ajax/statuses/news', headers=headers)  df_entertainment = pd.DataFrame(response_entertainment.json()['data']['band_list'])  df_entertainment['url'] = df_entertainment['word'].map(  lambda x: 'https://s.weibo.com/weibo?q=' + '%23' + urllib.parse.quote(x) + '%23')  df_news = pd.DataFrame(response_news.json()['data']['band_list'])  df_news['url'] = df_news['topic'].map(  lambda x: 'https://s.weibo.com/weibo?q=' + '%23' + urllib.parse.quote(x) + '%23')  return df_entertainment, df_news  if __name__ == '__main__':  df_entertainment, df_news = get_entertainment_and_news()  df_entertainment.to_csv('文娱榜.csv')  df_news.to_csv('要闻榜.csv')

过程

1. 话题榜

从F12中可以得到所有数据在右侧请求中,解析可以得到参数如下:

  • sid: 这个值为 v_weibopro 是固定的
  • category: 这个值为 all 是固定的
  • page: 这个值为页码,每一页10个,从第一页开始计算
  • count: 这个值为 10 是固定的,修改无效

所有的数据存储在['data']['statuses']下,进行解析,代码如下:

statuses = response.json()['data']['statuses']if statuses:_df = pd.DataFrame([[statuse['topic'], statuse['summary'], statuse['read'], statuse['mention'], f"https://s.weibo.com/weibo?q=%23{urllib.parse.quote(statuse['topic'])}%23"] for statuse in statuses], columns=['topic', 'summary', 'read', 'mention', 'href'])return _dfelse:return 0

可以获得所有结果:


2. 热搜榜

从F12中发现,这个请求是Get型的请求,什么参数都不需要,估计微博是直接放弃了

直接将得到的数据进行处理,

df = pd.DataFrame(response.json()['data']['realtime'])  
df['url'] = df['word'].map(lambda x: 'https://s.weibo.com/weibo?q=' + urllib.parse.quote(x))  
df['onboard_time'] = pd.to_datetime(df['onboard_time'], unit='s')  
gov_name = response.json()['data']['hotgov']['name']  
gov_url = response.json()['data']['hotgov']['url']  
df = df[['word_scheme', 'word', 'star_name', 'realpos', 'label_name', 'onboard_time', 'url', 'raw_hot']]  
gov_info = [gov_name, gov_name[1:-1], {}, 0, '顶', np.nan, gov_url, np.nan]  
df = pd.DataFrame(np.insert(df.values, 0, gov_info, axis=0), columns=df.columns)

得到:


3. 文娱榜和要闻榜

这里从F12中可以发现,文娱榜和要闻榜 直接一个请求就可以获取,但是在解析的过程中,发现还是需要cookie的,所以这里需要自己获取cookies;

在response中发现数据无需要清理,直接在表格中获取一下自己需要的参数即可,在这里还是把url添加一下,有的人根本不看前文怎么获取的;

	response_entertainment = requests.get('https://weibo.com/ajax/statuses/entertainment',  headers=headers)response_news = requests.get('https://weibo.com/ajax/statuses/news',  headers=headers)df_entertainment = pd.DataFrame(response_entertainment.json()['data']['band_list'])df_entertainment['url'] = df_entertainment['word'].map(lambda x: 'https://s.weibo.com/weibo?q=' + '%23' + urllib.parse.quote(x) + '%23')df_news = pd.DataFrame(response_news.json()['data']['band_list'])df_news['url'] = df_news['topic'].map(lambda x: 'https://s.weibo.com/weibo?q=' + '%23' + urllib.parse.quote(x) + '%23')

得到文娱榜如下:

得到要闻榜如下:


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/745925.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

win10磁盘删除卷里面数据怎么恢复 win10磁盘删除卷怎么恢复

大家好,我是你们的小助手,今天我们来聊一下一个非常重要的话题——win10磁盘删除卷里面数据怎么恢复?相信很多小伙伴都曾经遇到过这种情况,不小心把重要的文件删掉了,或者格式化了整个磁盘,导致数据丢失。那…

【华为OD机试】CPU 算力分配【C卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 现有两组服务器A和B,每组有多个算力不同的CPU,其中 A[i] 是 A 组第 i 个CPU的运算能力, B[i] 是 B组 第 i 个CPU的运算能力。 一组服务器的总算力是各CPU的算力之和。 为了让两组服务器…

LeetCode350:两个数组的交集Ⅱ

题目描述 给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。…

Halcon中的交集、补集、全选和反选等操作

1、交集:两个ROI相交的部分 dev_open_window (0, 0, 512, 512, black, WindowHandle) gen_circle (ROI_0, 65, 150, 43) gen_circle (ROI_1, 155, 180, 63) * 交集:两个ROI相交的部分 intersection (ROI_0, ROI_1, RegionIntersection) dev_set_color (…

ResNet学习笔记

一、residual结构 优点: (1)超深的网络结构(突破1000层) (2)提出residual模块 (3)使用Batch Normalization加速训练(丢弃dropout) 解决问题: (1) 梯度消失和…

基于springboot+vue的企业人事管理系统

一、系统架构 前端:vue | element-ui 后端:springboot | mybatis-plus 环境:jdk1.8 | mysql | maven | node14 | redis 二、代码及数据库 三、功能介绍 01. 登录页 02. 首页 03. 员工入职 04. 部门员工管理-部门管理 05. 部门…

聚观早报 | 阿里巴巴计划投资韩国;魏牌蓝山新车型曝光

聚观早报每日整理最值得关注的行业重点事件,帮助大家及时了解最新行业动态,每日读报,就读聚观365资讯简报。 整理丨Cutie 3月15日消息 阿里巴巴计划投资韩国 魏牌蓝山新车型曝光 蔚来提出长寿命电池解决方案 OpenAI与多家出版商合作 零…

《计算机网络》复试问答题总结

简述交换机工作原理?: 交换机工作在数据链路层,相当于一个多端口的网桥,它允许端口之间建立多个并发连接,实现多个结点之间的并发传输。 TCP/IP的核心思想是什么: ​ TCP/IP即传输控制协议/网际协议——指…

Python之Web开发中级教程----创建Django项目

Python之Web开发中级教程----创建Django项目 使用虚拟环境: Workon py3_django3 1.创建Django项目 django-admin startproject name 例:git的本地仓库下新建studentmanager的项目 cd /home/go/work/gtest/ django-admin startproject bookmanager 新…

Qt+FFmpeg+opengl从零制作视频播放器-3.解封装

解封装:如下图所示,就是将FLV、MKV、MP4等文件解封装为视频H.264或H.265压缩数据,音频MP3或AAC的压缩数据,下图为常用的基本操作。 ffmpeg使用解封装的基本流程如下: 在使用FFmpeg API之前,需要先注册API&a…

福派斯猫粮的适口性有何特点?

亲爱的朋友们,今天我想和大家分享一下福派斯猫粮的适口性特点。作为一位养猫多年的铲屎官,我深知猫粮的适口性对于猫咪的健康和幸福是多么重要。那么,福派斯猫粮在这方面究竟有何独到之处呢? 1️⃣ 首先,福派斯猫粮的口…

第2周 Python列表、元组刷题

第2周 Python列表、元组刷题 单击题目,直接跳转到页面刷题,一周后公布答案。 1.B2124:判断字符串是否为回文 2. P1427:小鱼的数字游戏 3. B2057:最高的分数 4. B2055:均值 5. B2056:求整数的和…

【Java多线程】关于多线程的一些案例 —— 单例模式中的饿汉模式和懒汉模式以及阻塞队列

目录 1、单例模式 1.1、饿汉模式 2.1、懒汉模式 2、阻塞队列 2.1、BlockingQueue 阻塞队列数据结构 1、单例模式 对框架和设计模式的简单理解就是,这两者都是“大佬”设计出来的,让即使是一个代码写的不太好的“菜鸡程序员”也能写出还可以的代码…

全球化服务能力,助力企业拓展海外市场,仓储物流行业解决方案

随着全球化的加速推进,越来越多的企业开始将目光投向海外市场,寻求更广阔的发展空间。然而,海外市场的拓展并非易事,需要企业具备强大的全球化服务能力。作为通信行业的领军企业,中国联通凭借其强大的网络资源和技术实…

基于SCIP的约束处理器Conshdlr添加惰性约束——以TSP问题为例

文章目录 1. TSP案例引入2. 考虑惰性约束的求解效率对比2.1 求解基础TSP模型2.2 基于SCIP的Conshdlr添加惰性约束1. TSP案例引入 在运筹学建模和求解过程中,“lazy constraints”(惰性约束)是一种动态添加约束的策略,松弛部分约束后求解得到的“可行解”,不断地进行可行性…

求职分享123

阿里学长 简历:github上找,填信息 项目: 1. 教研室项目 2. github上下载项目下来做 3. 对于项目,要把个人工作详细地准备下来。 4. 给面试官挖坑。 5. 企业实习是巨大的加分项。 知识储备 刷题 不卷,leetcod…

同步和异步程序的关联和区别是?Guide to Synchronous and Asynchronous Code

2024/3/12 发布 正在寻觅一份前端开发工作,如果您觉得这篇文章对你有所帮助,这是我的简历1 在这篇文章中你能学习和理解:NodeJS是如何工作、如何处理所有发送给服务器的函数(无论同步或者异步)和请求、Event Loops in …

rk36566 uboot - dm 模型数据结构与常见接口

文章目录 一、数据结构1、udevice2、driver3、uclass4、uclass\_driver5、 总结6、device\_probe 二、常用接口1、udevice 创建接口1) device_bind_with_driver_data2) device_bind3) device_bind_by_name 2、uclass 操作函数1) uclass_get2) uclass_get_name3) uclass_find_de…

LeetCode 面试经典150题 27.移除元素

题目: 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数…

efcore coderfirst 生成数据库

使用 Entity Framework Core 的 Code First 方法开发时,你可以根据定义的实体模型和 DbContext 类自动生成数据库和表结构。下面的步骤将指导你如何使用 EF Core Code First 来生成数据库。 1. 安装必要的 NuGet 包 首先,确保已经安装了 Entity Framew…