この記事では、requests、BeautifulSoup、およびdatetimeモジュールを使用して、NY連銀のウェブページからプレスリリースの情報(タイトル、日付、URL)を取得する方法を解説します。
コードの概要
import requests
from bs4 import BeautifulSoup
from datetime import datetime
最初に、必要なライブラリをインポートします。
requests: ウェブページの内容を取得するためのライブラリ。
BeautifulSoup: 取得したウェブページの内容を解析して必要なデータを抽出します。
datetime: 日付をフォーマットするためのライブラリ。
データ取得の流れ
まず、ウェブページからデータを取得し、その内容を解析します。
def extract_press_releases(url):
response = requests.get(url) # ウェブページの内容を取得
soup = BeautifulSoup(response.text, 'html.parser')
次に、プレスリリースの情報(日付、タイトル、URL)を取得します。
press_releases = []
rows = soup.select('tr.Research, tr.Press') # プレスリリースの行をすべて取得
for row in rows:
date_tag = row.select_one('td.dirColL div')
if date_tag:
raw_date = date_tag.get_text(strip=True) # 日付を取得
try:
date = datetime.strptime(raw_date, "%b %d, %Y").strftime("%Y-%m-%d") # 日付をyyyy-mm-dd形式に変換
except ValueError:
date = "Invalid date format"
else:
date = "Date not found"
title_tag = row.select_one('td.dirColR div.tablTitle a')
if title_tag:
title = title_tag.get_text(strip=True) # タイトルを取得
link = f"https://www.newyorkfed.org{title_tag.get('href')}" # フルURLを作成
else:
title = "Title not found"
link = "Link not found"
press_releases.append((date, title, link)) # リストに追加
return press_releases
rows: ウェブページからプレスリリースのリストを取得します。
date_tag: プレスリリースの日付を抽出し、datetimeライブラリでyyyy-mm-dd形式に変換します。
title_tag: プレスリリースのタイトルとリンクを取得します。
結果の表示
最後に、取得した情報を表示します。
url = 'https://www.newyorkfed.org/press/#press-releases'
press_releases = extract_press_releases(url)
for date, title, link in press_releases:
print(f"Date: {date}\nTitle: {title}\nURL: {link}\n")