简单爬取微博评论详细解析,学习爬取ajax异步数据交换动态网页

爬取微博评论详细解析,学习爬取ajax异步数据交换动态网页

1.什么是ajax异步数据交换网页

简单来说,就像微博评论一样,你获取新的内容不需要翻页,一直在固定的一个网页不断往下拉就行,手机端和电脑端都是如此;这样的网页用,把信息不断地数出在同一个网页上地技术就是ajax,具体地不必再说,直接切入爬取正题。

2.用到的工具模块和简单解释

1.爬虫主要模块 requests模块
2.用于计时的time模块
3.用于随机获取指定内容的random模块
当然,time模块和random模块可以不需要,就能完成所有爬取功能。
不过,使用Time 是可以看一下爬取耗时,如果耗时太久想办法优化,也可以用于延迟程序运行一小段时间(就是创造爬取间隔时间),使用random是为了构造user-agent池。延迟程序运行一小段时间和构造user-agent 池都是为了防止微博发现你在爬取评论,微博反爬能力还是强的,我刚开始没用的程序延迟的时候,老是被反爬,被反爬的时候不仅爬取不到信息,连你网页上的评论也不给你看了,要等十几分钟才能恢复。
我在爬取很多条博客的时候,亲身实验,每一页爬取时间间隔在1-2s,爬取效果比较稳妥,使用user-agent池 交替更换user-agent 就可以缩短爬取时间间隔至0-1s。

3.网页内容解析

1.我爬的是移动端微博,微博主页网页https://m.weibo.cn
2.随便选取一条评论数较多的微博,点进去(我随便找了一篇7000多评论的)
在这里插入图片描述
3.解析第一步 f12 ,你懂的。。。找到network,再找到XHR,点进去。(XHR存放的就是通过ajax方式传递信息的文本,这些文本也是网页,网页内容是标准的json(json可以理解为str化的字典)
在这里插入图片描述
4.在这个页面上,光标移到左边的网页不断往下拉看评论,使劲拉到,左边的XHR里面就会产生新的文件,没错这些就是不断呈现给网页的评论数据了(上衣张图还是只有一个文件,现在有好多)
在这里插入图片描述
5.每一个文件装有一定数量的评论信息(你可以观察很多文件是重复的,不必理会),可以点进去双击具体查看内容,这就是我们爬取的目标了。要爬取所有评论,当然要爬取完所有的这些文件(也就是网页),现在问题是,我们怎么获取这些网页的链接呢,不可能一直拉下去拉到头呀,就算你想拉下去让他们全部刷新也要花好久。

6.怎么找到所有链接呢?注意看我红色圈圈的两条,它们后面有两串数字,mid=xxxxxx,和max_id=xxxxxxx,还有一个max_id_type,两个链接的mid是相同的(因为它是这篇博文的id,这篇博文的所有mid当然相同),max_id是不相同的,(max_id_type这两条都是0,但是后面的不一定是),所以所有这些链接的区别仅仅是max_id和max_id_type的数值了,现在就要去找它们的关系。

7.大胆猜测一下,上一条链接必定存储着怎么打开下一个链接的信息,也就是max_id和max_id_type。点开一个链接的priview可以大致查看它的信息。
在这里插入图片描述
点开小箭头:
在这里插入图片描述
一点开就会发现下一条链接的信息了。所以目标就是爬取这一条链接评论的信息的时候,记录下一条信息的max_id和max_id_type

8.找到了不断爬取的方式,那现在就要来找到我们爬取的主要内容,还是在上一张图的priview中不断点开小箭头查去更多内容。
在这里插入图片描述
在这里插入图片描述
上面两个图分别可以看出,一个链接包含19条信息,再点开一条信息看看,发现它包含评论和评论者的各种信息,都可以爬取。我这里只需要评论内容 也就是text的内容了。

9.网页解析完毕,那怎么提取这个text的内容呢?
刚才讲过,它是一个json格式的str字典(层层叠叠的字典,字典里包含着子字典),requests模块可以直接将它转化为python字典(具体看待会的代码)。按照我们的查看方式,依次是data、data、数字0、text,从后面跟着的{}、[],就可以分别出它们各自的类型分别是字典、列表、字典,text为数字0的key,评论内容为相应的value在这里插入图片描述

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值