微博评论爬取

news2024/11/17 19:29:49
import requests
import csv

# 打开CSV文件以写入数据
f = open('data.csv', mode='a', encoding='utf-8-sig', newline='')
csv_writer = csv.DictWriter(f, fieldnames=['昵称', '性别', '归属地', '内容'])
csv_writer.writeheader()

# 定义一个函数用于获取评论内容
def GetContent(max_id):
    # 设置请求头部信息,包括Cookie和User-Agent
    headers = {
        "Cookie": "Your Cookie Here",
        "User-Agent": "Your User-Agent Here"
    }

    # 构建请求的URL
    url = f'https://weibo.com/ajax/statuses/buildComments?flow=0&is_reload=1&id=5024441672929516&is_show_bulletin=2&is_mix=0&max_id={max_id}&count=20&uid=2286908003&fetch_level=0&locale=zh-CN'

    # 发起GET请求
    response = requests.get(url=url, headers=headers)

    # 解析响应的JSON数据
    json_data = response.json()

    # 提取评论数据
    lis = json_data['data']

    # 遍历评论数据并写入CSV文件
    for li in lis:
        name = li['user']['screen_name']
        try:
            ip = li['source'].replace('来自', '')
        except:
            ip = '未知'

        content = li['text_raw']
        gender = li['user']['gender']
        if gender == 'f':
            gender = '女'
        elif gender == 'm':
            gender = '男'
        else:
            gender = '保密'
        dit = {
            '昵称': name,
            '性别': gender,
            '归属地': ip,
            '内容': content,
        }

        csv_writer.writerow(dit)

    # 获取下一页评论的max_id
    next_id = json_data['max_id']
    print(next_id)
    return next_id

# 初始化max_id为空字符串,并循环获取评论数据
max_id = ''
for page in range(10):
    max_id = GetContent(max_id=max_id)

# 关闭文件
f.close()

以上展示的是爬取一则微博帖子评论前10页的代码示例,

主要包括的维度有“昵称”“性别”“归属地”“内容”,

同一个url中的“max_id”值代表不同页的数据内容

默认首页url中“max_id"为空,则其json数据“max_id”键指向的是下一页url中“max_id"

获取页面方法如下:

1.用谷歌浏览器点击进入一条微博链接

2.F12在“网络”中进行过滤“ajax/statuses/buildComments?”

3.选择其中url中带有“max_id"的链接,在代码中更换即可

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

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

相关文章

吴恩达机器学习笔记:第 8 周-13 聚类(Clustering)13.3-13.5

