是否可以获取一篇文章被引用的次数?
Is it possible to get the number of times an article has been cited?
我正在使用 Entrez 搜索 Pubmed 上的文章。是否可以使用 Entrez 来确定使用我的搜索参数找到的每篇文章的引用次数?如果没有,我可以使用其他方法吗?到目前为止,我的谷歌搜索结果并不多。
注意:引用次数(在我的上下文中)是相关文章在其他文章中被引用的次数。
我发现了一件事:https://gist.github.com/mcfrank/c1ec74df1427278cbe53
这可能表明我可以获得同样在 Pubmed DB 中的文章的引用次数,但(对我而言)我不清楚如何使用它来确定每篇文章的引用次数。
以下是我目前正在使用的代码(我想包括引用次数的 'print' 行):
#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("\n")
x += 1
我通过编写脚本来解决这个问题,该脚本爬取托管出版物的实际网站(使用 DOI 查找网址),然后脚本从网站的 xmlx 数据中解析出引用量。不幸的是,此方法适用于我(仅)感兴趣的特定期刊。
如果有人感兴趣,另一种方法是使用 WebOfScience。它这样做并提供了更多的引用数据,例如每年的引用次数以及总引用次数和更多数据。缺点是 WebOfScience 不是免费服务。
遗憾的是,您只能获取 pubmed central 中引用了相关文章的文章列表。
idlist = ['2344532', '2445435'] # this is your PMID list
citations = []
for pmid in idlist:
q = Entrez.read(Entrez.elink(dbfrom="pubmed", db="pmc", LinkName="pubmed_pubmed_citedin", from_uid=pmid))
for i in range(0, len(q)):
if len(q[i]["LinkSetDb"]) > 0:
pmids_list = [link["Id"] for link in q[i]["LinkSetDb"][0]["Link"]]
pmids = ";".join(pmids_list)
citations.append([q[i]["IdList"][0], pmids])
else:
citations.append([q[i]["IdList"][0]])
我正在使用 Entrez 搜索 Pubmed 上的文章。是否可以使用 Entrez 来确定使用我的搜索参数找到的每篇文章的引用次数?如果没有,我可以使用其他方法吗?到目前为止,我的谷歌搜索结果并不多。
注意:引用次数(在我的上下文中)是相关文章在其他文章中被引用的次数。
我发现了一件事:https://gist.github.com/mcfrank/c1ec74df1427278cbe53 这可能表明我可以获得同样在 Pubmed DB 中的文章的引用次数,但(对我而言)我不清楚如何使用它来确定每篇文章的引用次数。
以下是我目前正在使用的代码(我想包括引用次数的 'print' 行):
#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("\n")
x += 1
我通过编写脚本来解决这个问题,该脚本爬取托管出版物的实际网站(使用 DOI 查找网址),然后脚本从网站的 xmlx 数据中解析出引用量。不幸的是,此方法适用于我(仅)感兴趣的特定期刊。
如果有人感兴趣,另一种方法是使用 WebOfScience。它这样做并提供了更多的引用数据,例如每年的引用次数以及总引用次数和更多数据。缺点是 WebOfScience 不是免费服务。
遗憾的是,您只能获取 pubmed central 中引用了相关文章的文章列表。
idlist = ['2344532', '2445435'] # this is your PMID list
citations = []
for pmid in idlist:
q = Entrez.read(Entrez.elink(dbfrom="pubmed", db="pmc", LinkName="pubmed_pubmed_citedin", from_uid=pmid))
for i in range(0, len(q)):
if len(q[i]["LinkSetDb"]) > 0:
pmids_list = [link["Id"] for link in q[i]["LinkSetDb"][0]["Link"]]
pmids = ";".join(pmids_list)
citations.append([q[i]["IdList"][0], pmids])
else:
citations.append([q[i]["IdList"][0]])