PythonでLassieなどを用いてURLからWebページのデータを取得しJSON形式で出力してみます。
今回はLassie、dataclasses、dataclasses_jsonを用います。ライブラリ・モジュールであるLassieとdataclasses_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形式で出力されることを確認できました。
コメント