Scrapy の動作: Douban 映画データのクロールと評価人気ランキング
Scrapy は、データを迅速かつ効率的にクロールするためのオープンソース Python フレームワークです。この記事では、Scrapy を使用して Douban 映画のデータと評価の人気をクロールします。
- 準備
まず、Scrapyをインストールする必要があります。コマンド ラインで次のコマンドを入力すると、Scrapy をインストールできます:
pip install scrapy
次に、Scrapy プロジェクトを作成します。コマンド ラインで、次のコマンドを入力します。
scrapy startproject doubanmovie
これにより、doubanmovie という名前の Scrapy プロジェクトが作成されます。次に、プロジェクト ディレクトリに移動し、douban.py という名前のスパイダーを作成します。コマンド ラインで、次のコマンドを入力します。
cd doubanmovie scrapy genspider douban douban.com
これで、Spider を使用できるようになりました。次に、必要なデータを取得するためのスパイダーの動作を定義します。
- 動画データのクロール
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 本の映画のデータがクロールされ、コマンド ラインに返されます。
- 評価人気ランキングの取得
これで、上位 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 本の映画のデータが取得され、コマンドラインに返されます。この時点で、すべての映画のランキングが表示されます。
- 結論
Scrapy は、データを迅速かつ効率的にクロールするための非常に強力で柔軟なツールです。この記事では、Scrapy を使用して、Douban 映画のデータと評価の人気をクロールすることに成功しました。
Python コードと XPath を使用して Web ページ上の情報を選択的に取得し、yield ステートメントを使用してそれをユーザーに返します。プロセス全体を通じて、Scrapy は大量のデータを管理およびクロールするためのシンプルかつ効果的な方法を提供し、データ分析と処理を迅速に実行できるようにします。
以上がScrapy の動作: Douban 映画データのクロールと評価人気ランキングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









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

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

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

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

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

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

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

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世紀ピクチャーズ、『ブレードランナー』『プロメテウス』のリドリー・スコット監督がプロデューサーを務め、フェデ・アルヴァーレ監督、フェデ・アルヴァーレとロド・セイグエス脚本、カード・リー・スペイニー、イザベラ・マーセド、アイリーン・ウー、スパイク・フェイ
