Pythonでdatasetとrequestsを使用しURLからレスポンスを取得してみます。
なお、今回はdataset、requests、beautifulsoup4を用いますので、事前にこの3つのライブラリがインストールされているかを確認しスクリプトを実行してください。
■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows11)
■datasetとrequestsを使用しURLからレスポンスを取得する
では、早速datasetとrequestsを使用しURLからレスポンスを取得するスクリプトを書いていきます。
■コード
import dataset
import requests
from bs4 import BeautifulSoup
# データベースに接続
db = dataset.connect('sqlite:///:memory:')
# タイトルを保存するテーブルを作成
table = db['titles']
# 取得するWebサイトのURL
url = 'https://www.yahoo.co.jp/'
# Webサイトにリクエストを送信
response = requests.get(url)
# レスポンスのHTMLを解析
soup = BeautifulSoup(response.text, 'html.parser')
# タイトル要素を取得
title_element = soup.find('title')
# タイトルを取得
if title_element:
title = title_element.text
else:
title = 'No title'
# タイトルをデータベースに保存
table.insert(dict(url=url, title=title))
# データベースの内容を表示
for data in table.all():
print(data)まずはimport文で必要なモジュール(dataset、requests、beautifulsoup4)をインポートします。
次に、dataset.connect()関数を使用してSQLiteデータベースに接続します。データベースのURLとして「sqlite:///:memory:」を指定しているため、メモリ上に一時的なデータベースが作成されます。
datasetモジュールを使用して、db[‘titles’]という名前のテーブルを作成します。このテーブルは、WebサイトのURLとタイトルを保存するために使用されます。
次に、取得するWebサイトのURLを指定します。今回は「Yahoo! Japanのトップページ(’https://www.yahoo.co.jp/’)」を使用しています。
requests.get()関数を使用して、指定したURLにHTTP GETリクエストを送信し、レスポンスを取得します。
取得後、レスポンスのHTMLをBeautifulSoupを使って解析します。BeautifulSoup(response.text, ‘html.parser’)というコードは、HTML文書のテキストを解析し、解析済みのオブジェクトを作成します。
解析したHTMLから、soup.find(‘title’)を使用してタイトル要素を取得します。このコードは、HTML内で最初に見つかった<title>タグを取得します。
取得したタイトル要素から「.text」を使用してタイトル文字列を取得します。タイトル要素が存在しない場合は、’No title’という文字列が使用されます。
その後、table.insert(dict(url=url, title=title))を使用して、データベースのテーブルにURLとタイトルを保存します。保存後、for文でのループ処理を行い、table.all()を使用してテーブル内のすべてのデータを取得し、それぞれのデータを表示します。
■検証・実行
今回書いたスクリプトを「data_url.py」という名前でPythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。

実行してみると、モジュールを使用しWebサイトのタイトルを取得し、インメモリのSQLiteデータベースに保存し、保存したタイトルなどを表示させることができました。

コメント