1

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

但是由于某种原因,我无法检索存储库中的所有记录 - 特别是在 2017-2020 年之间缺少记录。如果我使用 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()
4

0 回答 0