首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >下载PMC和PubMed数据库中的所有全文文章

下载PMC和PubMed数据库中的所有全文文章
EN

Stack Overflow用户
提问于 2017-11-14 19:01:52
回答 2查看 3K关注 0票数 6

根据NCBI服务台回答的问题之一,我们不能“批量下载”PubMed Central。但是,我是否可以使用"NCBI -实用程序“下载PMC数据库中的所有全文文章,使用Efetch,或者至少在Entrez编程实用程序中使用搜索找到所有相应的PMCids?如果是,那怎么做?如果不能使用E-实用程序,是否有其他方法下载所有全文文章?

EN

回答 2

Stack Overflow用户

发布于 2018-03-27 14:05:09

首先,在批量下载文件之前,我强烈建议您阅读E-实用程序使用指南

如果您想要全文文章,您将需要限制您的搜索打开访问文件。此外,我还建议,如果你想要任何好的文章,我也建议你的搜索仅限于Medline文章。然后你就可以做搜索了。

使用Biopython,我们可以看到:

代码语言:javascript
运行
复制
search_query = 'medline[sb] AND "open access"[filter]'

# getting search results for the query
search_results = Entrez.read(Entrez.esearch(db="pmc", term=search_query, retmax=10, usehistory="y"))

您可以在PMC网站上使用搜索函数,它将显示生成的查询,您可以将其复制/粘贴到代码中。现在您已经完成了搜索,您可以实际下载以下文件:

代码语言:javascript
运行
复制
handle = Entrez.efetch(db="pmc", rettype="full", retmode="xml", retstart=0, retmax=int(search_results["Count"]), webenv=search_results["WebEnv"], query_key=search_results["QueryKey"])
  • 您可能希望通过循环中的变量更改retstartretmax来批量下载,以避免淹没服务器。
  • 如果handle只包含一个文件,则handle.read()作为字符串包含整个XML文件。如果包含更多内容,则文章包含在<article></article>节点中。
  • 全文仅在XML中可用,而且可用的默认解析器不能处理XML名称空间,因此您需要独立使用ElementTree (或其他解析器)来解析XML。
  • 在这里,文章是由于E-实用程序的内部历史而找到的,E-实用程序使用webenv参数访问,并通过Entrez.read()中的usehistory="y"参数启用。

关于使用ElementTree进行XML解析的一些技巧:您不能删除一个外孙节点,所以您可能希望递归地删除一些节点。node.text返回node中的文本,但只返回到第一个子节点,因此,如果要在给定节点中获取所有文本,则需要按照"".join(node.itertext())的方式进行操作。

票数 2
EN

Stack Overflow用户

发布于 2020-09-13 05:11:07

根据NCBI服务台回答的问题之一,我们不能“批量下载”PubMed Central。

https://www.nlm.nih.gov/bsd/medline.html + https://www.ncbi.nlm.nih.gov/pmc/tools/openftlist/将下载其中的很大一部分(我不知道百分比)。它确实会错过PMC的全文文章,其许可不允许重新分配,正如在https://www.ncbi.nlm.nih.gov/pmc/tools/openftlist/上解释的那样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47293387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档