Python框架Scrapy工作得很好,但我不知道如何在运行时配置spider。似乎所有的配置都应该是“静态”的,这并不方便。糟糕的设计还是我错过了什么
例如,我有一个spider,它需要困难的初始化例程。 我使用自己的脚本获取用于爬行的HTTP头(cookies、用户代理等)——因为它是登录到用户中的。 这需要一到两分钟。之后,这些头应该应用于所有请求
现在,我在spider的__init__
方法中这样做。但是我不能从spider的构造函数设置User-Agent
custom_settings
必须设置为类变量。因此,我必须使用中间件为每个请求设置用户代理。这是一个丑陋的解决方案
我们是否有一些共同的模式来初始化spider——某种spider factory
?Smth是这样的:
class SpiderConfigurator:
def __init__():
...
def configureSpider(spider, environment):
...
spider.setMyCustomSettings(arg1, arg2)
...
environment.setMyCustomSettings(argName1, argValue1)
environment.setMyCustomSettings('User-Agent', 'my value')
Scrapy允许从脚本中拖拽:Run Scrapy from script感谢@paultrmbrth的提示
但是我们不能初始化spider-我们只是将spider类传递给
Crawler
实例,然后crawler实例化对象。我们能做的是——为spider的构造函数传递参数。Smth是这样的:参数
argumentName1
和argumentName2
将传递给spider的构造函数相关问题 更多 >
编程相关推荐