[爬虫]抓取百万知乎用户数据之爬取思路

一.如何获取到用户的信息

前往用户主页,以轮子哥为例

从中可以看到用户的详细信息,教育经历主页,主修。所在行业,公司,关注量,回答数,居住地等等。打开开发者工具栏查看网络,即可找到,一般是html或者json这个数据在Html页面里。

URL为https://www.zhihu.com/people/excited-vczh/answers,excited-vczh是轮子哥的id,我们只要拿到某个人的Id就可以获取详细信息了。

二.信息藏在哪

对这个json数据进行解析,即可找到用户信息

根据URL下载Html页面,解析json就可以获取用户信息了

三.如何获取更多的用户Id

每个人都有自己的关注列表,关注的人和被关注的人,抓取这些人再到这些人主页去抓关注列表,这样就不抽找不到用户了

 

  这里还有nexturl,这个链接可以保存下来。如果isend为true的化就是列表翻到头了,url就不必保存下来

二.爬虫工作流程

有两个爬虫模块,一个爬虫负责重nexturl队列中得到url,下载json并解析,得到的nexturl插入哈希表,如果插入成功,加入队列

另外一个负责中urltoken队列获取urltoken,下载解析页面,将用户信息存入数据库,将nexturl存入nexturl队列

三.常见问题解决思路

 重复爬取问题

    解析得到的Urltoken肯定有大量的重复,高高兴兴获取很多数据,却发现都是重复的,那可不行。解决办法是对于已经加入队列的urltoken,都放到一张hash表进行标记

断点续爬

爬取百万用户是个比较大的工作量,不能保证一次性爬取完毕,对于中间数据还是要进行持久化,这里选用的是Redis数据库,对于爬取任务加入队列,如果程序中途停止,再次开启只需要重新在队列中获取任务继续爬起

反爬虫问题

抓取过于频繁,服务器返回429.这个时候需要切换代理IP了,我有过自建代理IP池,也有买过服务商提供的代理服务

多台机器共同爬取

任务比较大,借助实验室的电脑,一共有10台电脑,5台电脑装了Redis,3台做hash表,2台作队列

更多博客:https://www.cnblogs.com/zuin

转载于:https://my.oschina.net/u/3247166/blog/831320

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值