Использование прокси с scrapy-splash
Я пытаюсь использовать прокси (proxymesh) наряду с scrapy-splash. У меня есть следующий (соответствующий) код
PROXY = """splash:on_request(function(request)
request:set_proxy{
host = http://us-ny.proxymesh.com,
port = 31280,
username = username,
password = secretpass,
}
return splash:html()
end)"""
и в start_requests
def start_requests(self):
for url in self.start_urls:
print url
yield SplashRequest(url, self.parse,
endpoint='execute',
args={'wait': 5,
'lua_source': PROXY,
'js_source': 'document.body'},
Но это не похоже на работу. self.parse не вызывается вообще. Если я изменяю конечную точку на 'render.html', я включаю метод self.parse, но когда я проверяю заголовки (response.headers), я вижу, что он не проходит через прокси. Я подтвердил это, когда установил http://checkip.dyndns.org/ качестве начального URL-адреса и увидел при анализе ответа мой старый IP-адрес.
Что я делаю неправильно?
1 ответ
Решение
Вы должны добавить аргумент 'proxy' в объект SplashRequest.
def start_requests(self):
for url in self.start_urls:
print url
yield SplashRequest(url, self.parse,
endpoint='execute',
args={'wait': 5,
'lua_source': PROXY,
'js_source': 'document.body',
'proxy': 'http://proxy_ip:proxy_port'}