首页 >  综合 >

scrapy官方文档(scrapy使用教程)

发布时间:2022-10-30 16:13:49阅读:

    今天澳航推介会小小来和大家谈一谈聊一聊关于scrapy官方文档(scrapy使用教程),以及scrapy和python有什么关系、用scrapy实现爬虫时,每个爬虫文件只能对应一个pipeline文件吗、scrapy如果要实现从上次中断的地方继续抓取怎么办、scrapy splash必须要用docker吗相关信息的知识内容,经过信息安排先从目录开始一个个讲解细说,希望对各位有所帮助,你们的支持就是我最大的动力,如果你想测算一下你的情况,那就测算一下,同时收藏一下本站,以下是小编对此问题的归纳整理,让我们一起来看看吧。

文章目录列表:

一、scrapy和python有什么关系

        Scrapy是Python开发的一个快速、高层次的web数据抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘和监测。

        Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等。

        Scrapy算得上是Python世界中最常用的爬虫框架了,同时它也是我掌握的几种流行语言中最好的爬虫框架,没有之一!我认为它也是最难学习的框架,同样没有之一。很多初学Scarpy的经常向我抱怨完全不清楚Scrapy该怎样入手,即使看的是中文的文档,也感到很难理解。我当初接触Scrapy时也有这样的感觉。之所以感到Scrapy难学,究其原因,是其官方文档实在太过凌乱,又缺少实用的代码例子,让人看得云里雾里,不知其所已然。虽然其文档不良,但却没有遮挡住它的光辉,它依然是Python世界中目前最好用的爬虫框架。其架构的思路、蜘蛛执行的效能,还有可扩展的能力都非常出众,再配以Python语言的简洁轻巧,使得爬虫的开发事半功倍。

        相关推荐:《Python基础教程》

        Scrapy的优点:

        (1)提供了内置的HTTP缓存,以加速本地开发。

        (2)提供了自动节演调节机制,而且具有遵守robots.txt的设置的能力。

        (3)可以定义爬行深度的限制,以避免爬虫进入死循环链接。

        (4)会自动保留会话。

        (5)执行自动HTTP基本认证。不需要明确保存状态。

        (6)可以自动填写登录表单。

        (7)Scrapy有一个内置的中间件,可以自动设置请求中的引用(referrer)头。

        (8)支持通过3xx响应重定向,也可以通过HTML元刷新。

        (9)避免被网站使用的meta重定向困住,以检测没有JS支持的页面。

        (10)默认使用CSS选择器或XPath编写解析器。

        (11)可以通过Splash或任何其他技术(如Selenium)呈现JavaScript页面。

        (12)拥有强大的社区支持和丰富的插件和扩展来扩展其功能。

        (13)提供了通用的蜘蛛来抓取常见的格式:站点地图、CSV和XML。

        (14)内置支持以多种格式(JSON、CSV、XML、JSON-lines)导出收集的数据并将其存在多个后端(FTP、S
3、本地文件系统)中。

        Scrapy框架原理

        Scrapy Engine(引擎):负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。

        Scheduler(调度器):负责接收引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。

        Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理,

        Spider(爬虫):负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器),

        Item Pipeline(管道):负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方.

        Downloader Middlewares(下载中间件):你可以当作是一个可以自定义扩展下载功能的组件。

        Spider Middlewares(Spider中间件):你可以理解为是一个可以自定扩展和操作引擎和Spider中间通信的功能组件(比如进入Spider的Responses;和从Spider出去的Requests)

        Scrapy各个组件介绍

        ·Scrapy Engine:

        引擎负责控制数据流在系统中所有组件中流动,并在相应动作发生时触发事件。它也是程序的入口,可以通过scrapy指令方式在命令行启动,或普通编程方式实例化后调用start方法启动。

        ·调度器(Scheduler)

        调度器从引擎接收爬取请求(Request)并将它们入队,以便之后引擎请求它们时提供给引擎。一般来说,我们并不需要直接对调度器进行编程,它是由Scrapy主进程进行自动控制的。

        ·下载器(Down-loader)

        下载器负责获取页面数据并提供给引擎,而后将网站的响应结果对象提供给蜘蛛(Spider)。具体点说,下载器负责处理产生最终发出的请求对象 Request 并将返回的响应生成 Response对象传递给蜘蛛。

        ·蜘蛛——Spiders

        Spider是用户编写用于分析响应(Response)结果并从中提取Item(即获取的Item)或额外跟进的URL的类。每个Spider负责处理一个特定(或一些)网站。

        ·数据管道——Item Pipeline

        Item Pipeline 负责处理被 Spider 提取出来的 Item。 典型的处理有清理、验证及持久化(例如,存取到数据库中)。

        ·下载器中间件(Downloader middle-wares)

        下载器中间件是在引擎及下载器之间的特定钩子(specific hook),处理Downloader传递给引擎的Response。其提供了一个简便的机制,通过插入自定义代码来扩展Scrapy的功能。

        ·Spider中间件(Spider middle-wares)

        Spider 中间件是在引擎及 Spider 之间的特定钩子(specific hook),处理 Spider 的输入(Response)和输出(Items及Requests)。其提供了一个简便的机制,通过插入自定义代码来扩展Scrapy的功能。

        从Scrapy的系统架构可见,它将整个爬网过程进行了非常具体的细分,并接管了绝大多数复杂的工作,例如,产生请求和响应对象、控制爬虫的并发等。

