请查看Scrapy Architecture的以下链接。
https://doc.scrapy.org/en/latest/topics/architecture.html#component-downloader
我不明白第5点。
页面完成下载后,Downloader会生成一个Response(带有该页面)并将其发送到Engine,并通过Downloader Middlewares(参见process_response())。
是否意味着它会在我们的系统(RAM)中下载/加载整个页面,因为页面的大小比响应(HTML)大?
请参阅第6点。
引擎从下载程序接收响应并将其发送到Spider进行处理,并通过Spider Middleware(请参阅process_spider_input())。
如果我在任何地方都错了,请纠正我。
答案 0 :(得分:0)
没有。当它谈到下载页面时,它只是谈论在该请求中返回的一件事(它可能是html,或者它可能是jpg ......取决于网站和你的蜘蛛)。 HTML和包含HTML的响应之间的区别在于响应还包含HTML附带的许多附加信息。它将包含错误代码(可能是200,如果一切顺利),cookie或服务器可能返回的任何其他标头。
您可能对下载中间件感兴趣的地方,例如检查网站是否有404错误。通常这些是由下载中间件过滤的,所以如果你想让你的蜘蛛处理它们(在我的情况下,我想记录它们。我写的蜘蛛是检查我的网站错误的页面,所以我可以快速回应的事情)
如果您对图片感兴趣,则需要让蜘蛛为它们创建新的请求。
很难从你的帖子中看出来,但听起来你的担忧就是内存占用。这些文档提供了一些尝试调试内存/引用泄漏的好主意。 https://doc.scrapy.org/en/latest/topics/leaks.html