本文档描述了Scrapy的体系结构及其组件的交互方式。 概述 下图显示了Scrapy体系结构及其组件的概述,以及系统内部发生的数据流的概述(由红色箭头显示)。下面包含组件的简要说明,并提供链接以获取有关它们的更多详细信息。数据流也在下面描述。   数据流 该引擎获得初始请求从抓取 蜘蛛。Scrapy中的数据流由执行引擎控制,如下所示: 该引擎安排在请求 调度程序和要求下一个请求抓取。 该计划返回下一请求的引擎。 该引擎发送请求到 下载器,通过 下载器中间件(见 process_request())。 页面完成下载后, Downloader会生成一个Response(带有该页面)并将其

Scrapy默认值针对特定网站的爬网进行了优化。这些站点通常由单个Scrapy蜘蛛处理,尽管这不是必需的或不需要的(例如,有一些通用蜘蛛可以处理抛出它们的任何给定站点)。 除了这种“集中爬行”之外,还有另一种常见类型的爬网,它覆盖了大量(可能无限制)的域数,并且仅受时间或其他任意约束的限制,而不是在域被爬行到完成时停​​止或当没有更多的请求要执行时。这些被称为“广泛爬行”,是搜索引擎使用的典型爬虫。 这些是广泛爬行中常见的一些常见属性: 他们抓取许多域(通常是无限制的)而不是特定的一组站点 他们不一定要抓取域完成,因为这样做是不切实际的(或不可能的),而是限制爬行的时间或页数爬行 它们在逻辑上

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