python爬取微博评论(无重复数据)
- 前言
- 一、整体思路
- 二、获取微博地址
- 1、获取ajax地址2、解析页面中的微博地址3、获取指定用户微博地址
- 三、获取主评论
- 四、获取子评论
- 1、解析子评论2、获取子评论
- 五、主函数调用
- 1、导入相关库2、主函数执行3、结果
- 写在最后
很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:961562169
Tip:本文仅供学习与交流,切勿用于非法用途!!!
前言
前段时间微博上关于某日记的评论出现了严重的两极分化,出于好奇的我想对其中的评论以及相关用户做一个简单的分析,于是我在网上找了相关的代码,简单的修改了cookies等参数就Run起来了。
既然没报错!! 我很震惊,从未若此畅快过~
随后便分析起来,过了一会就发现:事情并不简单,数据是重复的!!
没错,重复率如此之高,令人发指。于是,我开始了我的探索之路~
说明:整体代码还是借鉴了之前大佬的,主要是解决了数据重复的问题,如有侵权还请联系!
一、整体思路
思路也比较清楚,我画了一个极其简单的流程图:
至于这里为什么主评论和子评论要分开获取,这也是解决重复问题的关键,通过测试可以知道直接按照规律修改页面参数或者通过.cn的页面爬取,在到达一定的数量后(大概是几百)就无法得到数据或是出现数据重复。
二、获取微博地址
访问微博用户页面时的请求URL为:
https://weibo.com/xxxxxxxxx?is_search=0&visible=0&is_all=1&is_tag=0&profile_ftype=1&page=1
其中通过修改page参数,即可控制页码,但是细心的小伙伴应该发现了,一页的数据除了直接加载的HTML之外,还有两次是通过ajax动态获取的:
start_ajax_url1 = 'https://weibo.com/p/aj/v6/mblog/mbloglist?ajwvr=6&domain=%s&is_all=1&page={0}&pagebar=0&pl_name=Pl_Official_MyProfileFeed__20&id=%s&script_uri=/%s&pre_page={0}'%(domain,page_id,user) start_ajax_url2 = 'https://weibo.com/p/aj/v6/mblog/mbloglist?ajwvr=6&domain=%s&is_all=1&page={0}&pagebar=1&pl_name=Pl_Official_MyProfileFeed__20&id=%s&script_uri=/%s&pre_page={0}'%(domain,page_id,user)
也就是说,每页数据有三部分组成:
1、获取ajax地址
通过主界面,获取相应的ajax请求地址:
def get_ajax_url(user): url = 'https://weibo.com/%s?page=