一、前期工作
1.1 爬取目标
爬取的目标是新浪微博用户的公开基本信息,如用户昵称、头像、用户的关注、粉丝列表以及发布的微博等
1.2 准备工作
代理池、 Cookies 池已经实现并可以正常运行,安装 Scrapy 、PyMongo 库
1.3 爬取思路
首先我们要实现用户的大规模爬取。 这里采用的爬取方式是,以微博的几个大 V 为起始点,爬取他们各内的粉丝和关注列表,然后获取粉丝和关注列表的粉丝和关注列表,以此类推,这样下去就可以实现递归爬取。 如果一个用户与其他用户有社交网络上的关联,那他们的信息就会被爬虫抓取到,这样我们就可以做到对所有用户的爬取 。 通过这种方式,我们可以得到用户的唯一 ID ,再根据 ID 获取每个用户发布的微博即可。
1.4 爬取分析
爬取的站点是https://m.weibo.cn,此站点是微博移动端的站点,找到一个用户的主页面
在页面最上方可以看到她的关注和粉丝数量 。 我们点击关注,进入到她的关注列表
打开开发者工具,切换到XHR 过滤器,一直下拉关注列表,即可看到下方会出现很多人ajax请求,这些请求就是获取关注列表的 Ajax 请求.
- AJAX = 异步 JavaScript 和 XML。
- AJAX 是一种用于创建快速动态网页的技术。
- 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
打开第一个 Ajax 请求, 将其展开之后 即可看到其关注的用户的基本信息。接下来我们只需要构造这个请求的参数。其中最主要的参数就是 cont ainerid 和 page 。 有了这两个参数,我们同样可以获取请求结果 。 我们可以将接口精简为 :