2.9.3.1Python-框架_Scrapy

总目录:https://blog.csdn.net/qq_41106844/article/details/105553392

Python-爬虫 - 子目录:https://blog.csdn.net/qq_41106844/article/details/105553319

 

 

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

 

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

 

scrapy的架构

 

 
20155953-514b37c64ddb151f.png
架构图

角色

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

 
20155953-faa65592cf5d7fae.png
 

命令

创建项目

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后的笔记:

 
20155953-ba92b9076bb49a17.png
 
 
20155953-348b54727fe28818.png
 
 
20155953-f225a50f2c2f6b63.png
 
 
20155953-8c9ef2da5d416f86.png
 
 
20155953-c2641a41e1e06c99.png
 
 
20155953-cd2f84ba91420b68.png
 
 
20155953-c66c934b12fab71d.png
 
 
20155953-b31da5914caca368.png
 
 
20155953-9861a8575c4585d9.png
 

爬取囧百的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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寒 暄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值