镰刀是否以随机顺序访问OAI记录?

2024-05-13 03:55:07 发布

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

我一直在使用Python中的镰刀库,以便从开放存取期刊目录中访问OAI-PMH记录。我注意到,下面的代码每次运行时(每次约2500-2600篇)都会产生与镰刀.ListRecords()访问的前4000篇文章相似但略有不同的英文文章数量。在我之前运行的检索和下载完整文章文本的另一段代码中,我注意到文章每次都会发生变化。这似乎镰刀并不是每次都以相同的顺序抓取OAI记录,这让我怀疑它们是否是以随机(ish)顺序抓取的?我是OAI格式的新手,所以我不确定这种(看似)随机排序是否是OAI记录通常如何存储的属性,DOAJ如何存储它们的属性,或者镰刀库在将OAI记录放入OAIIterator对象之前获取它们的方式

from sickle import Sickle
import time
from langdetect import detect

def get_time_estimate():
    sickle = Sickle('https://doaj.org/oai.article')
    records = sickle.ListRecords(metadataPrefix='oai_doaj')
    tot = 0
    num_eng = 0
    start_time = time.time()
    for rec in records:
        tot += 1
        metadata = rec.metadata
        if 'abstract' not in metadata:
            continue
        if 'fullTextUrl' not in metadata:
            continue
        abs = metadata['abstract'][0]
        full = metadata['fullTextUrl'][0]
        language = detect(abs)
        if language == 'en':
            num_eng += 1
        if tot == 4000:
            break
    print("Completed in %.2f seconds" % (time.time() - start_time))
    print("Number of English records: %s" % num_eng)

Tags: 代码inimportiftime记录文章num