使用镰刀从机构OAIPMH存储库检索所有记录时出现的问题

2024-05-12 22:54:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直致力于使用Python镰刀程序中的api函数从各个研究机构的OAI-PHM存储库中检索所有记录。我已经编写了一段代码,它执行一次连续的捕获,迭代存储库的记录,并将记录保存为XML文件以及SQL数据

然而,由于某些原因,我无法检索存储库中的所有记录,尤其是2017-2020年间的记录缺失。如果我使用镰刀程序中的“from参数”按日期执行选择性收割,我可以检索一些附加记录,但不是全部记录

我怀疑问题是由于OAI存储库中的一些记录是空的,而镰刀在遇到不包含任何信息的记录时会停止采集记录

我在代码中将可选参数“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()

Tags: 代码fromapitrue参数date记录record