Python爬虫—爬取微博评论数据

这篇具有很好参考价值的文章主要介绍了Python爬虫—爬取微博评论数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今日,分享编写Python爬虫程序来实现微博评论数据的下载。

python爬取微博评论,python,爬虫,数据库,Python学习,Python编程,Python爬虫

具体步骤如下👇👇👇:

Step1:电脑访问手机端微博_https://m.weibo.cn/_

Step2:打开一条微博_https://m.weibo.cn/detail/4907031376694279_

Step3:URL地址中的_49070__31376694279_就是需要爬取的微博ID

Step4:将ID填写到_main_下即可,也支持同时填写多个

完整代码:

import os
import requests
import pandas as pd
import datetime
from time import sleep
import random
# from fake_useragent import UserAgent
import re
def trans_time(v_str):
    """转换GMT时间为标准格式"""
    GMT_FORMAT = '%a %b %d %H:%M:%S +0800 %Y'
    timeArray = datetime.datetime.strptime(v_str, GMT_FORMAT)
    ret_time = timeArray.strftime("%Y-%m-%d %H:%M:%S")
    return ret_time
def tran_gender(gender_tag):
    """转换性别"""
    if gender_tag == 'm':
        return '男'
    elif gender_tag == 'f':
        return '女'
    else:  # -1
        return '未知'
def get_comments(v_weibo_ids, v_comment_file, v_max_page):
    """
    爬取微博评论
    :param v_weibo_id: 微博id组成的列表
    :param v_comment_file: 保存文件名
    :param v_max_page: 最大页数
    :return: None
    """
    for weibo_id in v_weibo_ids:
        # 初始化max_id
        max_id = '0'
        # 爬取前n页,可任意修改
        for page in range(1, v_max_page + 1):
            wait_seconds = random.uniform(0, 1)  # 等待时长秒
            print('开始等待{}秒'.format(wait_seconds))
            sleep(wait_seconds)  # 随机等待
            print('开始爬取第{}页'.format(page))
            if page == 1:  # 第一页,没有max_id参数
                url = 'https://m.weibo.cn/comments/hotflow?id={}&mid={}&max_id_type=0'.format(weibo_id, weibo_id)
            else:  # 非第一页,需要max_id参数
                if str(max_id) == '0':  # 如果发现max_id为0,说明没有下一页了,break结束循环
                    print('max_id is 0, break now')
                    break
                url = 'https://m.weibo.cn/comments/hotflow?id={}&mid={}&max_id_type=0&max_id={}'.format(weibo_id,
                                                                                                        weibo_id,
                                                                                                        max_id)
            # 发送请求
            # ua = UserAgent(verify_ssl=False)
            headers = {
                "user-agent": 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',
                # 如果cookie失效,会返回-100响应码
                "cookie": "__bid_n=1855e52f83c12780664207; FEID=v10-766d48bf476a5b99a31684e6d4b74c98b4d133a2; __xaf_fpstarttimer__=1672634141361; __xaf_thstime__=1672634141910; __xaf_fptokentimer__=1672634142056; _T_WM=91010151027; SCF=AhqqhuU0eySfXjT2vmQ5faXpqgHtzG0tpXf6Jh1xOrIiSqjsMXmKh4wsNBFg5ejqRMTI93-xSbS-Uduk_s4NRK8.; SUB=_2A25O5c7uDeRhGedI4lIU8C3PwzyIHXVqKdKmrDV6PUJbktAKLUz1kW1NVoZ-2WIGRSgsp51DeFB9dxRhRboM7px_; SUBP=0033WrSXqPxfM725Ws9jqgMF55529P9D9WhWcVXRXvfX3iep9.M98zpA5JpX5K-hUgL.Fo2c1K5fehe01h52dJLoIE2LxK.LBK.LB-eLxK-L1KeLBKH7wPxQdcRLxKnLB-qLBoBt; ALF=1678330814; FPTOKEN=p16283+PpnoduGibvvEpa7Jm1K1HU2NhkUXcqTuOwltTEKQJhsj3jOo/s/CWN8838ew7/ie6v2DLIYzTNLo40f3l05g4fFF+kjYdomw3o20ziaJMA4VJXMtzUBj6vAo3zxEa+LfqjEUYQuqn3G1gHwOdB2At9OvAubnkHHfZSzJJo0v+TLKcmjTLExJW/OjHZyhR9bRoWqV/1ENZHuxKvsn7tn+pgwC2n28Q/ez8zMNkj6X0huMuaBeNA8HoQ8FuWjoyrXps7wwbRbBv8z4mumRRoqiXEOSOsASflCjKw6gkfJJ5oHmoh1hx43ugVTZqxpYLivp8aCToqFu/clIex5bB2b0WQdp59i9E1KqEiwRN6jxPjhl7EKQlruQclvFYRExGOw5KMKGZy/0CNraMcw==|PfOWxrz13V2fvzp/rEoL/lSANYW4voaw2PHjpWZ/njY=|10|b67122b33a5e1ebb87032fafdc0126ba; XSRF-TOKEN=eceae9; WEIBOCN_FROM=1110006030; mweibo_short_token=87f071037d; MLOGIN=1; M_WEIBOCN_PARAMS=oid=4865363672566456&luicode=10000011&lfid=102803&uicode=20000061&fid=4865363672566456",
                "accept": "application/json, text/plain, */*",
                "accept-encoding": "gzip, deflate, br",
                "accept-language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7",
                "referer": "https://m.weibo.cn/detail/{}".format(weibo_id),
                "x-requested-with": "XMLHttpRequest",
                "mweibo-pwa": '1',
            }
            r = requests.get(url, headers=headers)  # 发送请求
            print(r.status_code)  # 查看响应码
            # print(r.json())  # 查看响应内容
            try:
                max_id = r.json()['data']['max_id']  # 获取max_id给下页请求用
                datas = r.json()['data']['data']
            except Exception as e:
                print('excepted: ' + str(e))
                continue
            page_list = []  # 评论页码
            id_list = []  # 评论id
            text_list = []  # 评论内容
            time_list = []  # 评论时间
            like_count_list = []  # 评论点赞数
            source_list = []  # 评论者IP归属地
            user_name_list = []  # 评论者姓名
            user_id_list = []  # 评论者id
            user_gender_list = []  # 评论者性别
            follow_count_list = []  # 评论者关注数
            followers_count_list = []  # 评论者粉丝数
            for data in datas:
                page_list.append(page)
                id_list.append(data['id'])
                dr = re.compile(r'<[^>]+>', re.S)  # 用正则表达式清洗评论数据
                text2 = dr.sub('', data['text'])
                text_list.append(text2)  # 评论内容
                time_list.append(trans_time(v_str=data['created_at']))  # 评论时间
                like_count_list.append(data['like_count'])  # 评论点赞数
                source_list.append(data['source'])  # 评论者IP归属地
                user_name_list.append(data['user']['screen_name'])  # 评论者姓名
                user_id_list.append(data['user']['id'])  # 评论者id
                user_gender_list.append(tran_gender(data['user']['gender']))  # 评论者性别
                follow_count_list.append(data['user']['follow_count'])  # 评论者关注数
                followers_count_list.append(data['user']['followers_count'])  # 评论者粉丝数
            df = pd.DataFrame(
                {
                    'max_id': max_id,
                    '微博id': [weibo_id] * len(time_list),
                    '评论页码': page_list,
                    '评论id': id_list,
                    '评论时间': time_list,
                    '评论点赞数': like_count_list,
                    '评论者IP归属地': source_list,
                    '评论者姓名': user_name_list,
                    '评论者id': user_id_list,
                    '评论者性别': user_gender_list,
                    '评论者关注数': follow_count_list,
                    '评论者粉丝数': followers_count_list,
                    '评论内容': text_list,
                }
            )
            if os.path.exists(v_comment_file):  # 如果文件存在,不再设置表头
                header = False
            else:  # 否则,设置csv文件表头
                header = True
            # 保存csv文件
            df.to_csv(v_comment_file, mode='a+', index=False, header=header, encoding='utf_8_sig')
            print('结果保存成功:{}'.format(v_comment_file))

