ホームページ バックエンド開発 Python チュートリアル Scrapy の動作: Douban 映画データのクロールと評価人気ランキング

Scrapy の動作: Douban 映画データのクロールと評価人気ランキング

Jun 22, 2023 pm 01:49 PM
豆板 這う scrapy

Scrapy は、データを迅速かつ効率的にクロールするためのオープンソース Python フレームワークです。この記事では、Scrapy を使用して Douban 映画のデータと評価の人気をクロールします。

  1. 準備

まず、Scrapyをインストールする必要があります。コマンド ラインで次のコマンドを入力すると、Scrapy をインストールできます:

pip install scrapy
ログイン後にコピー

次に、Scrapy プロジェクトを作成します。コマンド ラインで、次のコマンドを入力します。

scrapy startproject doubanmovie
ログイン後にコピー

これにより、doubanmovie という名前の Scrapy プロジェクトが作成されます。次に、プロジェクト ディレクトリに移動し、douban.py という名前のスパイダーを作成します。コマンド ラインで、次のコマンドを入力します。

cd doubanmovie
scrapy genspider douban douban.com
ログイン後にコピー

これで、Spider を使用できるようになりました。次に、必要なデータを取得するためのスパイダーの動作を定義します。

  1. 動画データのクロール

Spider を使用して Douban の動画データをクロールします。具体的には、次の情報を取得します:

  • 映画名
  • 監督
  • 俳優
  • タイプ
  • 言語
  • リリース日
  • 長さ
  • 評価
  • レビューアーの数

douban.pyファイルを開くに、次のコードを追加します。

import scrapy

class DoubanSpider(scrapy.Spider):
    name = 'douban'
    allowed_domains = ['douban.com']
    start_urls = ['https://movie.douban.com/top250']

    def parse(self, response):
        movie_list = response.xpath('//div[@class="item"]')
        for movie in movie_list:
            yield {
                'name': movie.xpath('.//span[@class="title"]/text()').get(),
                'director': movie.xpath('.//div[@class="bd"]/p/text()[1]').get(),
                'actors': movie.xpath('.//div[@class="bd"]/p/text()[2]').get(),
                'genre': movie.xpath('.//div[@class="bd"]/p/text()[3]').get(),
                'country': movie.xpath('.//div[@class="bd"]/p/text()[4]').get(),
                'language': movie.xpath('.//div[@class="bd"]/p/text()[5]').get(),
                'release_date': movie.xpath('.//div[@class="bd"]/p/text()[6]').get(),
                'duration': movie.xpath('.//div[@class="bd"]/p/text()[7]').get(),
                'rating': movie.xpath('.//span[@class="rating_num"]/text()').get(),
                'num_reviews': movie.xpath('.//div[@class="star"]/span[@class="rating_num"]/text()').get(),
            }
ログイン後にコピー

このコードでは、XPath を使用して、取得する必要がある情報を選択します。 yield を使用してこの情報を生成し、return を使用してそれをユーザーに返します。

ここで Spider を実行すると (次のコマンドを実行します:scrapy roll douban)、最初の 250 本の映画のデータがクロールされ、コマンド ラインに返されます。

  1. 評価人気ランキングの取得

これで、上位 250 本の映画データの取得に成功しました。次に、評価人気ランキングを取得します。

Douban 映画の TOP250 リストをクロールするには、まず新しい Spider を作成する必要があります。このリストを使用して映画のランキングを取得します。

douban.py ファイルに次のコードを追加します。

import scrapy

class DoubanSpider(scrapy.Spider):
    name = 'douban'
    allowed_domains = ['douban.com']
    start_urls = ['https://movie.douban.com/top250']

    def parse(self, response):
        movie_list = response.xpath('//div[@class="item"]')
        for movie in movie_list:
            yield {
                'name': movie.xpath('.//span[@class="title"]/text()').get(),
                'director': movie.xpath('.//div[@class="bd"]/p/text()[1]').get(),
                'actors': movie.xpath('.//div[@class="bd"]/p/text()[2]').get(),
                'genre': movie.xpath('.//div[@class="bd"]/p/text()[3]').get(),
                'country': movie.xpath('.//div[@class="bd"]/p/text()[4]').get(),
                'language': movie.xpath('.//div[@class="bd"]/p/text()[5]').get(),
                'release_date': movie.xpath('.//div[@class="bd"]/p/text()[6]').get(),
                'duration': movie.xpath('.//div[@class="bd"]/p/text()[7]').get(),
                'rating': movie.xpath('.//span[@class="rating_num"]/text()').get(),
                'num_reviews': movie.xpath('.//div[@class="star"]/span[@class="rating_num"]/text()').get(),
            }

        next_page = response.xpath('//span[@class="next"]/a/@href')
        if next_page:
            url = response.urljoin(next_page[0].get())
            yield scrapy.Request(url, callback=self.parse)
