Ошибка, всплеск и соединение были отклонены другой стороной: 10061

#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.