if __name__ == '__main__':
    weibo_id_list = ['4907031376694279', ]  # 指定爬取微博id,可填写多个id
    max_page = 1  # 爬取最大页数
    comment_file = '数据评论.csv'
    # 如果结果文件存在,先删除
    if os.path.exists(comment_file):
        os.remove(comment_file)
    # 爬取评论
    get_comments(v_weibo_ids=weibo_id_list, v_comment_file=comment_file, v_max_page=max_page)

爬取结果:

python爬取微博评论,python,爬虫,数据库,Python学习,Python编程,Python爬虫

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

python爬取微博评论,python,爬虫,数据库,Python学习,Python编程,Python爬虫

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

python爬取微博评论,python,爬虫,数据库,Python学习,Python编程,Python爬虫
python爬取微博评论,python,爬虫,数据库,Python学习,Python编程,Python爬虫

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!python爬取微博评论,python,爬虫,数据库,Python学习,Python编程,Python爬虫

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

python爬取微博评论,python,爬虫,数据库,Python学习,Python编程,Python爬虫

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

python爬取微博评论,python,爬虫,数据库,Python学习,Python编程,Python爬虫

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

python爬取微博评论,python,爬虫,数据库,Python学习,Python编程,Python爬虫

六、面试宝典

python爬取微博评论,python,爬虫,数据库,Python学习,Python编程,Python爬虫

python爬取微博评论,python,爬虫,数据库,Python学习,Python编程,Python爬虫文章来源地址https://www.toymoban.com/news/detail-842172.html

