Scrapy FakeUserAgentError:获取浏览器时发生错误

我使用Scrapy FakeUserAgent并在我的Linux服务器上不断收到这个错误。

Traceback (most recent call last): File "/usr/local/lib64/python2.7/site-packages/twisted/internet/defer.py", line 1299, in _inlineCallbacks result = g.send(result) File "/usr/local/lib/python2.7/site-packages/scrapy/core/downloader/middleware.py", line 37, in process_request response = yield method(request=request, spider=spider) File "/usr/local/lib/python2.7/site-packages/scrapy_fake_useragent/middleware.py", line 27, in process_request request.headers.setdefault('User-Agent', self.ua.random) File "/usr/local/lib/python2.7/site-packages/fake_useragent/fake.py", line 98, in __getattr__ raise FakeUserAgentError('Error occurred during getting browser') # noqa FakeUserAgentError: Error occurred during getting browser 

当我同时运行多个蜘蛛时,我一直在Linux服务器上发生这个错误。 这个错误很less发生在我自己的笔记本上。 我该怎么做才能避免呢? 我必须提高内存吗? 服务器的规格是512MB RAM和1个vCPU。

我不确定内存,为什么错误只发生在最低规格的Linux服务器上。 我通过使用fake-useragent后备功能来解决它​​。 可悲的是, scrapy-fake-useragent并没有给出任何方便的设置,所以我必须重写middlewares.py上的中间件功能:

 from fake_useragent import UserAgent from scrapy_fake_useragent.middleware import RandomUserAgentMiddleware class FakeUserAgentMiddleware(RandomUserAgentMiddleware): def __init__(self, crawler): super(FakeUserAgentMiddleware, self).__init__(crawler) # If failed to get random user agent, use the most common one self.ua = UserAgent(fallback='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36') self.per_proxy = crawler.settings.get('RANDOM_UA_PER_PROXY', False) self.ua_type = crawler.settings.get('RANDOM_UA_TYPE', 'random') self.proxy2ua = {} 

然后我激活settings.py的中间件,如下所示:

 DOWNLOADER_MIDDLEWARES = { 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None, # 'scrapy_fake_useragent.middleware.RandomUserAgentMiddleware': 400, # disable the original middleware 'myproject.middlewares.FakeUserAgentMiddleware': 400, # omitted } 

UPDATE

尝试更新fake-useragent到版本0.1.5。 我正在使用0.1.4,升级后,问题是从根,而不是使用回退。

在这里使用fake_useragent 0.1.7,具有相同的问题。

不过,我已经修复了我的服务器。 这是我的建议绕过错误的问题票。

https://github.com/hellysmile/fake-useragent/issues/59

希望有所帮助。