Scrapy 2021/9/7
Scrapy是基于Twisted的异步处理框架
同步是按顺序执行,执行完一个再执行下一个,需要等待、协调运行。
异步就是彼此独立,在等待某事件的过程中继续做自己的事,不需要等待这一事件完成后再工作。
安装
pip install scrapy
若提示找不到win32api模块
pip install pypiwin32
架构
- Scrapy Engine:引擎,负责各组件之间通讯和数据的传递
- Scheduler:调度器(队列)负责接受引擎发送过来request请求,将请求排队。当引擎需要请求数据时,它将请求交给引擎。
- Downloader:下载器,负责发送请求并下载数据。
(Scheduler->Engine->Downloader),再将获取的Response交还给引擎,再交给爬虫解析器解析。 - Spiders:爬虫解析器,用于分析和提取数据。负责处理所有的Response。如果Response包含其他的请求(比如下一页的链接),spiders会把url提交给引擎(Spiders->Engine->Scheduler)
- Item Pipline:数据管道,负责处理Spiders中获取的数据,进行后续处理(过滤,存储等)
- Downloader Middlewares:下载中间件,封装代理,隐藏
- Spider Middlewares:Spider中间件,Engine和Spider通信功能的组件。
数据如何在Scrapy中流动
在Spiders中写一个入口url
Spiders(传递入口URL)->Engine->Scheduler(排入队列并传递队列)->Engine(拿到队列)->Downloader(下载,得到Response)->Engine->Spiders(解析都拿到数据)->Item Pipline(进行数据存储或清洗等)
若Downloader没有下载好:Downloader(反馈请求)->Engine->Scheduler(再次排队调度)
爬虫项目
创建项目:
scrapy startproject project_name
入手
创建目标spider文件
scrapy genspider project_name target_url
运行
scrapy crawl project_name