Я пытаюсь создать HAR для некоторых сайтов, использующих Scrapy (я делал это в Selenium, но это перегружает мою систему).
Я пробовал Scrapy + Splash (и модуль scrapy-splash), но если сайт перенаправляет с оригинальной запрашиваемой ссылки, я не увижу новую ссылку. А также я обнаружил ошибку в слэше, и она останавливается при доступе к моему сайту (в котором была ошибка).
Поэтому я пытаюсь получить страницу, используя scrapy + Broswermobproxy. Все работает почти нормально, но у меня нет ответа на странице HAR.
Может быть, есть идеи?
Стандартом является то, что когда я определяю прокси как "http://localhost:port", сценарии работают (максимум),
class MySpider(scrapy.Spider):
name = "webcapture"
def __init__(self, **kwargs): #
self.url = ['someurl']
proxy_server = Server(BROWSERMOB_PATH)
time.sleep(1)
start_proxy_response = requests.post(
'http://localhost:8080/proxy',
data={'trustAllServers': 'true'}
).json()
self.proxy_port = start_proxy_response['port']
custom_settings = { # the proxy seems to work without this also
'HTTPPROXY_ENABLED': True
}
def start_requests(self):
request = Request(self.url, callback=self.parse_link, dont_filter=True)
request.meta['proxy'] = 'http://localhost:{}'.format(self.proxy_port)
yield request
def parse_link(self, response):
new_url = 'http://localhost:8080/proxy/{}/har/'.format(self.proxy_port)
new_request = Request(new_url, callback=self.new_url, dont_filter=True)
text = response.text # this is the original html page of web it works ok.
yield new_request # now I want to obtain the HAR...
def new_url(self, response):
text = response.text
return {'har': text}
Теперь HAR не выдает ошибку, но ничего не содержит :(.
Я также использовал мета внутри экземпляра Request.
Я также пытался использовать прокси:
'localhost: port' - он не входит в следующие методы после start_request
'https://localhost:port' - возвращает следующую ошибку:
twisted.web._newclient.ResponseNeverReceived: []
следующий метод после start_request
Любая другая (я имел в виду даже всплеск, чтобы вернуть истинную страницу перенаправления) будет высоко оценена.