ホームページ  >  記事  >  バックエンド開発  >  動作中のスクレイピー クローラー: Maoyan の映画ランキング データをクロールします。

動作中のスクレイピー クローラー: Maoyan の映画ランキング データをクロールします。

WBOY
WBOYオリジナル
2023-06-22 08:58:552215ブラウズ

スクレイピー クローラーの実践: マオヤン映画ランキング データのクロール

インターネットの発展に伴い、データ クローリングはビッグ データ時代の重要な部分になりました。データクローリングのプロセスでは、クローラテクノロジーを使用して、その時点で必要なデータを自動的に取得し、処理して分析できます。近年、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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。