简历模板python爬取微博评论,python,爬虫,数据库,Python学习,Python编程,Python爬虫
python爬取微博评论,python,爬虫,数据库,Python学习,Python编程,Python爬虫 若有侵权,请联系删除

到了这里,关于Python爬虫—爬取微博评论数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【爬虫实战】用python爬取微博任意关键词搜索结果、exe文件

    项目功能简介: 1.交互式配置; 2.两种任意来源(直接输入、本地文件); 3.自动翻页(无限爬取); 4.指定最大翻页页码; 5.数据保存到csv文件; 6.程序支持打包成exe文件; 7.项目操作说明文档; 一.最终效果 视频演示: 用python爬取微博搜索结果、exe文件

    2024年02月02日
    浏览(70)
  • python学习:爬虫爬取微信公众号数据

    参考: https://blog.csdn.net/qq_45722494/article/details/120191233 1、登录微信公众平台 这里我注册了个微信公众号 点击图文消息 点击超链接 搜索要爬取的公众号名称 获取appmsg?action… 上述第一步可以获取到cookie、fakeid、token、user_agent等,编辑成wechat.yaml文件,如下所示 代码如下: 因为阅读

    2024年01月24日
    浏览(50)
  • 大数据舆情评论数据分析:基于Python微博舆情数据爬虫可视化分析系统(NLP情感分析+爬虫+机器学习)

    基于Python的微博舆情数据爬虫可视化分析系统,结合了NLP情感分析、爬虫技术和机器学习算法。该系统的主要目标是从微博平台上抓取实时数据,对这些数据进行情感分析,并通过可视化方式呈现分析结果,以帮助用户更好地了解舆情动向和情感倾向。系统首先利用爬虫技术

    2024年04月15日
    浏览(45)
  • Python基于大数据的微博的舆情分析,微博评论情感分析可视化系统(V2.0),附源码,数据库

    博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w+、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 2022-2024年最全的计算机软件毕业设计选

    2024年03月16日
    浏览(56)
  • 爬取微博热搜榜并进行数据分析

    :爬取微博热搜榜数据。 用requests库访问页面用get方法获取页面资源,登录页面对页面HTML进行分析,用beautifulsoup库获取并提取自己所需要的信息。再讲数据保存到CSV文件中,进行数据清洗,数据可视化分析,绘制数据图表,并用最小二乘法进行拟合分析。 :通过观察页面HT

    2024年02月15日
    浏览(54)
  • 爬虫 | Python爬取微博实时热搜榜信息

    大家好,我是程序员晓晓~ 本期给大家分享一下如何 用python获取微博热搜榜 信息,包含 爬取时间、序号、、热度 等信息,希望对大家有所帮助。 所有内容仅供参考,不做他用。 1. 网页分析 目标网址(微博热搜榜): https://s.weibo.com/top/summary 实时热搜榜一共有50条,每个

    2024年02月02日
    浏览(58)
  • 【Python】爬虫练习-爬取豆瓣网电影评论用户的观影习惯数据

    目录 前言 一、配置环境 1.1、 安装Python 1.2、 安装Requests库和BeautifulSoup库 1.3.、安装Matplotlib 二、登录豆瓣网(重点) 2.1、获取代理 2.2、测试代理ip是否可用 2.3、设置大量请求头随机使用 2.4、登录豆瓣网 三、爬取某一部热门电影数据 3.1、爬取全部长、短评论 3.2、获取用户

    2024年02月09日
    浏览(48)
  • python爬虫爬取微信公众号的阅读数、喜爱数、文章标题和链接等信息

    爬虫的步骤: (1)申请自己的公众号 (2)使用fiddler抓包工具 (3)pycharm (一)申请公众号 官网:微信公众平台 填入相关信息创建微信公众号 进入公众号界面如下: 找到新的创作-图文信息 在弹出的界面中查找公众号文章-输入公众号名称-确定 点击确认之后,进入公众号

    2024年02月05日
    浏览(58)
  • python爬取微信小程序数据,python爬取小程序数据

    大家好,小编来为大家解答以下问题,python爬取微信小程序数据,python爬取小程序数据,现在让我们一起来看看吧! 最近需要获取微信小程序上的数据进行分析处理,第一时间想到的方式就是采用python爬虫爬取数据,尝试后发现诸多问题,比如无法获取目标网址、解析网址中

    2024年02月04日
    浏览(47)
  • Python如何运用爬虫爬取京东商品评论

    打开京东商品网址(添加链接描述) 查看商品评价 。我们点击评论翻页,发现网址未发生变化,说明该网页是动态网页。 我们在 浏览器右键点击“检查” ,,随后 点击“Network” ,刷新一下,在搜索框中 输入”评论“ ,最终找到 网址(url) 。我们点击Preview,发现了我们需要

    2024年02月07日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包