本文详细介绍了如何利用python实现微博评论的爬取,可以爬取指定微博下的评论。基于的策略是找到微博评论接口,先登录微博,获取cookies,使用requests库发送请求,并且将数据存储到.csv文件中。用到的库request,

首先微博的站点有四个,pc 端weibo.com、weibo.cn以及移动端m.weibo.com(无法在电脑上浏览)、https://m.weibo.cn。在网上大致浏览了一下,普遍都认为移动端爬取比较容易,故选择移动端https://m.weibo.cn进行爬取。

F12打开开发者模式,点击如下图选项,找到评论所在接口

找到接口以及文本内容之后,就是分析请求的url构造规律,找到第一个被请求数据的第一个url:

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

下拉页面,找到第存在目标数据的二个类似的url:

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

第三个url:

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

...

比较之后我们发现url 的构造字段为https://m.weibo.cn/comments/hotflow? 后面跟上 id=value & mid=vlaue & max_id=value,其中id和mid的值经分析是不会改变的,第一条url中无max_id,往后max_id的值都会发生改变。接着我们在浏览器开发者模式中查看请求返回的数据,例如第一个url请求返回的数据其中就包含max_id 的值且等于第二个url中max_id 的值

因此我们可以使用一个递归函数,将回去的max_id的值返回,用于构造下一次请求的url, 代码如下:

1 importrequests2 importrandom3 importtime4 importre5 importjson6 importcsv7

8 start_url = 'https://m.weibo.cn/comments/hotflow?id=4493649780161355&mid=4493649780161355&max_id_type=0' #首个url

9 next_url = '"https://m.weibo.cn/comments/hotflow?id=4493649780161355&mid=4493649780161355&max_id={}&max_id_type=0"' #用于构造后面的url的模板

10

11 continue_url =start_url12

13 headers ={14 'cookie': '', #传入你自己的cookie

15 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36',16 }17 count =018

19 fileHeader = ["id","评论时间","用户ID","昵称","评论楼层","评论内容"]20

21

22

23 defget_data(url):24 for trytime in range(3): #允许超时次数为3次

25 try:26 response = requests.get(url=url, headers=headers, timeout=5)27 data =json.loads(response.text)28 if response.status_code == 200:29 break

30 except:31 print('超时')32

33 if trytime == 2: #连续3次超时就退出递归

34 print('连续3次超时')35 return

36

37 if data['ok'] == 0: #若没有获取到数据也进行退出

38 print("获取到的数据data['ok']=", 0)39 return

40

41 elif data['ok'] == 1: #判断若能够获取到数据 则进行所需数据提取,并且构造下次请求的url,调用函数

42 max_id = data.get("data").get("max_id")43 comments = data.get('data').get('data')44 for item incomments:45 '''获取内容creattime;floor——number;text;userid;screen——name;'''

46 globalcount47 count += 1

48 create_time = item['created_at']49 floor_number = item['floor_number']50 text = ''.join(re.findall('[\u4e00-\u9fa5]', item['text'])) #匹配文本内容

51 userid = item.get('user')['id']52 screen_name = item.get('user')['screen_name']53

54 #将内容写入csv文件中

55 csv_opreator([count,create_time,userid,screen_name,floor_number,text])56

57 print([count, create_time, userid, screen_name, floor_number, text])58 print("第{}条数据获取成功".format(count))59

60 globalnext_url61 continue_url =next_url.format(str(max_id))62 print(continue_url)63 time.sleep(random.random()*5)64 get_data(continue_url) #调用函数本身

65 return

66

67 defcsv_opreator(a):68

69 with open("weibocoments.csv", "a") as f:70 writer =csv.writer(f)71 writer.writerow(a)72

73

74

75 if __name__ == "__main__":76 csv_opreator(fileHeader)77 get_data(continue_url)

后台输出如下:

csv文件结果如下:

可能遇到的问题,由于微博反爬,可先选择更换ip,或者重新登陆,将新的cookies复制进代码。

python爬取微博恶评_用python写网络爬虫-爬取新浪微博评论相关推荐

  1. python爬取微博恶评_详解用python写网络爬虫-爬取新浪微博评论

    新浪微博需要登录才能爬取,这里使用m.weibo.cn这个移动端网站即可实现简化操作,用这个访问可以直接得到的微博id. 分析新浪微博的评论获取方式得知,其采用动态加载.所以使用json模块解析jso ...

  2. python爬取微博恶评_python爬取微博评论的实例讲解

    python爬虫是程序员们一定会掌握的知识,练习python爬虫时,很多人会选择爬取微博练手.python爬虫微博根据微博存在于不同媒介上,所爬取的难度有差异,无论是python新入手的小白,还是已经 ...

  3. 用python写网络爬虫-爬取新浪微博评论

    新浪微博需要登录才能爬取,这里使用m.weibo.cn这个移动端网站即可实现简化操作,用这个访问可以直接得到的微博id. 分析新浪微博的评论获取方式得知,其采用动态加载.所以使用json模块解析jso ...

  4. python爬取微博恶评_Python爬取新浪微博评论数据,了解一下?

    开发工具 **Python版本:**3.6.4 相关模块: argparse模块: requests模块: jieba模块: wordcloud模块: 以及一些Python自带的模块. 环境搭建 安装 ...

  5. python微博评论爬虫_详解用python写网络爬虫-爬取新浪微博评论 基于Python的新浪微博爬虫研究...

    怎样爬取新浪微博的评论信息 针对八爪鱼在微博的应用上,除了用户信息之外还包括话题内容方面的采集,目前绝大多数企业均在微博设有官方微博,八爪鱼可以协助企业快速及时的抓取与企业产品相关联的话题信息,规则市 ...

  6. python爬取微博用户正文_基于Python的新浪微博用户信息爬取与分析

    基于 Python 的新浪微博用户信息爬取与分析 邓文萍 [摘 要] 摘要:本文设计并实现了一个微博用户信息爬取与分析系统 , 利用 Cookie 实现了用户的模拟登录 , 使用 Python 语言的 ...

  7. python抓取微博数据中心_空气质量数据网页爬虫加数据处理

    Python这门语言因其简单强大已经火了很久了,但我接触的比较晚,前几个月因为一篇博客开始初步了解这门语言,并且之后模仿某位北邮的前辈的微博写了一个新浪微博的爬虫 这里给出链接:python编写的新浪 ...

  8. python朋友圈动态_如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)

    前天给大家分享了如何利用Python网络爬虫爬取微信朋友圈数据的上篇(理论篇),今天给大家分享一下代码实现(实战篇),接着上篇往下继续深入. 一.代码实现 1.修改Scrapy项目中的items.py ...

  9. python抓取朋友圈动态_如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)...

    原标题:如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下) 前天给大家分享了如何利用Python网络爬虫爬取微信朋友圈数据的上篇(理论篇),今天给大家分享一下代码实现(实战篇),接着上篇往 ...

  10. python爬虫能爬取微信密码吗_如何利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例...

    今天我们继续focus on微信,不过这次给大家带来的是利用Python网络爬虫抓取微信好友总数量和微信好友男女性别的分布情况.代码实现蛮简单的,具体的教程如下. 相信大家都知道,直接通过网页抓取微信 ...

