2.9.3.1Python-框架_Scrapy

总目录:https://www.jianshu.com/p/e406a9bc93a9

Python-爬虫 - 子目录:https://www.jianshu.com/p/23cf57674bf1

文档:https://scrapy-chs.readthedocs.io/zh_CN/latest/intro/overview.html


我们就先说说  scrapy是个啥,原理是啥样的。


scrapy的架构


2.9.3.1Python-框架_Scrapy_第1张图片
架构图

角色

ScrapyEngine:引擎。负责控制数据流在系统中所有组件中流动,并在相应动作发生时触发事件。 此组件相当于爬虫的“大脑”,是 整个爬虫的调度中心。 

Schedule:调度器。接收从引擎发过来的requests,并将他们入队。初始爬取url和后续在页面里爬到的待爬取url放入调度器中,等待被爬取。调度器会自动去掉重复的url。

Downloader:下载器。负责获取页面数据,并提供给引擎,而后提供给spider。

Spider:爬虫。用户编些用于分析response并提取item和额外跟进的url。将额外跟进的url提交给ScrapyEngine,加入到Schedule中。将每个spider负责处理一个特定(或 一些)网站。 

ItemPipeline:负责处理被spider提取出来的item。当页面被爬虫解析所需的数据存入Item后,将被发送到Pipeline,并经过设置好次序

DownloaderMiddlewares:下载中间件。是在引擎和下载器之间的特定钩子(specific hook),处理它们之间的请求(request)和响应(response)。提供了一个简单的机制,通过插入自定义代码来扩展Scrapy功能。通过设置DownloaderMiddlewares来实现爬虫自动更换user-agent,IP等。

SpiderMiddlewares:Spider中间件。是在引擎和Spider之间的特定钩子(specific hook),处理spider的输入(response)和输出(items或requests)。提供了同样简单机制,通过插入自定义代码来扩展Scrapy功能。


数据流

1.ScrapyEngine打开一个网站,找到处理该网站的Spider,并向该Spider请求第一个(批)要爬取的url(s);

2.ScrapyEngine向调度器请求第一个要爬取的url,并加入到Schedule作为请求以备调度;

3.ScrapyEngine向调度器请求下一个要爬取的url;

4.Schedule返回下一个要爬取的url给ScrapyEngine,ScrapyEngine通过DownloaderMiddlewares将url转发给Downloader;

5.页面下载完毕,Downloader生成一个页面的Response,通过DownloaderMiddlewares发送给ScrapyEngine;

6.ScrapyEngine从Downloader中接收到Response,通过SpiderMiddlewares发送给Spider处理;

7.Spider处理Response并返回提取到的Item以及新的Request给ScrapyEngine;

8.ScrapyEngine将Spider返回的Item交给ItemPipeline,将Spider返回的Request交给Schedule进行从第二步开始的重复操作,直到调度器中没有待处理的Request,ScrapyEngine关闭。


安装

安装wheel支持:

pip install wheel

安装scrapy框架:

pip install scrapy

window下,为了避免windows编译安装twisted依赖,安装下面的二进制包 

pip install Twisted-18.4.0-cp35-cp35m-win_amd64.whl


创建

在某路径下创建scrapy项目

scrapy startproject project_name

进入项目

cd project_name

建立一个爬虫

scrapy genspider spider_name url

2.9.3.1Python-框架_Scrapy_第2张图片

命令

创建项目

scrapy startproject Project_name

创建爬虫

scrapy genspider Spider_name url

了解各类模板

scrapy genspider -l

运行爬虫

scrapy crawl Spider_name

检查代码是否有错误

scrapy check Spider_name

保存成本地文件

scrapy crawl field -o 文件名 -t 类型





下面是第一次系统学习scrapy后的笔记:

2.9.3.1Python-框架_Scrapy_第3张图片
2.9.3.1Python-框架_Scrapy_第4张图片
2.9.3.1Python-框架_Scrapy_第5张图片
2.9.3.1Python-框架_Scrapy_第6张图片
2.9.3.1Python-框架_Scrapy_第7张图片
2.9.3.1Python-框架_Scrapy_第8张图片
2.9.3.1Python-框架_Scrapy_第9张图片
2.9.3.1Python-框架_Scrapy_第10张图片
2.9.3.1Python-框架_Scrapy_第11张图片

爬取囧百的demo:

https://github.com/hanxuan-doco/python_pc/tree/master/Crawler/demo

爬取豆瓣电影的demo:

https://github.com/hanxuan-doco/python_pc/tree/master/Crawler/db_dy_demo

模拟登录的demo:
https://github.com/hanxuan-doco/python_pc/tree/master/Crawler/data_dl_demo

你可能感兴趣的:(2.9.3.1Python-框架_Scrapy)