Python3,Bio Entrez,PubMed:是否可以获取一篇文章被引用的次数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python3,Bio Entrez,PubMed:是否可以获取一篇文章被引用的次数?相关的知识,希望对你有一定的参考价值。

我正在使用Entrez来搜索Pubmed上的文章。是否可以使用Entrez来确定使用搜索参数找到的每篇文章的引用次数?如果没有,是否可以使用其他方法?到目前为止,我的谷歌搜索还没有太多。

注意:引用文献的数量(在我的上下文中)是有关文章在其他文章中被引用的次数。

我发现的一件事:https://gist.github.com/mcfrank/c1ec74df1427278cbe53这可能表明我可以获取也在Pubmed数据库中的文章的引用次数,但是(对我而言)尚不清楚如何使用它来确定每篇文章的引用次数。

以下是我当前正在使用的代码(我希望在引文数量中添加'打印'行:]

#search pubmed

from Bio import Entrez
from Bio import Medline

search_string = r'("Blah Blah")'

Entrez.email = "hello_world@example.com" 
handle = Entrez.egquery(term=search_string)
record = Entrez.read(handle)
count = 0
for row in record["eGQueryResult"]:
        if row["DbName"]=="pubmed":
            print("Number of articles found with requested search parameters:", row["Count"])
            count = row["Count"]


handle = Entrez.esearch(db="pubmed", term=search_string, retmax=count)
record = Entrez.read(handle)
handle.close()
idlist = record["IdList"]

handle = Entrez.efetch(db="pubmed", id=idlist, rettype="medline", retmode="text")
records = Medline.parse(handle)

records = list(records)
x=1
for record in records:
    print("(" + str(x) + ")")
    print("Title:", record.get("TI", "?"))
    print("Authors: ", ", ".join(record.get("AU", "?")))
    print("Pub Date:", record.get("DP", "?"))
    print("Journal:", record.get("JT", "?"))
    print("DOI:", record.get("LID", "?")[:-6])
    #print("number of citations:", get.number_of_citations) #<--what I am requesting help about
    print("
")
    x += 1
答案

我通过编写脚本来解决这个问题,该脚本会在托管出版物的实际网站中进行爬网(使用DOI来查找网址),然后该脚本从该站点的xmlx数据中解析引文数量。不幸的是,这种方法仅适用于我感兴趣的特定期刊。

如果有兴趣的话,可以使用WebOfScience。它会执行此操作,并提供更多的引文数据,例如每年的引文以及总引文数量和更多数据。缺点是WebOfScience并非免费服务。

以上是关于Python3,Bio Entrez,PubMed:是否可以获取一篇文章被引用的次数?的主要内容,如果未能解决你的问题,请参考以下文章

使用biopython查询NCBI数据库

从 NCBI 书籍部分刮取数据?

生物信息常用数据库

Entrez Direct

python 使用Entrez API获取发布的引用的示例

python 使用Entrez API获取发布的引用的示例