内容概要:
最近自己学习了一些爬虫,学习之余,写了一个新浪微博的爬虫。大规模爬数据没有试过,但是爬取几十万应该没有什么问题。爬虫爬取的站点是新浪移动端站点。github地址为:https://github.com/yz21606948/sinaSpider
第一次写文章,难免有疏忽,大家共同交流,共同进步。也请喜欢的朋友,在github上打个star
内容分为三章,第一张介绍scrapy,第二张分析爬取网站,第三章分析代码。
Fiddler工具
Fiddler是位于客户端和服务器端的HTTP代理,也是目前最常用的http抓包工具之一。它能够记录客户端和服务器之间的所有HTTP请求,可以针对特定的HTTP请求,分析请求数据、设置断点、调试Web应用、请求修改数据、甚至可以修改服务器返回的数据,功能非常强大,是WEB调试的利器。
既然是代理,也就是说:客户端的所有请求都要先经过Fiddler,然后转发到相应的服务器,反之,服务器端的所有相应,也都会先经过Fiddler然后发送到客户端。
分析新浪微博数据结构
首先我们登录微博可以看到Fiddler抓取的包:
其中点击 /api/container/getIndex?type=uid&value=6311254871&containerid=1005056311254871 HTTP/1.1我们可以看到微博获取个人信息的API接口,里面存放着json数据。
简单分析下JSON,我们可以知道里面存放着昵称、个性签名、微博数、关注数、粉丝数等个人信息。我们可以记录下我们需要的信息。
同理,我们通过不断分析Fiddler抓取的包可以得到微博内容的API,粉丝列表的API,关注者列表的API。里面依旧是JSON格式,我们从中记录下我们需要的信息。
编写Model层
刚刚我们记录下了各个API中我们需要抓取的信息,然后就可以在程序中编写我们的数据层了。scrapy是用Django编写的,他们的数据层基本是一样的,是由Django的ARM框架封装的。
类似于下图,我们把带抓取的数据格式写好:
把数据库配置好:
完成以上步骤就可以准备编写我们的爬虫代码了。
参考:
1、《Python网络数据采集》