👏
OAI-PMHリポジトリからPythonでレコードを全件取得する
OAI-PMHリポジトリからPythonでレコードを全件取得するスクリプトです。参考になりましたら幸いです。
import requests
from requests import Request
import xml.etree.ElementTree as ET
# エンドポイントの定義
base_url = 'https://curation.library.t.u-tokyo.ac.jp/oai'
# OAI-PMH リクエストの初回実行
params = {
'verb': 'ListRecords',
'metadataPrefix': 'curation',
'set': '97590'
}
response = requests.get(base_url, params=params)
# 初回リクエストの準備
req = Request('GET', base_url,params=params)
prepared_req = req.prepare()
print("Sending request to:", prepared_req.url) # URLを出力
root = ET.fromstring(response.content)
data = []
# 全データの取得
while True:
# レコードの処理
for record in root.findall('.//{http://www.openarchives.org/OAI/2.0/}record'):
identifier = record.find('.//{http://www.openarchives.org/OAI/2.0/}identifier').text
print(f'Record ID: {identifier}')
# 他のデータもここで処理可能
data.append(record)
# resumptionTokenの取得と次のリクエストの実行
token_element = root.find('.//{http://www.openarchives.org/OAI/2.0/}resumptionToken')
if token_element is None or not token_element.text:
break # トークンがない場合、ループを終了
params = {
'verb': 'ListRecords',
'resumptionToken': token_element.text
}
response = requests.get(base_url, params=params)
root = ET.fromstring(response.content)
print("全件取得が完了しました。")
print(len(data))
Discussion