Scrapy 爬虫框架
1. 概述
Scrapy是一个可以爬取网站数据,为了提取结构性数据而编写的开源框架。Scrapy的用途非常广泛,不仅可以应用到网络爬虫中,还可以用于数据挖掘、数据监测以及自动化测试等。Scrapy是基于Twisted的异步处理框架,架构清晰、可扩展性强,可以灵活完成各种需求。
在Scrapy的工作流程中主要包括以下几个部分:
§ Scrapy Engine(框架的引擎):用于处理整个系统的数据流,触发各种事件,是整个框架的核心。
§ Scheduler(调度器):用于接收引擎发过来的请求,添加至队列中,在引擎再次请求时将请求返回给引擎。可以理解为从URL队列中取出一个请求地址,同时去除重复的请求地址。
§ Downloader(下载器):用于从网络下载Web资源。
§ Spiders(网络爬虫):从指定网页中爬取需要的信息。
§ Item Pipline(项目管道):用于处理爬取后的数据,例如数据的清洗、验证以及保存。
§ Downloader Middlewares(下载器中间件):位于Scrapy引擎和下载器之间,主要用于处理 引擎与下载器之间的网络请求与响应。
§ Spider Middlewares(爬虫中间件):位于爬虫与引擎之间,主要用于处理爬虫的响应输入和请求输出。
§ Scheduler Middlewares(调度中间件):位于引擎和调度之间,主要用于处理从引擎发送到调度的请求和响应。
2. 搭建Scrapy爬虫框架
本人的系统环境是macOS,第三方开发工具PyCharm,在terminal下输入命令"pip install scrapy"。
liuxiaowei@MacBookAir spiders % pip install scrapy
说 明
Scrapy框架在安装的过程中,同时会将lxml与pyOpenSSL模块也安装在Python环境当中。
3. Scrapy的基本应用
3.1 创建Scrapy项目
在指定(也可以是任意路径)的路径下创建一个保存项目的文件夹,例如,在“/Users/liuxiaowei/PycharmProjects/爬虫练习/Scrapy爬虫框架“内运行命令行窗口,然后输入”scrapy startproject scrapyDemo“,即可创建一个名称为”scrapyDemo“的项目,如下所示:
(venv) liuxiaowei@MacBookAir Scrapy爬虫框架 % scrapy startproject scrapyDemo
New Scrapy project 'scrapyDemo', using template directory '/Users/liuxiaowei/PycharmProjects/爬虫练习/venv/lib/python3.9/site-packages/scrapy/templates/project', created in:
/Users/liuxiaowei/PycharmProjects/爬虫练习/Scrapy爬虫框架/scrapyDemo
You can start your first spider with:
cd scrapyDemo
scrapy genspider example example.com
打开刚刚创建的scrapyDemo项目,项目打开以后,在左侧项目的目录结构中可以看到如下图所示的目录结构:
目录结构中的文件说明如下:
§ spiders(文件夹):用于创建爬虫文件,编写爬虫规则。
§ init 文件:初始化文件。
§ items文件:用于数据的定义,可以寄存处理后的数据。
§ middlerwares文件:定义爬取时的中间件,其中包括SpiderMiddleware(爬虫中间件)、DownloaderMiddleware(下载中间件)
§ pipelines文件:用于实现清洗数据、验证数据、保存数据。
§ settings文件:整个框架的配置文件,主要包含配置爬虫信息,请求头、中间件等。
§ scrapy.cfg文件:项目部署文件,其中定义了项目等配置文件路径等相关信息。
接下文 Scrapy 爬虫框架(二)https://developer.aliyun.com/article/1618013