目录 第 8 周 13、 聚类(Clustering)13.3 优化目标13.4 随机初始化13.5 选择聚类数 第 8 周 13、 聚类(Clustering) 13.3 优化目标 K-均值最小化问题,是要最小化所有的数据点与其所关联的聚类中心点之间的距离之和,因此 K-均值的代价函数(又…

ShardingSphere-JDBC快速入门

ShardingSphere-JDBC读写分离快速入门 一、ShardingSphere-JDBC 读写分离1.创建springboot程序1.1 添加依赖1.2 java代码1.3 配置 2.测试 二、ShardingSphere-JDBC垂直分片1.创建springboot程序1.1 导入依赖1.2 java代码1.3 配置 2.测试 三、ShardingSphere-JDBC水平分片1.创建…

第二证券|三大利好突袭!港股,这次不一样?

密布利好突袭香港。 港股的接连上攻,让商场兴奋不已。行情转好的背后,有三大利好支撑: 一是,香港金融办理局(以下简称“香港金管局”)正密布投进流动性,4月22日、23日,分别经过贴现…

【leetcode面试经典150题】72. 从前序与中序遍历序列构造二叉树(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主,题解使用C语言。(若有使用其他语言的同学也可了解题解思路,本质上语法内容一致&…

uniapp 引用组件后 不起作用 无效果 不显示

根据uniapp官方文档easycom组件规范 只要组件安装在项目的components目录下或uni_modules目录下,并符合components/组件名称/组件名称.(vue|uvue)目录结构(注意:当同时存在vue和uvue时,uni-app 项目优先使用 vue 文件,…

vue3组件封装系列-表格及分页

第二弹来了,不知道有多少人是看过我的第一篇文章的,今天本来是没想更新的,但是现在项目正在验收期准备上线,闲着还不如来发发文。虽然这两天可能会高产,下一次高产就不知道是什么时候了。话不多说,先上图。…

python实现钉钉通讯录导出Excel表

Python工具开源专栏 Py0004 python实现钉钉通讯录导出Excel表 Python工具开源专栏前言目录结构部分演示完整代码已在GitHub上开源 前言 需求来源于公司,需要将钉钉通讯录以Excel表的形式导出到本地,方便定期备份。导出的Excel需要处理钉钉用户兼任多部门…

【计算机毕业设计】药品销售系统产品功能介绍——后附源码

🎉**欢迎来到我的技术世界!**🎉 📘 博主小档案: 一名来自世界500强的资深程序媛,毕业于国内知名985高校。 🔧 技术专长: 在深度学习任务中展现出卓越的能力,包括但不限于…

华为数通HCIA ——企业网络架构以及产品线

一.学习目标:精讲网络技术,可以独立搭建和维护中小企业网络! 模拟器(华为方向请安装ENSP,Ensp-Lite已有安装包,号称功能更加完善-这意味着要耗费更多的系统资源但是仅对华为内部伙伴申请后方可使用&#x…

TDengine高可用架构之TDengine+Keepalived

之前在《TDengine高可用探讨》提到过,TDengine通过多副本和多节点能够保证数据库集群的高可用。单对于应用端来说,如果使用原生连接方式(taosc)还好,当一个节点下线,应用不会受到影响;但如果使用…

Python 基础、流程、容器、函数

一、基础语法 1.1 前言 1.1.1 Python简介 Python是一门编程语言,Python的作者是Guido van Rossum(龟叔) Python优点:简单易学 Python与嵌入式、集成电路行业 强大的库和工具生态系统:Python拥有广泛而强大的库和…

【Harmony3.1/4.0】笔记五

概念 本文综合row,column作为主要布局,结合image组件,text组件,textimput组件,button组件以及轮播布局搭建登录页面 效果图 ArkTS代码 //登录综合页面 Entry Component struct Five{//添加图片State imgs:Resource[…

网络安全主题纪录片

网络安全主题纪录片 文章目录 网络安全主题纪录片第四公民黑客帝国系列龙纹身女孩碟中谍系列虎胆龙威4匿名者终结者2:审判日东方快车谋杀案黑客国家公敌我是谁:没有绝对安全的系统黑客军团速度与激情系列十亿美元大劫案勒索软件的背后黑客的恐惧为什么网…

共享汽车管理|基于SprinBoot+vue的共享汽车管理系统(源码+数据库+文档)

共享汽车管理目录 基于SprinBootvue的共享汽车管理系统 一、前言 二、系统设计 三、系统功能设计 1 管理员模块的实现 1.1 用户信息管理 1.2 投放地区管理 1.3 汽车信息管理 1.4 汽车入库管理 2 用户模块的实现 2.1 汽车投放 2.2 使用订单管理 2.3 汽车归还 四、…

Java八股文4-Linux篇

Linux篇 Linux中常见命令:Linux常见命令 1.free命令-查看内存状态 free命令用于显示内存状态,它可以提供关于系统内存使用情况的详细信息。这个命令会显示出内存的使用情况,包括实体内存、虚拟的交换文件内存、共享内存区段,以及…

开发简易复用 SDK(项目加分项)

文章目录 开发 SDK新建项目修改pom文件删除启动类创建配置类复制之前的客户端新建spring.factories打包 开发 SDK 为什么要开发SDK。 减少代码的冗余提高代码的复用 如果实际项目中需要使用到该SDK,在pom.xml中注入就可以了。 类似于maven一样,把需要…

`THREE.AudioAnalyser` 音频分析

demo案例 THREE.AudioAnalyser 音频分析 入参 (Input Parameters): audio: 一个 THREE.Audio 实例,代表要分析的音频。fftSize: 快速傅里叶变换(FFT)的大小,用于确定分析的精度和频率分辨率。smoothingTimeConstant: 平滑时间…

AI时代的GPU集群网络算力分析

浅谈GPU集群网络、集群规模和集群算力 引言在生成式AI(GenAI)和大模型时代,不仅需要关注单个GPU卡的算力,更要关注GPU集群的总有效算力。单个GPU卡的有效算力可以通过该卡的峰值算力来测算,例如,对于Nvidia…

【01-机器学习入门:理解Scikit-learn与Python的关系】

文章目录 前言Python与机器学习Scikit-learn简介Scikit-learn与Python的关系使用Scikit-learn进行机器学习结语前言 在当今的数据科学和人工智能领域,机器学习已经成为了一个不可或缺的组成部分。而对于那些刚刚踏入这一领域的新手来说,理解机器学习的基本概念和找到合适的工…

UDS报文传输的四种帧

ISO14229-1规定了26个诊断服务细节,也就是UDS诊断报文的细节。它只规定了各个服务每个字节的含义,它不关心底层到底是怎么传输的。 ISO15765-2规定了基于CAN总线进行UDS报文传输的细节(包括四种帧)。是在CAN总线传输的情况下&…