Advanced Scrapy使用中间件

时间:2016-01-18 02:03:37

标签: scrapy middleware

我想开发许多中间件以确保网站能够被解析。 这是我认为的工作流程:

  • 首先尝试使用TOR + Polipo
  • 如果出现2个HTTP错误,请尝试不使用TOR(因此网站知道我的IP)
  • 如果出现2个HTTP错误,请尝试使用代理(使用我的其他服务器之一进行HTTP REQ)
  • 如果出现2个HTTP错误,请尝试使用随机代理(在100个列表中)。这是重复5次
  • 如果没有,我在ElasticSearch数据库上保存信息,在我的控制面板上查看

我将创建一个自定义中间件,其中process_request函数包含所有这5种方法。但是我没有找到保存类型的连接(例如,如果TOR不起作用,但直接连接是的,我想对我的所有其他废料使用此设置,对于同一网站)。如何保存此设置?

其他人认为,我有一个下载项目图像的管道。是否有使用此中间件(理想情况下有保存设置)的解决方案?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我认为您可以使用retry middleware作为起点:

  1. 您可以使用request.meta["proxy_method"]来跟踪您正在使用的

  2. 您可以重复使用request.meta["retry_times"]以跟踪重试给定方法的次数,然后在更改代理方法时将值设置为零。

  3. 您可以使用request.meta["proxy"]通过现有的HTTP代理中间件使用您想要的代理服务器。您可能希望调整中间件订购,以便重试中间件在代理中间件之前运行。