当前位置 博文首页 > AI19970205的博客:我用Python抓取了吴某微博事件的热评,边聊技

    AI19970205的博客:我用Python抓取了吴某微博事件的热评,边聊技

    作者:[db:作者] 时间:2021-07-28 11:56

    大家好,我是辣条。

    之前有写过一篇爬取微博热评的文章,奈何最近吴某的瓜实在太大了,全网都关注着这件事,直到昨天官方【公安部门】出来说明,这一事件有了小句号,今天和大家聊聊抓取微博热评,顺便了解此次事件来龙去脉。

    爬取目标

    网址:微博

    在这里插入图片描述?

    效果展示

    在这里插入图片描述

    工具使用

    开发环境:win10、python3.7

    开发工具:pycharm、Chrome

    工具包:requests、re,csv

    项目思路解析

    找到需要吃瓜的文章

    在这里插入图片描述

    请求头需要带上的基本配置数据

    headers = {
     ? ?"referer": "",
     ? ?"cookie":"",
     ? ?"user-agent": ""
    }

    找到文章动态提交的评论数据

    在这里插入图片描述

    通过抓包工具找到对应的评论数据信息

    在这里插入图片描述

    微博的url会有一个文章id,mid也是文章id, max_id是每个json数据里面的max_id,是没有规律的

    https://m.weibo.cn/comments/hotflow?id=4661850409272066&mid=4661850409272066&max_id=5640809315785878&max_id_type=0

    在这里插入图片描述

    取出当前的max_id,就会获取到下个页面的请求接口

    简易源码分析

    import csv
    import re
    import requests
    import time
    ?
    start_url = "https://m.weibo.cn/comments/hotflow?id=4661850409272066&mid=4661850409272066&max_id_type=0"
    next_url = "https://m.weibo.cn/comments/hotflow?id=4638585665621278&mid=4661850409272066&max_id={}&max_id_type=0"
    continue_url = start_url
    headers = {
     ? ?"referer": "https://m.weibo.cn/detail/4638585665621278",
     ? ?"cookie": "SUB=_2A25Nq-BcDeRhGeBG7VUW-SnEyjyIHXVvV4AUrDV6PUJbkdAKLULFkW1NRhXYfC2JIAilAAFJ_-2diWZ1ZEACRZ5K; SCF=AgGUxHxg_ZjvVbYikCOVICTc-a4gDcEtR02fexDZstBq_XKr3s1Rp9CxdS4y4k4IvDQ2eIgTTyJg73pcUmvYRKc.; _T_WM=58609113785; WEIBOCN_FROM=1110006030; MLOGIN=1; M_WEIBOCN_PARAMS=oid%3D4638585665621278%26luicode%3D20000061%26lfid%3D4638585665621278%26uicode%3D20000061%26fid%3D4638585665621278; XSRF-TOKEN=06ed3f",
     ? ?"user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"
    }
    count = 0
    ?
    def csv_data(fileheader):
     ? ?with open("wb1234.csv", "a", newline="")as f:
     ? ? ? ?write = csv.writer(f)
     ? ? ? ?write.writerow(fileheader)
    ?
    ?
    def get_data(start_url):
     ? ?print(start_url)
     ? ?try:
     ? ? ? ?response = requests.get(start_url, headers=headers).json()
     ? ? ? ?max_id = response['data']['max_id']
     ? ?except Exception as e:
     ? ? ? ?get_data(start_url.split("type")[0] + "type=1")
    ?
     ? ?else:
     ? ? ? ?# max_id = response['data']['max_id']
     ? ? ? ?content_list = response.get("data").get('data')
     ? ? ? ?for item in content_list:
     ? ? ? ? ? ?global count
     ? ? ? ? ? ?count += 1
     ? ? ? ? ? ?create_time = item['created_at']
     ? ? ? ? ? ?text = "".join(re.findall('[\u4e00-\u9fa5]', item["text"]))
     ? ? ? ? ? ?user_id = item.get("user")["id"]
     ? ? ? ? ? ?user_name = item.get("user")["screen_name"]
     ? ? ? ? ? ?# print([count, create_time, user_id, user_name, text])
     ? ? ? ? ? ?csv_data([count, create_time, user_id, user_name, text])
    ?
     ? ? ? ?global next_url
     ? ? ? ?continue_url = next_url.format(max_id)
     ? ? ? ?time.sleep(2)
     ? ? ? ?get_data(continue_url)
    ?
    ?
    if __name__ == "__main__":
     ? ?fileheader = ["id", "评论时间", "用户id", "user_name", "评论内容"]
     ? ?csv_data(fileheader)
     ? ?get_data(start_url)

    往期推送:


    我用Python修改了班花的开机密码,重新登录后竟然发现了她的秘密!

    我用Python采集了班花的空间数据集,除了美照竟然再一次发现了她另外的秘密!

    室友单恋班花失败,我爬了一个网站发给他瞬间治愈,男人的快乐就这么简单【每天一遍,忘记初恋】

    cs