scrapy分页抓取网页(爬取的思路如下图(站点分析)的应用思路)
优采云 发布时间: 2022-03-20 08:20scrapy分页抓取网页(爬取的思路如下图(站点分析)的应用思路)
2021-05-16介绍
知乎用户信息量很大,本文为scrapy实战:如何抓取所有知乎用户信息。
爬取的思路如下图所示:
现场分析
本文以Brother Wheel为根节点(根节点可随意选择),打开Brother Wheel的关注列表,翻页查看关注列表:
翻页是一个 AJAX 请求,每页有 20 个关注用户和一些简短的用户信息
其中之一是 url-token,用于识别用户。在上面的截图中,用户的主页 url 是:
其中有url-token
项目实战
创建项目
思想分析
获取用户信息
首先,您需要获取用户的基本信息。可以通过请求类似以下的 url 来获取这些基本信息:
{url_token}/以下
而url_token可以在用户的关注列表中获取,上面url的页面是这样的
此外,还有赞数、采集数、感谢权
从上面的url获取到用户的基本信息后,下一步就是获取当前用户的关注列表:
获取用户关注列表
此列表具有翻页功能。经分析可知,关注列表的翻页是通过AJAX请求实现的。获取页面关注列表的url如下:
[*].answer_count%2Carticles_count%2Cgender%2Cfollower_count%2Cis_followed%2Cis_following%2Cbadge[%3F(type%3Dbest_answerer)].topics&offset=0&limit=20
提取规则:
{url-token}/followees?include={include}&offset={offset}&limit=2{limit}
其中包括:
数据[*].answer_count,articles_count,gender,follower_count,is_followed,is_following,badge[?(type=best_answerer)].topics
上面的url返回一个json,里面收录20个follower,响应数据如下图所示:
对于一个follower,我们只需要得到用户的url-token*,然后我们就可以通过url-token拼接出用户的主页,还可以得到用户的基本信息和follower列表。
获取到url-token后,我们需要判断是否有下一页,如果有则翻页,上图后半部分还有一个字段:
翻到当前最后一页,字段如下图:
因此,根据is_end字段可以判断是否关注了下一页的follower,利用next字段的值可以得到下一页的follower列表。
构思安排
所以呢?在解析用户基本信息的同时,我们可以得到用户的url_token,进而可以得到用户的follower列表。通过这种方式爬取,我们基本上可以得到所有知乎用户的所有基本信息。
源码和一些爬取的数据:
部分爬取的知乎用户数据
源代码
文章中已经引入了爬取知乎用户的思路。思路理清后,实现比较块。
主要是源码有点长,这里就不一一贴了。需要源码的同学可以通过文末获取
扫描下方二维码发送关键词“知乎”即可获取本文完整源码和详细程序评论
关注公众号:互联网求职面试、java、python、爬虫、大数据等技术,海量数据分享:在公众号后台回复“csdn库下载”即可领取【csdn】和【百度库】 ] 免费下载服务;公众号后台回复“数据”:可以获得5T优质学习资料、java面试考点和java面授总结,还有几十个java和大数据项目,资料很丰富完成,你几乎可以找到你想要的一切
分类:
技术要点:
相关文章: