首先,在批量下载文件之前,我强烈建议您阅读电子实用程序使用指南。
如果您想要全文文章,您将需要将搜索限制为打开访问文件。此外,如果您想要任何好的文章,我建议您也将搜索限制在 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"))
Run Code Online (Sandbox Code Playgroud)
您可以使用PMC 网站上的搜索功能,它将显示生成的查询,您可以将其复制/粘贴到代码中。现在您已经完成搜索,您可以实际下载文件了:
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"])
Run Code Online (Sandbox Code Playgroud)
retstart和retmax循环中的变量来批量下载,以避免服务器泛滥。handle仅包含一个文件,handle.read()则将整个 XML 文件作为字符串包含。如果包含更多,则文章包含在<article></article>节点中。webenv启用usehistory="y"Entrez.read()有关使用 ElementTree 进行 XML 解析的一些提示: 您无法删除孙节点,因此您可能需要递归删除一些节点。node.text返回 中的文本,但仅限于第一个子节点,因此如果您想获取给定节点中的所有文本,则node需要执行类似的操作。"".join(node.itertext())
| 归档时间: |
|
| 查看次数: |
1875 次 |
| 最近记录: |