PythonでLassieなどを用いてURLからWebページのデータを取得しJSON形式で出力する

スポンサーリンク

PythonでLassieなどを用いてURLからWebページのデータを取得しJSON形式で出力してみます。

今回はLassie、dataclasses、dataclasses_jsonを用います。ライブラリ・モジュールであるLassiedataclasses_jsonは、Pythonの標準ライブラリではありませんので、事前にインストールする必要があります。dataclassesは標準ライブラリ(Python 3.7より)です。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows11)

■URLからWebページのデータを取得しJSON形式で出力する

では、早速Lassieなどを用いてURLからWebページのデータを取得しJSON形式で出力してみます。

■コード

from dataclasses import dataclass
from dataclasses_json import dataclass_json
from lassie import Lassie

@dataclass_json
@dataclass
class WebpageData:
    url: str
    title: str
    description: str

def get_webpage_data(url):
    lassie = Lassie()
    webpage_data = WebpageData(
        url=url,
        title=lassie.fetch(url)['title'],
        description=lassie.fetch(url)['description'],
    )
    return webpage_data

url = "https://www.yahoo.co.jp/"  

webpage_data = get_webpage_data(url)
json_data = webpage_data.to_json(ensure_ascii=False)  

print(json_data)

まずは必要なモジュール(Lassie、dataclasses、dataclasses_json)のインポートします。次にデータクラスを定義します。今回はWebpageDataというWebページのデータを表すデータクラスです。url、title、descriptionの3つの属性を持ちます。

定義後、get_webpage_data関数を定義します。lassie = Lassie()によって、lassieオブジェクトを作成し、Webページのメタデータを抽出します。WebpageDataクラスのインスタンスであるwebpage_dataを作成します。url、title、descriptionの値は、lassie.fetch(url)を使用して取得されます。webpage_dataが返されます。

次にメインの処理を設定します。今回はurl変数にWebページのURLを指定します。今回は「https://www.yahoo.co.jp/」を使用します。get_webpage_data関数を呼び出し、urlを引数として渡します。これにより、Webページのデータが取得されます。webpage_dataオブジェクトをJSON形式にシリアライズするために、to_json(ensure_ascii=False)メソッドが使用されます。ensure_ascii=Falseは、非ASCII文字をエスケープしないようにするためのオプションで、日本語の文字化けの発生を防ぎます。最後に、JSON形式のデータがjson_data変数に代入されます。

代入後、json_data変数に代入されたJSON形式のデータを、print(json_data)を使用し出力します。

■実行・検証

このスクリプトを「l_w_json.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。

実行してみると指定されたURLのWebページのタイトルとディスクリプションがJSON形式で出力されることを確認できました。

コメント

タイトルとURLをコピーしました