Linux の仮想マシンで scrapy splash を実行するにはどうすればよいですか? 基本的に、ログインしてスクレイピングするためにサイトにキーを送信する必要がある lua スクリプトがあります。
docker をインストールしましたが、サーバーに接続できないため、スクレーパーが動作しないようです。
VM 上でこれを動作させるための簡単な手順はありますか? 何をインストールすればよいのか、実行する前に次に何をすればよいのかなど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
それが実行しようとしているイメージの名前であると想定します。
私はスクレイピーについて聞いたことがありませんでしたが、これはかなり基本的なエラーなので、専門家の指導;)
「xを実行するにはどうすればいいですか?」という質問については、一般的にこの質問は多くのSuperUser のような QA ウェブサイトには漠然としすぎています。上記を試してみて、その後エラーが発生した場合は、それに対して別の質問を作成することをお勧めします。