Python2-Scrapy学习(三)
继续学习scrapy,这次学习如何将数据进行存储。
在Python2-Scrapy学习(二)学习如何通过xpath获取数据,接下来通过MongDB or MySQL将数据进行保存。
scrapy数据存储
freebuf搜索信息爬取
上一章中爬取的数据为freebuf首页的资讯,这次爬取freebuf搜索所产生的数据。Ps:上一章通过HTTP进行访问,这次直接通过HTTPS就不需要考虑COOKIE的问题。
由于搜索返回的是json,因此不需要使用xpath,直接使用json进行解析即可获取数据。这里就直接贴上爬取代码:
1 | # -*- coding: utf-8 -*- |
custom_settings
用于爬虫自定义设置,该优先级大于项目设置。这里设置使用pipelines.py文件中MongodbPipeline类对数据进行处理,优先级300(数字越小,优先级越高)。
数据处理
在piplines.py中我写了两个类:MongodbPipeline、MysqlPipeline,分别存储进MongoDB、MySQL。其中MongoDB已经测试,可完美进行存储;MySQL还未进行测试。
1 | # -*- coding: utf-8 -*- |
数据库配置
在项目settings.py文件需要定义数据库host、port、username、password等,直接在最后面加上配置信息即可。
1 | # MongDB Config |
总结
- 项目、爬虫本身都可以进行配置,爬虫本身所配置的优先级大于项目。优先级:Command line options (most precedence)> Settings per-spider> Project settings module> Default settings per-command> Default global settings (less precedence);
- 通过response.urljoin可将需要爬取的url添加至待爬取池,只要解析规则正确就可以将所需要的页面不断加入待爬取池;
- scrapy函数大部分都可以通过callback进行回调,yield进行资源控制超级棒;
- 感觉item.py文件利用的较少,应该还有我不知道的用途。