Я работал над получением всех записей из репозитория OAI-PHM из различных исследовательских институтов, используя функцию api в программе Sickle в Python. Я написал код, который выполняет последовательный сбор данных, который выполняет итерацию по записям репозитория и сохраняет записи как XML -файл, а также SQL -данные.
Однако по какой-то причине Я не могу получить все записи в репозитории - отсутствуют записи, особенно между 2017-2020 годами. Если я выполняю выборочный сбор по дате с помощью параметра «from» в программе Sickle, я могу получить некоторые дополнительные записи, но не все.
Я подозреваю, что проблема связана с тем, что некоторые записей в репозитории OAI пусты, и Sickle прекращает сбор записей при обнаружении записи, не содержащей информации.
Я установил в коде необязательный параметр ignore_deleted на True, чтобы пропустить удаленные записи . Однако я не уверен, можно ли добавить дополнительный параметр, который пропускает пустую запись?
Ниже приведен отрывок из кода, который определяет последовательную сборку репозитория OAI.
import datetime
from sickle import Sickle
api_list = [ \
"https://pure.itu.dk/ws/oai", \
]
date="2020-08.01"
last_retrieval="1950.01.01"
for api in api_list:
institution = ""
institution = inst_institution(api)
record_total=0
sickle = Sickle(api)
harvest_id = uuid.uuid4() # generating a random ID for the record.
recs = sickle.ListRecords(**{'metadataPrefix': 'ddf-mxd', 'from': last_retrieval, 'until': date},ignore_deleted=True)
headers = sickle.ListIdentifiers(**{'metadataPrefix': 'ddf-mxd', 'from': last_retrieval, 'until': date},ignore_deleted=True)
for header in headers:
record_total = record_total + 1
try:
r=recs.next()