ホームページ >バックエンド開発 >Python チュートリアル >Scrapy を使用して効率的なクローラー システムを構築する方法
インターネットの発展に伴い、人々の情報への要求はますます強くなっていますが、この情報を入手して処理することはますます困難になってきています。そこで、クローラー技術が登場しました。クローラー テクノロジーは、Web 検索エンジン、データ マイニング、ソーシャル ネットワーク、金融と投資、電子商取引、その他の分野で広く使用されています。
Scrapy は、Python をベースにした効率的な Web クローラー フレームワークで、効率的なクローラー システムを迅速に構築するのに役立ちます。この記事では、Scrapyを使用して効率的なクローラーシステムを構築する方法を紹介します。
1. Scrapy の概要
Scrapy は、効率的な処理機能と強力な拡張性を備えた Python ベースの Web クローラー フレームワークです。強力なデータ抽出メカニズムを提供し、非同期処理をサポートし、強力なミドルウェアとプラグイン システムを備えています。 Scrapy は、設定ファイルを通じてプロキシ、ユーザー エージェント、アンチクローラー、その他の機能を簡単に実装することもできます。 Scrapy は、クローラーの問題をより簡単に発見できる強力なデバッグおよびログ システムを提供します。
2. Scrapy のインストールと環境設定
Scrapy をインストールするには、最初に Python をインストールする必要があります。Python2.7 または Python3 を使用することをお勧めします。 .6以降のバージョン。インストール方法:
pip install scrapy
Scrapy をインストールした後、主に次のような関連環境設定を行う必要があります。
(1) セットアップ要求ヘッダー
Scrapy の設定ファイルでは、リクエスト ヘッダーを設定できます。これは、ブラウザを偽装して対象の Web サイトにアクセスし、Web サイトのクローラー対策メカニズムによるブロックを回避するのに役立ちます。コードは次のとおりです:
DEFAULT_REQUEST_HEADERS = { 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Accept-Language': 'en', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36' }
(2) ダウンローダー ミドルウェアの設定
Scrapy は、HttpErrorMiddleware、RetryMiddleware、UserAgentMiddleware など、多くのダウンローダー ミドルウェアをサポートしています。これらのミドルウェアは、ダウンロードやネットワークに関するさまざまな問題の解決に役立ちます。構成ファイルでダウンローダー ミドルウェアを設定し、必要に応じてダウンローダー ミドルウェアのパラメーターを設定できます。コード例は次のとおりです:
DOWNLOADER_MIDDLEWARES = { 'scrapy.contrib.downloadermiddleware.httpproxy.HttpProxyMiddleware': 110, 'scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware' : None, 'myproject.spiders.middlewares.RotateUserAgentMiddleware': 400, 'scrapy.contrib.downloadermiddleware.retry.RetryMiddleware': 90, }
3. Scrapy クローラー開発
Scrapy を使用する前に、スクレイピープロジェクト。コマンドラインを使用して、次のコマンドを入力します:
scrapy startproject myproject
これにより、myproject という名前の Scrapy プロジェクトが作成されます。
Scrapy フレームワークは非常に優れたアーキテクチャを備えており、エンジン、スケジューラー、ダウンローダー、クローラー、パイプラインの 5 つのモジュールに分かれています。 Scrapy クローラーを開発するには、次のプログラムを作成する必要があります。
(1) クローラー モジュール
Scrapy では、クローラーが最も重要な部分です。 myproject ディレクトリに Spider フォルダーを作成し、その中に myspider.py などのクローラー ファイルを書き込む必要があります。サンプル コードは次のとおりです。
import scrapy class MySpider(scrapy.Spider): name = 'myspider' allowed_domains = ['www.example.com'] start_urls = ['http://www.example.com'] def parse(self, response): # 爬虫主逻辑
コードでは、Spider クラスを定義する必要があります。ここで、name 属性はクローラー名、allowed_domains 属性はクロールを許可されるドメイン名です。 start_urls 属性は、クロールを開始する URL です。 Scrapy で一般的に使用されるクローラー カテゴリには、CrawlSpider、XMLFeedSpider、SitemapSpider などがあります。
(2) データ抽出モジュール
データ抽出モジュールは、クローラから返された HTML ページからデータを抽出します。 Scrapy は、XPath セレクターと CSS セレクターという 2 つのデータ抽出方法を提供します。
XPath: Scrapy は lxml ライブラリを通じて XPath セレクターを実装します。使用方法は次のとおりです:
selector.xpath('xpath-expression').extract()
CSS セレクター: Scrapy は Sizzle ライブラリを通じて CSS セレクターを実装します。使用方法は次のとおりです。
selector.css('css-expression').extract()
(3) パイプライン モジュール
Scrapy では、パイプライン モジュールは、クローラーによって抽出されたデータの処理を担当します。 myproject ディレクトリに Pipelines.py ファイルを作成し、パイプライン モジュールのコードを作成します。
class MyProjectPipeline(object): def process_item(self, item, spider): # 处理item数据 return item
次のコマンドを使用してクローラーを開始します。 :
scrapy crawl myspider
4. 巧妙なクローラーのスケジューリングと最適化
ターゲット Web サイトへのリクエストが多すぎることを避けるために、次のことを行う必要があります。ダウンロードの遅延を設定します。 DOWNLOAD_DELAY 属性は、Scrapy の設定ファイルで設定できます。
DOWNLOAD_DELAY = 2
ターゲット Web サイトがエラー メッセージを返すか、リクエストがタイムアウトになる場合があります。無限ループに陥ることを避けるために、リクエストのタイムアウトを設定する必要があります。 DOWNLOAD_TIMEOUT 属性は、Scrapy の構成ファイルで設定できます。
DOWNLOAD_TIMEOUT = 3
Scrapy は、同時スレッド数と同時リクエスト数を設定できます。 。同時スレッド数は同時にダウンロードされる Web ページの数を指し、同時リクエスト数はターゲット Web サイトに対して同時に行われるリクエストの数を指します。これは、Scrapy 構成ファイルで設定できます。
CONCURRENT_REQUESTS = 100 CONCURRENT_REQUESTS_PER_DOMAIN = 16
つまり、Scrapy を使用して効率的なクローラー システムを構築するには、ある程度の技術的な蓄積と経験の要約が必要です。開発プロセスでは、ネットワーク リクエストの効率、データ抽出の精度、データ ストレージの信頼性に注意を払う必要があります。継続的な最適化と改善を通じてのみ、当社のクローラ システムはより高い効率と品質を達成できます。
以上がScrapy を使用して効率的なクローラー システムを構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。