简单说明:最近大致了解了一下scrapy框架,爬取自己做了个测试,爬取了某个app上的数据(暂时不公开是哪个),完成了数据抓取,数据去重,数据存储,由于资金和技术水平问题,没有放到服务器上,也没有采用分布式。
前期准备
1. 手机抓包工具采用了fidder,使用方法见http://blog.csdn.net/wuzhiguo1314/article/details/49589227
2. 安装数据采集框架scrapy、键值对数据库redis、数据存储数据库mongodb
开始项目建立
1. scrapy startproject tutorial 新建一个项目
2. 在spider文件夹下新建出ExampleSpider文件
3. 用上面的手机抓包工具fidder工具,获取我们想要的数据网址,分析出我们需要传递的数据,包括头信息,cookie,agent等等
4. 编写ExampleSpider,抽取出我们想要的数据字段,获取新的数据网址,在itmes定义好想要的数据结构,通过添加新的访问,通过返回数据给pipline
5. 定义piplines
(1)去重pipline
去重采用了redis数据库,self.r = redis.Redis(host=’localhost’,port=6379,db=0)数据库初始化,如果键值对存在与数据库中self.r.exists(‘id:%s’ % item[‘mId’]),就引发DropItem异常,不进行该item的存储。代码如下:
(2) 数据存储pipline
经过筛选的item在这里进入到mongodb数据库中,有关服务器的设置在settings文件中,后面提到。mongodb数据库操作很简单,插入item的方法self.collection.insert(dict(item)),代码如下:
(3)settings中设置pipline,以及数据库的配置
6 . 动态更换agent
(1)定义一个middlewares.py
(2)setting 中设置下载中间件