Pythonでdatasetとrequestsを使用しURLからレスポンスを取得する

スポンサーリンク

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データベースに保存し、保存したタイトルなどを表示させることができました。

コメント

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