首页 > 编程语言 >Python爬虫Scrapy框架是什么?

Python爬虫Scrapy框架是什么?

时间:2023-02-20 10:00:19浏览次数:34  
标签:请求 框架 Downloader Python 爬虫 Scrapy 取项

之前我们有谈到过有关爬虫的两种爬虫方式,一种是静态的利用Requests+bs4,而另一种就是利用Scrapy框架来进行的专业级的数据抓取。

一、什么是Scrapy框架?

那么什么是Scrapy框架呢?或者说这个框架有什么用呢?首先,大致字面意思是一个类似于框架的东西,一个大致的架子,我们只需要简单的添加一些东西即可。专业一点来说,它就是实现爬虫功能的一个软件结构和功能组件集合,爬虫框架是一个半成品,能够帮助用户实现专业的网络爬虫。

这里简单介绍一下Scrapy框架的5+2结构:

1、Engine(引擎):控制其它模块之间的数据流;根据条件触发事件(不需要用户修改)。

2、Downloader(下载器):根据请求下载网页(不需要用户修改) 。

3、Scheduler(调度器):对所有爬取请求进行调度管理(不需要用户修改)。

4、Spider(爬虫):解析Downloader返回的响应;产生爬取项(Scraped item);产生额外的爬取请求(request)(需要用户编写配置) 。

5、Item Pipelines(管道):以流水线方式处理Spider产生的爬取项,由一组操作顺序组成,类似流水线 ,每个操作是一个Item Pipline类型。可能操作包括:清理,检验和查重爬取项中的HTML数据 ,将数据存储到数据库(需要用户编写配置代码)。

中间件:

1、Spider Middleware:目的是对请求和爬取项的再处理。功能:修改,丢弃,新增 请求或爬取项(用户可以编写配置代码)

2、Downloader Middlewares(下载中间件):是一个可以自定义下载功能的组件。

二、框架之间结构的运行

简述各个框架之间的运行工作流程:

1、首先爬虫将需要发送请求的url(requests)经引擎交给调度器。

2、经Engine交给Scheduler,Scheduler排序处理后再由Engine,DownloaderMiddlewares(有User_Agent, Proxy代理)交给Downloader。

3、Downloader向互联网发送请求,并接收下载响应.将响应经ScrapyEngine,可选交给Spiders。

4、Spiders处理response,提取数据并将数据经Engine交给ItemPipeline保存。

5、Spider发现新的url经Engine再交给Scheduler进行下一个循环。直到无Url请求程序停止结束。

三、Scrapy和Requests之间的区别

Scrapy框架和Requests库的比较:

1、两者都可以进行页面请求和爬取,Python爬虫的两个重要技术路线。

2、两者可用性都好,文档丰富,入门简单。

3、两者都木有处理js,提交表单,应对验证码等功能(可扩展)。

Requests和Scrapy的详细区别:(如图)

 

标签:请求,框架,Downloader,Python,爬虫,Scrapy,取项
From: https://www.cnblogs.com/q-q56731526/p/17136345.html

相关文章

  • Pycharm cannot set up a python SDK
    一、问题背景进入Pycharm后,打开之前的项目,打开Pycharm→file→settings→projectinterpreter,按照下图1选择配置之后,点击【OK】会出现报错,如图2我的环境上有很多之前的包......
  • Python——while循环
    1.while循环结构格式:while条件:执行语句1……执行语句2……例:#无限循环死循环whileTrue:print('条件是真的!')例:i=0#创建一个计数的变量whi......
  • python基于telnet验证的交换机配置导出打包脚本
    前置条件python3.10需要在配置文件输入的主机上起一个tftp服务交换这里是锐捷交换机这里的认证协议是telnet需要准备一个交换机IP地址的文件供脚本读取代码部分im......
  • Python脚本:把本地文件实时更新到服务器上
    #如果没有安装paramiko,用pipinstallparamiko安装importparamiko,os,timedefupdate(addr,usr,pasw,fn,target_path):trans=paramiko.Transport((addr,......
  • 利用Python进行数据分析——Numpy
    基础索引1.多维度数组1.1二维数组此部分好理解,画一个平面的XY轴,X为横轴,Y为竖轴即可理解。1.2三维数组难点在于理解的是如何把抽象的数组转化为三维空间的数据结构。......
  • Python实现排序算法
    冒泡排序defbubbleSort(arr):foriinrange(len(arr)-1):forjinrange(len(arr)-1):ifarr[j]>arr[j+1]:arr[j],arr[j+1......
  • Python 异步: 同时运行多个协程(10)
    asyncio的一个好处是我们可以同时运行许多协程。这些协同程序可以在一个组中创建并存储,然后同时一起执行。这可以使用asyncio.gather()函数来实现。让我们仔细看看。1......
  • Python selenium
    目录selenium功能Python实现seleniumSelenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7,8,9,......
  • python中的类继承
    """"""classAnimal(object):def__init__(self,name,food):self.name=nameself.food=foodself.blood=100self.waise......
  • python中的数据模型
    参考:https://docs.python.org/zh-cn/3/reference/datamodel.html1. 对象、值与类型对象 是Python中对数据的抽象。Python程序中的所有数据都是由对象或对象间关系......