Как запустить Scrapy Splash на виртуальной машине

Как запустить Scrapy Splash на виртуальной машине

Как запустить scrapy splash на виртуальной машине с linux? По сути, у меня есть скрипт lua, который требует от меня отправлять ключи на сайт для входа, а затем скрейпать его.

Я установил Docker, однако не могу заставить работать Scraper, так как он не подключается к серверу.

Есть ли какие-то простые шаги, которые я могу выполнить, чтобы это заработало на виртуальной машине? Например, что мне следует установить, и что мне следует сделать дальше перед запуском scrapy crawl spider.

Что касается docker, то в режиме администратора я реализовал следующее:

docker run -p 8050:8050 scrapinghub/splash --max-timeout 3600

Однако это в настоящее время запущено, и я хотел бы, чтобы это работало в фоновом режиме. Я не могу понять это; я пробовал:

docker run -d 8050:8050 scrapinghub/splash --max-timeout 3600

Но я просто получаю ошибку:

Unable to find image '8050:8050' locally

Я считаю, что это может решить мою проблему, а может и нет, и мне нужны дополнительные установки. Пожалуйста, дайте мне знать! Мне действительно нужно экспертное руководство, чтобы разобраться с этим.

Я открыл еще один экземпляр, пока Docker был запущен на первом экземпляре.

При запуске сканера Scrapy возникает следующая ошибка:

2022-02-16 02:55:26 [scrapy_splash.middleware] WARNING: Bad request to Splash: {'error': 400, 'type': 'ScriptError', 'description': 'Error happened while executing Lua script', 'info': 
{'type': 'JS_ERROR', 'js_error_type': 'TypeError', 'js_error_message': 'null is not an object (evaluating \'document.querySelector("button:nth-child(2)").getClientRects\')', 'js_error':
 'TypeError: null is not an object (evaluating \'document.querySelector("button:nth-child(2)").getClientRects\')', 'message': '[string "..."]:12: error during JS function call: \'TypeEr
ror: null is not an object (evaluating \\\'document.querySelector("button:nth-child(2)").getClientRects\\\')\'', 'source': '[string "..."]', 'line_number': 12, 'error': 'error during JS
 function call: \'TypeError: null is not an object (evaluating \\\'document.querySelector("button:nth-child(2)").getClientRects\\\')\''}}
2022-02-16 02:55:26 [scrapy.core.engine] DEBUG: Crawled (400) <GET http://instagram.com/ via http://localhost:8050/execute> (referer: None)
2022-02-16 02:55:26 [scrapy.spidermiddlewares.httperror] INFO: Ignoring response <400 http://instagram.com/>: HTTP status code is not handled or not allowed

Скребок прекрасно работает на моем Mac, так что я определенно где-то что-то упускаю из установки.

решение1

Вам придется использовать следующую dockerкоманду:

docker run -d -p 8050:8050 scrapinghub/splash --max-timeout 3600

Вы забыли -pпараметр для переадресации порта, из-за чего Docker предположил, что 8050:8050это имя образа, который вы пытаетесь запустить.


Я даже никогда не слышал о Scrapy, но это довольно простая ошибка, не нужноэкспертное руководство;)

Что касается "Как мне запустить x?", то в целом этот вопросмногослишком расплывчато для сайта QA, такого как SuperUser. Я бы рекомендовал вам попробовать вышеизложенное, и если у вас возникнут последующие ошибки, вы создадите для них отдельные вопросы.

Связанный контент