爬取知乎回答点赞数_python3 爬虫 之只需要问题id爬取知乎问题全部回答

本文介绍了如何通过模拟Ajax请求动态加载数据,从知乎问题页面爬取答案。首先,分析了网页滚动加载时的动态请求URL规律,然后使用Json解析动态获取的数据。通过监控网络请求,发现请求URL中变化的部分,以此构建爬取循环。最后,展示了代码实现过程,包括请求、解析和判断数据是否爬取完毕的步骤。只需替换问题ID,即可应用于其他知乎问题的爬取。
摘要由CSDN通过智能技术生成

先打个定心丸,本文所需要的技术点真的不难,我本来想要直接放代码的,但发现这次的不像之前写过的《Python3 + 教你只需要网易云音乐id + 爬取全部评论 + 生成词云图》那样需要解码,所以这次想一步一步来教你实现。

首先要明白的一点

现在大多数网站在返回数据时,并没有一下子返回全部的数据,而是通过Ajax分批返回数据,所以我们可以利用这一点,找到触发返回数据的规律,获取动态返回的数据。

获取动态请求数据的url

打开一个知乎多一点回答的问题:

8431e0e75ec5c421b1d12e2e6346a07b.png

向下滑动查看回答,注意右侧浏览器的滚动条,它每次滑动到距离顶部一定的距离会向上返回一点距离,此时就是在动态加载回答数据了:

7079905317c73bf3dcab49e796ae810b.gif

按F12查看上一步浏览器之怎么把数据动态请求数据的:

51e73329a747e631fbecfb56555f9ad2.gif

通过观察得到,当浏览器滚动条滚动到距离底部一定的距离会动态请求下面箭头所指的链接并加载数据,而且只有红色矩形的数字变化(一次增加5):

e7ff51b3d680cd0c4bee5bc26bce5f9a.png

通过观察上面图片中的的红色矩形,发现整个请求url只有红色矩形的数字按每次增加5在变化,这样我们就获取到我们想要的请求url了:

68a514691496e5d2dcf099f26da1cf66.png

探索下动态请求的url,有小惊喜

在浏览器中打开上面的链接:

71277f96e9e1959fcbddb526ac0bd9df.png

数据很乱怎么办?没事,我们有Json在线解析与格式: https://www.json.cn/ :

093a13efd281a0455de4585dde828a0c.png

发现个”小惊喜“,可以判断请求的数据是否请求完,稍微做下判断就可以动态爬取数据了,当然你可以根据前面说的没请求一次就增加5来实现,但是我还是喜欢前者:

c6e14f53c96889a7ef7b21f3b3d92ac0.png

开始编码

先写一个模拟前面把url复制到浏览器中请求的函数:

c76792b48d9eb513200f420569099566.png

再写一个解析数据的函数:

da86d94bd8a8a301908841229f6e5e40.png

然后再写一个判断是是否爬取完数据、获取下个url的函数:

5b941f8475ae225a5b630ad4c2058b11.png

真正开始爬取:

715d4f261830cd0dc3af27d46312e8c7.png

写在后面,本文主要是带大家走一遍流程,如果需要爬取其他的问题直接换问题的id就可以了。源码可以点击下面的拓展连接查看GitHub,最后喜欢的可以点个赞啥的和关注我一起学习python相关技术。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值