二、用scrapy实现爬虫时,每个爬虫文件只能对应一个pipeline文件吗

Pipeline基本上都是你自己写的。能不能适用多个爬虫就看你怎么写的了。
很明确的告诉你,Pipeline可以适用多个爬虫。Scrapy自身提供了下载文件的管道,FilesPipeline、 ImagesPipeline便是很好的例子。

一个爬虫也可以使用多个Pipeline。
这个要在settings的ITEM_PIPELINES字典中添加就可以生效。怎么做官方文档都有,就不具体说了。



三、scrapy如果要实现从上次中断的地方继续抓取怎么办

本帖最后由 timespace 于 16:46 编辑

帮你google了一下scrapy resume crawl,然后直接就定位到官方文档的任务暂停与重启了
就是加一个选项就OK
scrapy crawl somespider -s JOBDIR=crawls/somespider-1

四、scrapy splash必须要用docker吗

       官方文档解释是必须使用容器!之所以用容器技术,好处是你可以一坨的安装好splash,而不必一点一点的去为安装splash填坑,直接一个:

       docker pull scrapinghub/splash

       命令即可安装好splash,然后再来一个:

       docker run -p 8050:8050 -p 5023:5023 scrapinghub/splash

       命令即可使用splash!我想你之所以问这个问题,很大一定程度是应为你不熟悉docker!别犹豫,docker绝对值得你学习,随便花上一两天时间马上就能上手docker!docker这里不多说,自己恶补去!这里给你提醒一点是,安装好splash之后,你可能访问不到,很大一定程度是你把ip弄错了,你访问的应该是你虚拟机的ip:8050,所以你首先要用ifconfig得到linux的ip地址,然后再在你本地浏览器输入ip:8050,则可打开如下界面:

       这样的话就说明安装成功,至于怎么用,三言两语也说不完,不会可以私,我!

       还有一点需要注意:你虚拟机地址可能每次重启都在变,所以你在渲染的时候一定要注意更改middleware里面ip的地址,不然无法渲染,你原因都找不到

       以上就是澳航推介会小编对于scrapy使用教程(scrapy和python有什么关系)的内容
一、scrapy和python有什么关系;
二、用scrapy实现爬虫时,每个爬虫文件只能对应一个pipeline文件吗;
三、scrapy如果要实现从上次中断的地方继续抓取怎么办;
四、scrapy splash必须要用docker吗信息和相关问题的汇总解答,scrapy官方文档的问题希望对你有用!

(责编: 网络转载)

免责声明:本文为转载,非本网原创内容,不代表本网观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。

    栏目ID=32的表不存在(操作类型=0)