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 つの方法 (画像とテキスト付き)
効果画像のない表示は単なる空虚な言葉です。 1. オーディオをベースにし、elementUI と組み...
序文MySQL データベースのデフォルトのデータベース ファイルは /var/lib/mysql に...
時々、データベース テーブルに重複したデータが大量に保存されます。これらの重複データはリソースを浪費...
MySQL バックアップコールドバックアップ:停止服務進行備份,即停止數據庫的寫入ホットバックアップ...
以前、プロジェクトを行う際に ECharts を使用しました。今日はそれをメモとして整理し、より多く...
memcachedをインストールする yum インストール -y memcached #memcac...
目次ミニプログラム開発者ツールのソースコードを表示する方法ミニプログラムアーキテクチャ設計1. ミニ...
CSS でレスポンシブ レイアウトを実装するレスポンシブレイアウトは非常にハイエンドで難しいように思...
この記事の目的は、これらの概念とその機能の関係を明らかにすることです。 Mysql がトランザクショ...
CSS3 では、transform 関数を使用して、テキストや画像の回転、拡大縮小、傾斜、移動という...
序文最近、パソコンのシャットダウンに時間がかかることが多く、強制的にシャットダウンするには電源ボタン...
目次chmod例権限に関する特別な注意分析するチョーンchgrp umask Linux オペレーテ...
まず、MySQL InnoDB エンジンのストレージ形式に関する重要なポイントをいくつか紹介します。...
<br />元のアドレス: http://andymao.com/andy/post/8...
この記事では、テーブルのページング効果を実現するためのjQueryの具体的なコードを参考までに紹介し...