1. scrapy_splash とは何ですか?scrapy_splashはscrapyのコンポーネントです
2. scrapy_splashの役割scrapy-splashはブラウザをシミュレートしてjsをロードし、jsの実行後にデータを返すことができます。 3. scrapy_splashの環境インストール3.1 スプラッシュDockerイメージの使用
スプラッシュ依存環境が少し複雑であることが観察されたので、スプラッシュDockerイメージを直接使用することができます。 Dockerイメージを使用しない場合は、公式のスプラッシュドキュメントを参照して、対応する依存関係環境をインストールしてください。 3.1.1 Dockerサービスをインストールして起動する
3.1.2 スプラッシュイメージを取得する
3.1.3 インストールが成功したことを確認する
3.1.4 イメージ取得タイムアウトの問題を解決する: Dockerイメージソースを変更する
1. Docker設定ファイルを作成して編集する
2.国内docker-cn.comのミラーアドレス設定を書き込み、保存して終了する { "レジストリミラー": ["https://registry.docker-cn.com"] } 3. コンピュータまたはDockerサービスを再起動し、スプラッシュイメージを再度取得します。 4. それでも遅い場合は、モバイルホットスポット(データorz)を使用してください。 3.1.5 スプラッシュサービスを無効にする
sudo docker ps -a sudo docker stop コンテナID sudo docker rm コンテナID 3.2 Python仮想環境にscrapy-splashパッケージをインストールする
4. スクレイピーでスプラッシュを使用する
4.1 プロジェクトを作成し、クローラーを作成するscrapy startproject test_splash cd テストスプラッシュ スクレイピー genspider no_splash baidu.com scrapy genspider with_splash baidu.com 4.2 settings.py設定ファイルの改善
# レンダリングサービス URL SPLASH_URL = 'http://127.0.0.1:8050' # ダウンローダーミドルウェア DOWNLOADER_MIDDLEWARES = { 'scrapy_splash.SplashCookiesMiddleware': 723, 'scrapy_splash.SplashMiddleware': 725, 'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810, } # 重複排除フィルター DUPEFILTER_CLASS = 'scrapy_splash.SplashAwareDupeFilter' #Splash の HTTP キャッシュを使用する HTTPCACHE_STORAGE = 'scrapy_splash.SplashAwareFSCacheStorage' # robots.txt のルールに従う ROBOTSTXT_OBEY = 偽 4.3 飛沫なし
スクレイピーをインポートする クラス NoSplashSpider(scrapy.Spider): 名前 = 'no_splash' allowed_domains = ['baidu.com'] start_urls = ['https://www.baidu.com/s?wd=13161933309'] def parse(self, レスポンス): open('no_splash.html', 'w') を f として実行します: f.write(レスポンス本文デコード()) 4.4 スプラッシュの使用スクレイピーをインポートする from scrapy_splash import SplashRequest # scrapy_splash パッケージが提供するリクエスト オブジェクトを使用します class WithSplashSpider(scrapy.Spider): 名前 = 'スプラッシュ付き' allowed_domains = ['baidu.com'] start_urls = ['https://www.baidu.com/s?wd=13161933309'] def start_requests(self): SplashRequest(self.start_urls[0], を生成します。 コールバック=self.parse_splash, args={'wait': 10}, # 最大タイムアウト、単位: 秒 エンドポイント='render.html') # スプラッシュサービスの固定パラメータを使用する def parse_splash(self, response): open('with_splash.html', 'w') を f として実行します: f.write(レスポンスボディデコード()) 4.5 2つのクローラーを別々に実行し、現象を観察する4.5.1 2つのクローラーを別々に実行する スクレイピークロール no_splash スクレイピークロール with_splash 4.5.2 取得した2つのHTMLファイルを観察する 飛沫なし スプラッシュの使用 4.6 結論
5. さらに詳しく
6. まとめ1. scrapy_splashコンポーネントの役割
2. scrapy_splashコンポーネントの使用
3. scrapy_splashの具体的な設定 SPLASH_URL = 'http://127.0.0.1:8050' DOWNLOADER_MIDDLEWARES = { 'scrapy_splash.SplashCookiesMiddleware': 723, 'scrapy_splash.SplashMiddleware': 725, 'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810, } DUPEFILTER_CLASS = 'scrapy_splash.SplashAwareDupeFilter' HTTPCACHE_STORAGE = 'scrapy_splash.SplashAwareFSCacheStorage' 高度なクローラーに関するこの記事はこれで終わりです - JS 自動レンダリングのための Scrapy_splash コンポーネントの使用。 js Scrapy_splash コンポーネントの使用に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。 今後とも 123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Win10にMySQL8圧縮パッケージ版をインストールするチュートリアル
>>: Windows 10 に Linux サブシステムをインストールする 2 つの方法 (画像とテキスト付き)
CentOS7 システムを使用するのは今回が初めてで、ネットワーク構成を行う際に多くの問題が発生し...
オペレーティング·システム: Win10 ホームエディションDockerをインストールします:公式サ...
最近、社内の業務調整により、以前の超長文のロジックが大幅に変更されたため、リファクタリングする予定で...
1. MySQLデータベースのエンコーディングを確認する mysql -u ユーザー名 -p パスワ...
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1...
問題現象: [root@localhost ~]# docker イメージをプル xxx.com.c...
1. Docker Composeを使用して起動を構成するDocker Compose を知らない場...
技術的背景Latex は文書作成、特に記事作成には欠かせないツールであり、必須のテキスト組版ツールで...
nginx をリバース プロキシ tomcat として使用する場合、セッション損失が発生する可能性が...
<br />矛盾が生じます。私たちのような小さな工房では、デザインとレイアウトは基本的に...
目次ビジネスロジックデータテーブル構造クエリロジックSQL スクリプトスクリプトの説明ビジネスロジッ...
弊社のプロジェクトは Java で開発され、ミドルウェアは Tomcat でした。運用中に、Tomc...
数日前、Codepen で @Kyle Wetton が書いた、CSS ブレンディング モードと S...
//MySQL ステートメント SELECT * FROM `MyTable` WHERE `id...
本日、会社の内部サーバーにログインしたところ、リモートアクセスができませんでした。エラー メッセージ...