ホームページ >バックエンド開発 >Python チュートリアル >動作中のスクレイピー クローラー: Maoyan の映画ランキング データをクロールします。
スクレイピー クローラーの実践: マオヤン映画ランキング データのクロール
インターネットの発展に伴い、データ クローリングはビッグ データ時代の重要な部分になりました。データクローリングのプロセスでは、クローラテクノロジーを使用して、その時点で必要なデータを自動的に取得し、処理して分析できます。近年、Pythonは最も人気のあるプログラミング言語の一つとなっていますが、その中でもScrapyはPythonをベースとした強力なクローラフレームワークであり、幅広い用途があり、特にデータクローリングの分野で注目を集めています。
この記事は、Maoyan の映画ランキング データをクロールするための Scrapy フレームワークに基づいています。具体的なプロセスは、ページ構造の分析、クローラー フレームワークの作成、ページの解析、データの保存の 4 つの部分に分かれています。
1. ページ構造を分析する
まず、まおやん映画ランキング ページの構造を分析する必要があります。操作の便宜のため、ページ分析には Google Chrome ブラウザを使用し、必要な情報の抽出には XPath を使用します。
ご覧のとおり、Maoyan の映画ランキング ページには複数の映画に関する情報が含まれており、各映画には下の図のような HTML コード ブロックがあります。
私たちの目標は、各 HTML コード ブロックから映画の名前、主演の役割、公開時間、映画ポスターのリンク、評価の 5 つのデータを取得することです。次に、F12 キーを押して Google Chrome ブラウザで開発者ツールを開き、[要素] タブを選択し、抽出する必要があるターゲット要素にマウスを移動し、右クリックして [コピー] -> [XPath のコピー] を選択します。 「。」
コピーされた XPath パスは次のとおりです:
/html/body/div[3]/div/div[2]/dl/dd[1]/div/div/div[ 1 ]/p[1]/a/text()
ここで、「/html/body/div[3]/div/div[2]/dl/dd」はムービー全体の親ノードを表します下にスクロールして、抽出する必要がある要素を見つけます。
2. クローラー フレームワークを作成する
次に、Scrapy プロジェクトを作成する必要があります。Scrapy の公式ドキュメント (https://docs.scrapy.org/en/latest/intro) を参照してください。 /チュートリアル.html)。プロジェクトを作成した後、Spiders ディレクトリに maoyan.py という名前の新しいファイルを作成します。
以下はクローラー フレームワーク コードです:
importscrapy
from maoyan.items import MaoyanItem
class MaoyanSpider(scrapy.Spider):
name = 'maoyan' allowed_domains = ['maoyan.com'] start_urls = ['http://maoyan.com/board/4'] def parse(self, response): movies = response.xpath('//dl[@class="board-wrapper"]/dd') for movie in movies: item = MaoyanItem() item['title'] = movie.xpath('.//p[@class="name"]/a/@title').extract_first() item['actors'] = movie.xpath('.//p[@class="star"]/text()').extract_first().strip() item['release_date'] = movie.xpath('.//p[@class="releasetime"]/text()').extract_first().strip() item['image_url'] = movie.xpath('.//img/@data-src').extract_first() item['score'] = movie.xpath('.//p[@class="score"]/i[@class="integer"]/text()').extract_first() + movie.xpath('.//p[@class="score"]/i[@class="fraction"]/text()').extract_first() yield item
コードでは、まず Spider の名前、allowed_domains、start_urls を定義します。このうち、「allowed_domains」は、このドメイン名に属する URL のみがクローラーによってアクセスされ、抽出されることを意味します。同時に、「start_urls」は、クローラーが要求する最初の URL アドレスを示します。
Spider の parse メソッドは応答からコンテンツを受け取り、XPath パスを通じて各映画の名前、主演の役割、公開時刻、映画ポスターのリンク、評価の 5 つのデータ項目を抽出し、MaoyanItem に保存します。
最後に、yield キーワードを通じて各 Items オブジェクトを返しました。注: 定義した項目オブジェクトは items.py という名前のファイル内にあるため、インポートする必要があります。
3. ページを解析する
クローラーがクロールする必要があるページを見つけると、HTML ドキュメントの解析を開始して、必要な情報を抽出できます。コンテンツのこの部分では、主に XPath クエリと Scrapy での応答オブジェクトの正規表現処理に焦点を当てています。
この例では、XPath パスを使用して、Maoyan 映画ランキング ページの映画ごとに 5 つのデータを抽出します。
4. データの保存
データが解析された後、それを保存する必要があります。一般的に、取得したデータはファイルに保存するか、データベースに保存します。
この例では、データを .csv ファイルに保存することを選択します。
import csv
class MaoyanPipeline(object):
def __init__(self): self.file = open('maoyan_top100_movies.csv', 'w', newline='', encoding='utf-8') self.writer = csv.writer(self.file) def process_item(self, item, spider): row = [item['title'], item['actors'], item['release_date'], item['image_url'], item['score']] self.writer.writerow(row) return item def close_spider(self, spider): self.file.close()
上記のコードでは、Python の内部 csv モジュールを使用して、maoyan_top100_movies.csv という名前のファイルにデータを書き込みます。スパイダーを閉じると、csv ファイルも閉じられます。
概要
この記事では、Scrapy フレームワークを使用して Maoyan の映画ランキング データをクロールする方法を学びました。まずページ構造を分析し、次にデータをクロールし、ページを解析し、データを保存するための Scrapy フレームワークを作成しました。実際の戦闘では、データを取得する際の合法性、使いやすさ、効率性を統一する方法を学ぶことができます。
以上が動作中のスクレイピー クローラー: Maoyan の映画ランキング データをクロールします。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。