ホームページ >バックエンド開発 >Python チュートリアル >Scrapy の動作: Baidu ニュース データのクロール
Scrapy の実行: Baidu ニュース データのクロール
インターネットの発展に伴い、人々が情報を入手する主な方法は従来のメディアからインターネットに移り、人々はニュース情報を入手するためにますますインターネットに依存するようになりました。 。研究者やアナリストにとって、分析や研究には大量のデータが必要です。そこで、この記事ではScrapyを使ってBaiduのニュースデータをクロールする方法を紹介します。
Scrapy は、Web サイトのデータを迅速かつ効率的にクロールできるオープンソースの Python クローラー フレームワークです。 Scrapy は、強力な Web ページ解析機能とクローリング機能に加え、優れたスケーラビリティと高度なカスタマイズ機能を提供します。
ステップ 1: Scrapy をインストールする
始める前に、Scrapy とその他のライブラリをインストールする必要があります。インストールは次のコマンドで完了できます:
pip install scrapy pip install requests pip install bs4
ステップ 2: Scrapy プロジェクトの作成
次のコマンドで Scrapy プロジェクトを作成します:
scrapy startproject baiduNews
コマンドが完了したら実行すると、baiduNews という名前のフォルダーが現在のディレクトリに作成され、Scrapy プロジェクトの初期構造が含まれます。
ステップ 3: Spider を作成する
Scrapy では、Spider は Web コンテンツをクロールするために使用されるプロセッサです。 Baidu News Web サイトからデータを取得するには Spider を作成する必要があります。まず、プロジェクトのルート ディレクトリに Spiders フォルダーを作成し、その中にスパイダー テンプレートに適合する Python ファイルを作成する必要があります。
import scrapy class BaiduSpider(scrapy.Spider): name = "baidu" start_urls = [ "http://news.baidu.com/" ] def parse(self, response): pass
上記のコードでは、最初に Scrapy ライブラリをインポートし、BaiduSpider という名前のクラスを作成しました。このクラスでは、Baidu ニュースの URL を含むリストである変数 start_urls を定義します。 parse メソッドはデータ キャプチャを実行するためのコア関数ですが、ここでは空の関数を定義するだけです。次に、ニュース データを取得するためのテンプレートを定義する必要があります。
import scrapy from baiduNews.items import BaidunewsItem from bs4 import BeautifulSoup class BaiduSpider(scrapy.Spider): name = "baidu" start_urls = [ "http://news.baidu.com/" ] def parse(self, response): soup = BeautifulSoup(response.body, "html.parser") results = soup.find_all("div", class_="hdline_article_tit") for res in results: item = BaidunewsItem() item["title"] = res.a.string.strip() item["url"] = res.a.get("href").strip() item["source"] = "百度新闻" yield item
上記のコードでは、百度ニュースの見出しである hdline_article_tit クラスの要素がすべて見つかりました。次に、BeautifulSoup を使用してページを解析し、ループ内で BaidunewsItem クラス オブジェクトを作成します。最後に、yield ステートメントを通じてデータを返します。
ステップ 4: アイテムを定義する
Scrapy では、クロールされたデータ構造を定義するためにアイテムが使用されます。プロジェクトの items.py ファイルで項目テンプレートを定義する必要があります。
import scrapy class BaidunewsItem(scrapy.Item): title = scrapy.Field() url = scrapy.Field() source = scrapy.Field()
ステップ 5: スパイダーを開始してデータを出力する
次のコマンドを実行するだけで、スパイダーを開始してデータを出力できます:
scrapy crawl baidu -o baiduNews.csv
コマンドの実行後、クロールされたすべてのニュース データを含む、baiduNews.csv という名前のファイルがプロジェクトのルート ディレクトリに作成されます。
概要
Scrapy を使用すると、Baidu ニュース データを迅速かつ効率的に取得し、ローカルに保存できます。 Scrapy は拡張性に優れており、複数のデータ形式での出力をサポートしています。この記事では、Scrapy の簡単なアプリケーション シナリオのみを紹介しますが、Scrapy にはまだ多くの強力な機能があり、探索するのを待っています。
以上がScrapy の動作: Baidu ニュース データのクロールの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。