这个例子是【爬虫工程师课程】中的一个实战,这里简单介绍下。
记得以前说过,爬虫有三步:获取源码、解析源码、储存数据。首先看看知乎的数据在哪里。
一、分析网页请求
以轮子哥为例,vczh,当我们禁用JS加载后,网页只有3条数据(属于lazy load),那么需要寻找数据
老规矩,打开开发者工具,找到翻页相关,数据都在这里
https://www.zhihu.com/api/v4/members/excited-vczh/followees?include=data%5B*%5D.answer_count%2Carticles_count%2Cgender%2Cfollower_count%2Cis_followed%2Cis_following%2Cbadge%5B%3F(type%3Dbest_answerer)%5D.topics&offset=40&limit=20
去除无用参数,是这样
offset 后面的数值就是翻页了。但是直接使用requests,会返回错误,我们把请求头拿出来看看
知乎的多了 authorization 和 X-UDID ,进过测试 authorization 是必要参数,所以构造就很简单了。
未登录和已登录情况下的 authorization 数值不同,进过多次错误,我发现必须使用已经登录下的 authorization 。
写这个爬虫我错误了无数次~
二、翻页构造
弄清楚请求就很简单了,翻页使用format函数
三、数据储存
我们打开这些数据,发现是json,那么就很简单,可以直接保存,不需要对网页数据进行解析。
然后可以对数据可视化
咳咳,为什么我关注了这么多男性
更有趣的是,打开轮子哥的粉丝列表,两者对比
关注了:
https://www.zhihu.com/api/v4/members/excited-vczh/followees?offset=20&limit=20
关注者:
https://www.zhihu.com/api/v4/members/excited-vczh/followers?offset=20&limit=20
有趣吧,通过这种方法,可以达到对知乎用户的爬取,前人说过很多,这里就不说了。
希望本文可以帮助你,像这种加载方式还有微博、头条。很久以前,萌新曾经提过一个问题,就是头条爬取,现在看来就很简单了。
如果想要爬虫源码,来公众号“萌新的学习日记”,回复“知乎”即可。