#python #docker #scrapy #twisted #scrapy-splash
#python #docker #ошибка #скрученный #ошибка-всплеск
Вопрос:
Я использую scrapy с всплеском на сайте, управляемом Javascript. Однако я не могу передать Connection was refused by other side: 10061
ошибку.
Я получаю журналы, подобные этому:
[scrapy.downloadermiddlewares.retry] DEBUG: Retrying
<GET https://www2.deloitte.com/ch/en/misc/search.html#country=All#qr=accounting
via http://localhost:8050/render.html> (failed 1 times): Connection
was refused by other side: 10061: No connection could be made because
the target machine actively refused it..
и обратная трассировка, указывающая на twisted:
twisted.internet.error.ConnectionRefusedError: Connection was refused
by other side: 10061: No connection could be made because the target
machine actively refused it..
Я проверил все записи в настройках, пробовал различные записи USER_AGENTS
и ROBOT
, но безуспешно. Также пытался использовать --disable-private-mode
для запуска splash, но никакого эффекта.
Как ни странно, простое копирование-вставка того же URL-адреса в браузер работает отлично.
Я использовал обычную командную строку scrapy, а также через API. Интересно, что при использовании API, конечно, при нажатии на URL целевого объекта в сообщении об ошибке в PyCharm хэштег # заменяется его escape-кодом. Итак, я не понимаю, является ли это другой проблемой в hud или они связаны друг с другом.
Даже пытался просмотреть пакеты, отправленные как через Wireshark, так и через Fiddler, но не смог достаточно хорошо понять результаты, поскольку я никогда раньше не использовал эти инструменты.
Любые предложения будут с благодарностью приняты.
Комментарии:
1. Хотя я точно следовал инструкциям по установке для Splash, я с подозрением отношусь к установке docker. Я не очень знаком с docker (я использую версию toolbox на базе виртуальной машины), но я запустил несколько других тестовых образов (friendlyhello) в docker, которые отлично работали. Может ли здесь быть какая-либо конфигурация docker / VM для Splash, которую я пропускаю?
Ответ №1:
Наконец, удалось идентифицировать виновника. Это действительно было подключение к контейнеру docker.
Сначала мне пришлось получить IP-адрес контейнера docker, используя
docker-machine ip
в терминале docker. Затем мне пришлось настроить SPLASH_URL
в scrapy settings.py файл, указывающий на IP-адрес docker-machine вместо localhost:8050
, и вуаля… это работает.
К сожалению, источники, которые я видел до сих пор, были довольно неясными по этому поводу, поэтому я надеюсь, что это будет полезно для других бедолаг, впервые устанавливающих splash.