Python Prapy:TypeError:uu init_uuuuuuuuuuuuuuuuuuu()缺少1个必需的位置参数:';设置';
我有一个很差劲的中间件:Python Prapy:TypeError:uu init_uuuuuuuuuuuuuuuuuuu()缺少1个必需的位置参数:';设置';,python,scrapy,Python,Scrapy,我有一个很差劲的中间件: class ProxyMiddleware(object): def __init__(self, settings): self.proxy_file = settings.get('PROXY_FILE') fin = open(self.proxy_file) self.proxy_list = list() for line in fin.readlines(): p
class ProxyMiddleware(object):
def __init__(self, settings):
self.proxy_file = settings.get('PROXY_FILE')
fin = open(self.proxy_file)
self.proxy_list = list()
for line in fin.readlines():
parts = line.strip().split()
proxy = parts[2] + '://' + parts[0] + ':' + parts[1]
self.proxy_list.append(proxy)
def process_request(self, request, spider):
request.meta['proxy'] = random.choice(self.proxy_list)
但是在运行时发生了一个错误,设置是什么?如果需要一个
settings
对象来初始化中间件,则需要定义一个from_crawler()
类方法
例如,看一看内置中间件以获得灵感
在您的情况下,它将类似于:
class ProxyMiddleware(object):
@classmethod
def from_crawler(cls, crawler):
return cls(crawler.settings)
def __init__(self, settings):
self.proxy_file = settings.get('PROXY_FILE')
fin = open(self.proxy_file)
self.proxy_list = list()
for line in fin.readlines():
parts = line.strip().split()
proxy = parts[2] + '://' + parts[0] + ':' + parts[1]
self.proxy_list.append(proxy)
def process_request(self, request, spider):
request.meta['proxy'] = random.choice(self.proxy_list)
在何处创建此类的实例?我没有实例化该类错误是什么?TypeError:\uuuuu init\uuuuu()缺少1个必需的位置参数:“设置”
class ProxyMiddleware(object):
@classmethod
def from_crawler(cls, crawler):
return cls(crawler.settings)
def __init__(self, settings):
self.proxy_file = settings.get('PROXY_FILE')
fin = open(self.proxy_file)
self.proxy_list = list()
for line in fin.readlines():
parts = line.strip().split()
proxy = parts[2] + '://' + parts[0] + ':' + parts[1]
self.proxy_list.append(proxy)
def process_request(self, request, spider):
request.meta['proxy'] = random.choice(self.proxy_list)