Scrapy在爬虫开发领域是非常不错的一款框架,如果要从事爬虫开发那么这款框架一定要非常熟悉,尽管在实际开发中可能用不上,但是其中的架构思想也能让自己写的爬虫质量有不一般的提升。
Scrapy框架应该掌握的几条命令:
CMD命令行界面执行 scrapy shell [url]
该条命令常用于scrapy开发前的测试,如:scrapy shell
执行完该条命令后可运行,view(response)将用默认浏览器打开下载的URL页面。
Scrapy startproject [name]
该条命令用于创建一个Scrapy框架开发的项目文件,后接项目名
scrapy genspider [name] [domain]
创建项目后进入项目文件夹,执行该命令快速创建爬虫程序,后接爬虫名、爬去站点的域名,将在spiders文件夹下生成一个基本框架的爬虫程序。
scrapy crawl [name] -o [file]
该条命令是运行name名字的爬虫,并将数据保存为file,注意file是带格式的文件名,目前支持json、json lines、csv、xml、pickle、marshal。
上面命令是使用频率最高的命令,记住他们可以事半功倍。
scrapy的框架结构
scrapy框架分功能模块分为内部组件、用户实现、可选组件,数据分为requests(请求)、response(响应)、Items(提取的数据),三种数据在各个功能组件之间流动,从而实现了页面的下载——解析——再下载的循环过程。
其工作过程:
-
用户编写爬虫主程序将需要下载的页面请求requests递交给引擎
-
引擎将请求转发给调度(调度实现了优先级、去重等策略)
-
调度从队列中取出一个请求,交给引擎转发给下载器(引擎和下载器中间有中间件,作用是对请求加工如:对requests添加代理、ua、cookie,response进行过滤等)
-
下载器取回页面后,交由引擎转发给爬虫主程序解析,这个时候解析函数将产生两类数据,一种是items、一种是requests(新请求),其中requests按上面步骤交给调度器;items交给数据管道(数据管道实现数据的最终处理)
scrapy框架再我们自定义开发中,具有很好的参考作用,其中高可扩展性、低耦合值得深入学习。
同时本月的写作主题是scrapy框架,由浅入深、横向整合,力求让读者形成完整的知识框架。