Scrapy提供可重复使用的项目管道,用于下载附加到特定项目的文件(例如,当您刮取产品并且还想在本地下载其图像时)。这些管道共享一些功能和结构(我们将它们称为媒体管道),但通常您将使用文件管道或图像管道。 两个管道都实现了这些功能: 避免重新下载最近下载的媒体 指定存储介质的位置(文件系统目录,Amazon S3存储桶,Google云端存储存储桶) 图像管道具有一些用于处理图像的额外功能: 将所有下载的图像转换为通用格式(JPG)和模式(RGB) 缩略图生成 检查图像宽度/高度以确保它们符合最小约束 管道还保留当前正在计划下载的那些媒体URL的内部队列,并将那些到达包含相同媒体的响应连接到该队

本节介绍使用Scrapy时的常见做法。这些内容涉及许多主题,并且通常不属于任何其他特定部分。   从脚本运行Scrapy 您可以使用API从脚本运行Scrapy,而不是运行Scrapy的典型方法。scrapy crawl 请记住,Scrapy是建立在Twisted异步网络库之上的,因此您需要在Twisted reactor中运行它。 您可以用来运行蜘蛛的第一个实用程序是 scrapy.crawler.CrawlerProcess。该类将为您启动Twisted reactor,配置日志记录并设置关闭处理程序。此类是所有Scrapy命令使用的类。 这是一个示例,展示如何使用它运行单个蜘蛛

Scrapy配有内置的telnet控制台,用于检查和控制Scrapy运行过程。telnet控制台只是在Scrapy进程中运行的常规python shell,所以你可以从中做任何事情。 telnet控制台是一个内置的Scrapy扩展,默认启用,但你也可以根据需要禁用它。有关扩展本身的更多信息,请参阅 Telnet控制台扩展。 如何访问telnet控制台 telnet控制台侦听TELNETCONSOLE_PORT设置中定义的TCP端口 ,默认为6023。要访问控制台,您需要键入: telnet localhost 6023 >>>   您需要在Windows中默认安装的

虽然Python通过smtplib 库使发送电子邮件变得相对容易,但Scrapy提供了自己的发送电子邮件的工具,它非常易于使用,并且使用Twisted非阻塞IO实现,以避免干扰非阻塞IO爬虫。它还提供了一个用于发送附件的简单API,并且通过一些设置可以非常轻松地进行配置 。 快速示例 有两种方法可以实例化邮件发件人。您可以使用标准构造函数实例化它: from scrapy.mail import MailSender mailer = MailSender()   或者您可以通过Scrapy设置对象实例化它,这将遵循以下设置: mailer = MailSender.from_set

Scrapy提供了一种方便的工具,用于以键/值的形式收集统计数据,其中值通常是计数器。该工具称为统计收集器,可以通过Crawler API的stats 属性进行访问,如下面的Common Stats Collector使用部分中的示例所示。 但是,统计信息收集器始终可用,因此无论是否启用统计信息收集,您始终可以将其导入模块并使用其API(增加或设置新的统计信息键)。如果它被禁用,API仍然可以工作,但它不会收集任何东西。这旨在简化统计信息收集器的使用:您应该花费不超过一行代码来收集蜘蛛,Scrapy扩展或您使用统计信息收集器的任何代码中的统计信息。 统计信息收集器的另一个特性是它非常有效(启用

Scrapy使用Request和Response对象来抓取网站。 通常,Request对象在蜘蛛中生成并通过系统,直到它们到达下载器,下载器执行请求并返回一个Response对象,该对象返回发出请求的蜘蛛。 两者Request和Response类都有子类,它们添加了基类中不需要的功能。下面在Request子类和Response子类中描述了这些。 请求对象 classscrapy.http.Request(url [,callback,method =’GET’,headers,body,cookies,meta,encoding =’utf-8′

本地文件系统 订阅源存储在本地文件系统中。 URI方案: file 示例URI: file:///tmp/export.csv 必需的外部库:无 请注意,对于本地文件系统存储(仅限),如果指定类似的绝对路径,则可以省略该方案/tmp/export.csv。这仅适用于Unix系统。   FTP 订阅源存储在FTP服务器中。 URI方案: ftp 示例URI: ftp://user:pass@ftp.example.com/path/to/export.csv 必需的外部库:无   S3 Feed存储在Amazon S3上。 URI方案: s3 示例URI: s3://mybu

在一个项目被蜘蛛抓取之后,它被发送到项目管道,该项目管道通过顺序执行的几个组件处理它。 每个项目管道组件(有时简称为“项目管道”)是一个实现简单方法的Python类。他们收到一个项目并对其执行操作,同时决定该项目是否应该继续通过管道或被丢弃并且不再处理。 项目管道的典型用途是: 清理HTML数据 验证已删除的数据(检查项目是否包含某些字段) 检查重复项(并删除它们) 将已删除的项目存储在数据库中 编写自己的项目管道 每个项管道组件都是一个必须实现以下方法的Python类: process_item(self, item, spider) 为每个项目管道组件调用此方法。process_item(

选择对象 classscrapy.selector.Selector(response = None,text = None,type = None ) 一个实例Selector是选择其内容的某些部分的响应的包装器。 response是一个HtmlResponse或一个 XmlResponse将被用于选择和提取的数据对象。 text是一个unicode字符串或utf-8编码的文本,用于a response不可用的情况。使用text和response在一起是未定义的行为。 type定义选择器类型,它可以是”html”,”xml”或None(默认)。 如果type是None,则选择器会根据resp

本节包含可用内置命令的列表,其中包含说明和一些用法示例。请记住,您始终可以通过运行以获取有关每个命令的更多信息: scrapy <command> -h 你可以看到所有可用的命令: scrapy -h 有两种命令,一种只能在Scrapy项目内部工作(特定于项目的命令)和那些在没有活动的Scrapy项目(全局命令)的情况下工作的命令,尽管从项目内部运行时它们可能表现略有不同(因为他们会使用项目覆盖设置)。 全局命令: startproject genspider settings runspider shell fetch view version 仅限项目的命令: crawl ch