ホームページ >バックエンド開発 >Python チュートリアル >Scrapy の動作: Baidu ニュース データのクロール

Scrapy の動作: Baidu ニュース データのクロール

WBOY
WBOYオリジナル
2023-06-23 08:50:091784ブラウズ

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 サイトの他の関連記事を参照してください。

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