データ収集の観点から見ると、Web クローラーは不可欠なツールとなっています。ただし、Web スクレイピング技術を初めて学習して習得する人にとって、適切なツールとフレームワークの選択は混乱する可能性があります。数多くの Web クローリング ツールの中でも、Scrapy は非常に人気のあるツールです。 Scrapy は、データの処理と抽出に対する柔軟なアプローチを提供するオープンソースの Python フレームワークです。
この記事では、Scrapy の基本を紹介し、Scrapy で簡単な Web クローラーを構築する方法を紹介します。
1. Scrapy 入門ガイド
始める前に、まず Scrapy をインストールする必要があります。 Scrapy のインストールは非常に簡単です。コマンド ラインで次のコマンドを実行するだけです。
pip install scrapy
Scrapy プロジェクトを作成するときは、次のコマンドを使用できます。次のコマンド:
scrapy startproject <project_name>
これにより、現在のディレクトリに 4fc59f85b86f3cdcf539b23b3b2209e3 という名前のフォルダーが作成され、その中に必要なファイルとフォルダーが作成されます。
Scrapy では、Spider はデータをクロールするために使用する主要なコンポーネントです。 Spider は、URL のリクエストを開始する方法、リンクをたどる方法、ページを解析する方法を定義します。 Scrapy では、次のコマンドを使用してスパイダーを作成できます:
scrapy genspider <spider_name> <domain_name>
これにより、プロジェクト内に新しいスパイダーが作成され、スパイダー ディレクトリに保存されます。 Spider を編集することで、必要なリクエストと解析メソッドを定義できます。
クロールされるように Web サイトを構成することは非常に重要です。 Spider ファイルでクロールする Web サイトの URL と、リクエストの構成方法を定義する必要があります。 Scrapy では、この機能は start_requests メソッドを記述することで実現できます。このメソッドは、Spider が起動し、特定の URL からリクエストを送信するときに呼び出されます。
Scrapy では、Web ページの解析が最も重要なステップです。 XPath または CSS セレクターを使用してページを解析し、必要なデータを抽出できます。 Spider コードでは、parse メソッドを記述し、上記のツールを使用することでページを解析できます。
最後に、抽出したデータをデータベースまたはファイルに保存する必要があります。 Scrapy では、パイプラインを使用してこの操作を実現できます。パイプラインはデータを処理するためのメカニズムであり、データのクリーニング、フィルタリング、変換、保存、出力などの特定のメソッドを定義します。
2. 簡単な例
次に、簡単な Spider を作成し、Scrapy を使用して、トップ 250 Douban 映画のデータを取得しましょう。まず、コマンド ラインで次のコマンドを使用して新しいプロジェクトを作成します。
scrapy startproject tutorial
チュートリアル フォルダーに移動し、douban_spider という名前のスパイダーを作成します。
scrapy genspider douban_spider movie.douban.com
次に、スパイダーを次のように構成する必要があります。ページをリクエストし、Web ページを解析します。次のコードを Spider ファイルに追加します。
import scrapy class DoubanSpider(scrapy.Spider): name = "douban" allowed_domains = ["movie.douban.com"] start_urls = [ "https://movie.douban.com/top250" ] def parse(self, response): for sel in response.xpath('//div[@class="info"]'): title = sel.xpath('div[@class="hd"]/a/span/text()').extract() yield {'title': title}
上記のコードでは、最初に Spider の名前とクロールされる Web サイトのドメイン名を定義します。次に、クロールする URL を定義し、ページを解析して必要なデータを抽出するための parse メソッドを作成しました。
「info」のクラス属性を持つ各要素について、XPath を使用して映画のタイトルを含む要素を抽出し、yield キーワードを使用してこれらの要素を返します。
最後に、抽出したデータを保存する必要があります。新しいパイプラインを作成して、抽出されたデータを処理および保存できます。以下は、抽出されたデータを JSON ファイルに保存する単純なパイプラインです:
import json class TutorialPipeline(object): def __init__(self): self.file = open('douban_top250.json', 'w') def process_item(self, item, spider): line = json.dumps(dict(item)) + " " self.file.write(line) return item def spider_closed(self, spider): self.file.close()
最後に、settings.py でパイプラインを構成する必要があります。 ITEM_PIPELINES に次のコードを追加するだけです:
ITEM_PIPELINES = { 'tutorial.pipelines.TutorialPipeline': 100, }
これで、単純な Scrapy Spider が作成できました。次のコマンドを実行して起動できます:
scrapy crawl douban
コマンドを実行すると、Scrapy が起動します。ページをリクエストしてデータを解析します。抽出されたデータは JSON ファイルに保存されます。
3. 結論
Scrapy は、非常に柔軟で強力な Web クローラー フレームワークです。 Scrapy を使用すると、効率的でスケーラブルな Web クローラーを簡単に構築し、必要なデータを抽出できます。この記事では、Web クローラーを学習している初心者に役立つことを願って、Scrapy の基本を紹介し、簡単な例を示します。
以上が新しいクローラーの必読書: Scrapy 入門ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。