問題タブ [scrapy-splash]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2103 参照

python-3.x - Scrapy-Splash セッション処理

Web サイトにログインしてから、サインイン後にのみアクセスできるいくつかの URL をクロールしようとしています。

セッション処理の指示に従っています。まず、ログインすると、ホームページにリダイレクトされ始めます。これはlogin.htmlに正しく保存されています(ログインは機能しています)。次に、Cookie を取得して 2 番目の SplashRequest に設定して検索しますが、search_result.htmlの応答は、ユーザーがログインしていないことです。別の SplashRequests でセッションを永続化するために何が欠けているか、間違っていますか?

よろしく、

0 投票する
1 に答える
1727 参照

python - Scrapy over Splash と HTTP プロキシを組み合わせた場合の「500 Internal Server Error」

Splash (JavaScript をレンダリングするため) と Tor を介して Privoxy (匿名性を提供するため) の両方を使用して、Docker コンテナー内の Scrapy スパイダーをクロールしようとしています。これがdocker-compose.yml私がこの目的のために使用しているものです:

スクレーパーには次のものがありますDockerfile

そして、私がクロールしようとしているクモは

に以下を追加しましたsettings.py

コンテナのenvironmentscraperコメントアウトすると、Scraper は多かれ少なかれ機能します。以下を含むログを取得します。

environmentただし、 の行にコメントするとdocker-compose.yml、500 内部サーバー エラーが発生します。

要するに、Splash を使用して JavaScript をレンダリングする場合、Privoxy を介して Tor を使用するためにHttpProxyMiddlewareを正常に使用することができません。誰かがここで何が間違っているかを見ることができますか?

アップデート

Paul のコメントに従ってsplash、次のようにサービスを適応させてみました。

次のように、「スプラッシュ」ディレクトリをメイン ディレクトリに追加しました。

そしてproxy.ini読む

私が理解しているように、これによりプロキシが常に使用されるようになります(つまり、whitelistデフォルトは to".*"および noblacklistです)。

ただし、もう一度docker-compose buildとを実行するとdocker-compose up、まだ HTTP 500 エラーが発生します。それで、問題はこれらを解決する方法が残っていますか?

(ちなみに、この質問はhttps://github.com/scrapy-plugins/scrapy-splash/issues/117に似ているようですが、私は Crawlera を使用していないため、回答を適応させる方法がわかりません)。

更新 2

Paul の 2 番目のコメントに続いtor-privoxyて、これを実行してコンテナー内で解決することを確認しました (コンテナーがまだ実行されている間に)。

Splash の実行方法については、 https://splash.readthedocs.io/en/stable/install.html#docker-folder-sharingで説明されている方法と同様に、リンクされたコンテナーを使用します。/etc/splash/proxy-profiles/proxy.iniコンテナに が存在することを確認しました。

水族館を試してみますが、現在のセットアップが機能しない理由は何ですか?