根据NCBI帮助台的一个回答问题,我们无法批量下载" PubMed Central 。但是,我可以使用" NCBI E-utilities"使用 Efetch 在PMC数据库中下载所有全文,或者至少使用Entrez Programming Utilities中的 Esearch 查找所有相应的PMC?如果是,那怎么样?如果无法使用电子实用程序,还有其他方法可以下载所有全文文章吗?
答案 0 :(得分:2)
首先,在您批量下载文件之前,我强烈建议您阅读E-utilities usage guidelines。
如果您想要全文文章,那么您可能希望将搜索限制为打开访问文件。此外,如果您想要任何好的文章,我建议您将搜索限制在Medline文章中。然后你可以进行搜索。
使用Biopython,这给了我们:
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 website上的搜索功能,它会显示您可以复制/粘贴到代码中的生成查询。 现在您已完成搜索,您可以实际下载文件:
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"])
retstart
和retmax
来批量下载,以避免充斥服务器。handle
只包含一个文件,handle.read()
将整个XML文件包含为字符串。如果它包含更多,则文章包含在<article></article>
节点中。webenv
参数访问这些文章并通过usehistory="y"
有关使用ElementTree进行XML解析的一些提示:您无法删除孙子节点,因此您可能希望以递归方式删除某些节点。 node.text
会返回node
中的文字,但只返回第一个孩子,因此如果您想获取所有文字,则需要按照"".join(node.itertext())
的标准执行某些操作在给定的节点中。
答案 1 :(得分:0)
根据NCBI帮助台回答的问题之一,我们无法“批量下载” PubMed Central。
https://www.nlm.nih.gov/bsd/medline.html + https://www.ncbi.nlm.nih.gov/pmc/tools/openftlist/将下载其中的很大一部分(我不知道百分比)。确实会错过https://www.ncbi.nlm.nih.gov/pmc/tools/openftlist/中所述的PMC全文文章,这些文章的许可不允许重新分发。