ログイン後にコピー

コードでは、next_page という変数を使用して、最後のページに到達したかどうかを確認します。まだ最後のページに到達していない場合は、次のページまでクロールを続けます。

次に、映画のランキングを取得するために解析メソッドを更新する必要があります。 Python の enumerate 関数を使用して、各映画にランキングを関連付けます。

douban.py ファイルで、元の解析メソッドを置き換えます:

def parse(self, response):
        movie_list = response.xpath('//div[@class="item"]')
        for i, movie in enumerate(movie_list):
            yield {
                'rank': i + 1,
                'name': movie.xpath('.//span[@class="title"]/text()').get(),
                'director': movie.xpath('.//div[@class="bd"]/p/text()[1]').get(),
                'actors': movie.xpath('.//div[@class="bd"]/p/text()[2]').get(),
                'genre': movie.xpath('.//div[@class="bd"]/p/text()[3]').get(),
                'country': movie.xpath('.//div[@class="bd"]/p/text()[4]').get(),
                'language': movie.xpath('.//div[@class="bd"]/p/text()[5]').get(),
                'release_date': movie.xpath('.//div[@class="bd"]/p/text()[6]').get(),
                'duration': movie.xpath('.//div[@class="bd"]/p/text()[7]').get(),
                'rating': movie.xpath('.//span[@class="rating_num"]/text()').get(),
                'num_reviews': movie.xpath('.//div[@class="star"]/span[@class="rating_num"]/text()').get(),
            }

        next_page = response.xpath('//span[@class="next"]/a/@href')
        if next_page:
            url = response.urljoin(next_page[0].get())
            yield scrapy.Request(url, callback=self.parse)
ログイン後にコピー

ここで、Spider を再度実行すると、最初の 250 本の映画のデータが取得され、コマンドラインに返されます。この時点で、すべての映画のランキングが表示されます。

  1. 結論

Scrapy は、データを迅速かつ効率的にクロールするための非常に強力で柔軟なツールです。この記事では、Scrapy を使用して、Douban 映画のデータと評価の人気をクロールすることに成功しました。

Python コードと XPath を使用して Web ページ上の情報を選択的に取得し、yield ステートメントを使用してそれをユーザーに返します。プロセス全体を通じて、Scrapy は大量のデータを管理およびクロールするためのシンプルかつ効果的な方法を提供し、データ分析と処理を迅速に実行できるようにします。

以上がScrapy の動作: Douban 映画データのクロールと評価人気ランキングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Scrapy は WeChat パブリック アカウント記事のクロールと分析を実装します Scrapy は WeChat パブリック アカウント記事のクロールと分析を実装します Jun 22, 2023 am 09:41 AM

Scrapy は記事のクローリングと WeChat パブリックアカウントの分析を実装します 近年人気のソーシャルメディアアプリケーションである WeChat で運用されているパブリックアカウントも非常に重要な役割を果たしています。誰もが知っているように、WeChat の公開アカウントは記事、グラフィック メッセージ、その他の情報を公開できるため、情報と知識の海です。この情報は、メディア報道、学術研究など、さまざまな分野で広く使用できます。そこで、この記事では、Scrapy フレームワークを使用して WeChat パブリック アカウントの記事をクロールおよび分析する方法を紹介します。 Scr

New York Times API を使用したメタデータのスクレイピング New York Times API を使用したメタデータのスクレイピング Sep 02, 2023 pm 10:13 PM

はじめに 先週、私はメタデータを収集するための Web ページのスクレイピングについての紹介を書き、ニューヨーク タイムズの Web サイトをスクレイピングすることは不可能であると述べました。ニューヨーク タイムズのペイウォールは、基本的なメタデータを収集しようとする試みをブロックします。しかし、New York Times API を使用してこの問題を解決する方法があります。最近、Yii プラットフォーム上でコミュニティ Web サイトを構築し始めました。これについては、今後のチュートリアルで公開する予定です。自分のサイトのコンテンツに関連するリンクを簡単に追加できるようにしたいと考えています。 URL をフォームに簡単に貼り付けることはできますが、タイトルやソース情報を提供するのは時間がかかります。そこで、今日のチュートリアルでは、最近書いたスクレイピング コードを拡張して、ニューヨーク タイムズ API を利用して、ニューヨーク タイムズ リンクを追加するときに見出しを収集します。覚えておいてください、私も関わっています

AjaxベースのScrapy非同期読み込み実装方法 AjaxベースのScrapy非同期読み込み実装方法 Jun 22, 2023 pm 11:09 PM

Scrapy は、Web サイトからデータを迅速かつ効率的に取得できるオープンソースの Python クローラー フレームワークです。ただし、多くの Web サイトでは Ajax 非同期読み込みテクノロジーが使用されているため、Scrapy がデータを直接取得することはできません。この記事では、Ajax 非同期読み込みをベースとした Scrapy の実装方法を紹介します。 1. Ajax 非同期ロードの原則 Ajax 非同期ロード: 従来のページロード方法では、ブラウザがサーバーにリクエストを送信した後、サーバーが応答を返してページ全体をロードするまで待ってから、次のステップに進む必要があります。

