预览地址:http://23.105.208.123/html
https://github.com/MasakiOvO/...python
requests,BeautifulSoup,redis,djangogit
两个程序。github
维护 两个列表 1.已爬用户 2.未爬用户
第一个程序的流程:redis
当未爬set不为空时:执行以下操做: 每次从未爬取列表中取出一个用户名 根据用户名,获取他的关注与粉丝并遍历,若是用户既没在已爬用户,也没在未爬用户 加入未爬用户列表。
第二个程序的流程django
每次从未爬set中取出一个用户名,调用接口获取详细信息并存入redis hash中
打开某我的的我的主页,按F12
选择XHR 而后点击图1的关注个人人,和我关注的人,在图2就能够看到header和cookie。json
获取用户列表Api:api
https://www.zhihu.com/api/v4/...{username}/{type}?include=data[*].answer_count,articles_count,gender,follower_count,is_followed,is_following,badge[?(type=best_answerer)].topics&offset=20&limit=20
username 是用户名,
type 是类型, 有两种可选 [followers,followees], followers是粉丝 followees是关注
改变offset的值能够获取分页cookie
获取我的信息Api:echarts
https://www.zhihu.com/people/...
user_token是用户名
这个api中 返回的是html页面,在html页面中有一个scirpt标签里面的内容是json格式的用户信息,这就很方便了,直接获取键值对 对应的属性就ok。
F12查看接口,把header和cookie放进requests.get()方法中。
剩下的就很简单了,不赘述了。
还有不少优化的地方。好比加入中间件,来提高爬虫的稳定性。对数据进行分类,统计城市分布。