最新文章

  1. 马斯克入选美国工程院院士,张宏江博士入选外籍院士
  2. 【跟网上的大多数不一样】rstudio plot不显示图片了
  3. python packages limited ram_python import自己创建的框架下的子模块—pychram和cmd正确执行脚本的两种方法...
  4. [游戏模版21] Win32 物理引擎 能量守恒
  5. 根据dtd编写xml的小例子
  6. linux下json数据解析,Linux下使用jq简单解析json的方法
  7. ROS multi-master——multimaster_fkie配置
  8. C++vector容器-构造函数
  9. es删除数据_面试官是怎么来考察你对ES搜索引擎的理解?
  10. Zookeeper 终端命令
  11. apache开源项目--Lens
  12. linux命令行配置代理_Linux命令行乐趣,顶级配置工具,Kubeflow等
  13. [转载]如何学习ANSYS?
  14. vue.js引入外部CSS样式和外部JS文件的方法
  15. 用于旅行商问题的离散布谷鸟算法
  16. 物流车辆调度算法matlab,基于遗传算法的预拌混凝土车辆调度优化MATLAB源码
  17. Poker2  简单配置(方便于vim党)
  18. linux 查看CPU使用率
  19. C#笔试面试宝典值得收藏1
  20. These Days

热门文章

  1. 带表情字符插入mysql字段报错问题处理 Incorrect string value: ‘\xF0\xA5\x8C\x93\xE5\x85...‘ for column ‘nickName‘
  2. OpenGL ES 2 0 (iOS)[05 1]:进入 3D 世界,从正方体开始
  3. 5G基站耗电剑指4G基站水平,通过IMT-2020(5G)大会看5G发展趋势
  4. 重难点详解-关系代数表达式
  5. 深度学习神经网络训练调参技巧
  6. 使用usb tplink无线网卡搭建无线热点AP
  7. Android WIFI列表搜索及无线热点的开启和关闭
  8. 数字电路中几种基本门电路
  9. Android TV 认证简介
  10. eeepc linux 软件管理,Linux_为EeePC增添活力 EeePC安装Ubuntu预览,虽然Eee PC运行基于Xandros的Linux - phpStudy...