Douban アプリで英語モードを設定する方法 Douban アプリで英語モードを設定する方法 Douban アプリで英語モードを設定する方法 Douban アプリで英語モードを設定する方法 Mar 12, 2024 pm 02:46 PM

Douban アプリで英語モードを設定するにはどうすればよいですか? Douban アプリは、さまざまなリソースのレビューを表示できるソフトウェアです。このソフトウェアには多くの機能があります。ユーザーがこのソフトウェアを初めて使用するときは、ログインする必要があります。このソフトウェアのデフォルト言語は中国語モードの場合、一部の言語です。英語モードを使用したいが、このソフトウェアで英語モードを設定する方法がわからないユーザーは、以下のエディターで英語モードの設定方法をまとめましたので、参考にしてください。 Douban アプリで英語モードを設定する方法: 1. 携帯電話で「Douban」アプリを開きます; 2. 「マイ」をクリックします; 3. 右上隅の「設定」を選択します。

悪質なケース分析: LinkedIn で企業情報をクロールする方法 悪質なケース分析: LinkedIn で企業情報をクロールする方法 Jun 23, 2023 am 10:04 AM

Scrapy は、インターネット上の関連情報を迅速かつ簡単に取得できる Python ベースのクローラー フレームワークです。この記事では、Scrapy のケースを使用して、LinkedIn で企業情報をクロールする方法を詳細に分析します。ターゲット URL を決定する まず、ターゲットが LinkedIn 上の企業情報であることを明確にする必要があります。したがって、LinkedIn の企業情報ページの URL を見つける必要があります。 LinkedIn Web サイトを開き、検索ボックスに会社名を入力し、

PHP プロジェクトで API インターフェイスを呼び出してデータをクロールおよび処理するにはどうすればよいですか? PHP プロジェクトで API インターフェイスを呼び出してデータをクロールおよび処理するにはどうすればよいですか? Sep 05, 2023 am 08:41 AM

PHP プロジェクトで API インターフェイスを呼び出してデータをクロールおよび処理するにはどうすればよいですか? 1. はじめに PHP プロジェクトでは、多くの場合、他の Web サイトからデータをクロールし、これらのデータを処理する必要があります。多くの Web サイトでは API インターフェイスが提供されており、これらのインターフェイスを呼び出すことでデータを取得できます。この記事では、PHP を使用して API インターフェイスを呼び出し、データをクロールおよび処理する方法を紹介します。 2. API インターフェースの URL とパラメーターを取得する 開始する前に、ターゲット API インターフェースの URL と必要なパラメーターを取得する必要があります。

Scrapy 最適化のヒント: 重複 URL のクロールを減らし、効率を向上させる方法 Scrapy 最適化のヒント: 重複 URL のクロールを減らし、効率を向上させる方法 Jun 22, 2023 pm 01:57 PM

Scrapy は、インターネットから大量のデータを取得するために使用できる強力な Python クローラー フレームワークです。ただし、Scrapy を開発する場合、重複した URL をクロールするという問題が頻繁に発生します。これは、多くの時間とリソースを無駄にし、効率に影響を与えます。この記事では、重複 URL のクロールを減らし、Scrapy クローラーの効率を向上させるための Scrapy 最適化テクニックをいくつか紹介します。 1. Scrapy クローラーの start_urls 属性と allowed_domains 属性を使用して、

スペーススリラー映画『エイリアン:ザ・ラストシップ』はDoubanで7.7を獲得し、公開翌日には興行収入が1億を突破した。 スペーススリラー映画『エイリアン:ザ・ラストシップ』はDoubanで7.7を獲得し、公開翌日には興行収入が1億を突破した。 Aug 17, 2024 pm 10:50 PM

8月17日のこのウェブサイトのニュースによると、20世紀映画のスペーススリラー『エイリアン:ザ・ラストシップ』が昨日(8月16日)中国本土で公開され、本日豆板スコアが7.7と発表された。 Beacon Professional Edition のリアルタイム データによると、8 月 17 日 20:5 の時点で、映画の興行収入は 1 億を超えています。当サイトの評価分布は以下の通り 星5つが20.9% 星4つが49.5% 星3つが25.4% 星2つが3.7% 星1つが0.6% 『エイリアン:デス・シップ』は、 20世紀ピクチャーズ、『ブレードランナー』『プロメテウス』のリドリー・スコット監督がプロデューサーを務め、フェデ・アルヴァーレ監督、フェデ・アルヴァーレとロド・セイグエス脚本、カード・リー・スペイニー、イザベラ・マーセド、アイリーン・ウー、スパイク・フェイ

See all articles