如何从Pubmed下载完整的文章文本?

时间:2016-06-14 06:28:25

标签: ruby bioinformatics text-mining biopython pubmed

我正在开发一个需要与Genia语料库一起工作的项目。根据文献,Genia Corpus是通过在Medline / Pubmed上搜索3个Mesh术语:“转录因子”,“血细胞”和“人类”提取的文章制成的。我想从Pubmed中为Genia语料库中的文章提取全文(可免费获得)。我尝试了很多方法,但我无法找到以文本或XML或Pdf格式下载全文的方法。

使用NCBI提供的Entrez utils:

  1. 我尝试过使用这里提到的方法 - http://www.hpa-bioinformatics.org.uk/bioruby-api/classes/Bio/NCBI/REST/EFetch/Methods.html#M002197

    使用Ruby gem Bio这样获取给定PubMed ID的信息 - 生物:: NCBI :: REST :: EFetch.pubmed(15496913)

    但是,它并没有返回PMID的全文。

  2. 在内部,它会像这样打电话 - http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=1372388&retmode=text&rettype=medline

    但是,Ruby gem和上面的调用都没有返回全文。

  3. 在进一步的互联网搜索中,我发现PubMed for rettype和retmode的允许值不具备获取全文的选项,如下表所示 - http://www.ncbi.nlm.nih.gov/books/NBK25499/table/chapter4.T._valid_values_of__retmode_and/?report=objectonly

  4. 我在互联网上看到的所有示例和其他脚本都只是提取摘要。作者等,并没有讨论提取全文。

  5. 这是我发现的另一个使用Python包Bio的链接,但只访问有关作者的信息 - https://www.biostars.org/p/172296/

  6. 如何使用NCBI提供的Entrez utils以文本或XML或Pdf格式下载文章的全文?或者我是否可以使用可用的脚本或网络爬虫?

2 个答案:

答案 0 :(得分:2)

您可以使用customPage.ts获取PubMedCentral上的文章,然后从中获取PDF。对于托管在其他地方的所有文章,很难获得通用的解决方案来获取PDF。

PubMedCentral似乎不希望您批量下载文章。通过import {Component} from '@angular/core'; import {NavController} from 'ionic-angular'; import {FORM_DIRECTIVES, FormBuilder, ControlGroup, Validators, AbstractControl } from '@angular/common'; @Component({ templateUrl: 'build/pages/create-new/create-new.html', directives: [FORM_DIRECTIVES] }) export class CreateNewPage{ private hideCreateButton: boolean = true; public hidebutton(): boolean { return this.hideCreateButton; } } 的请求被屏蔽,但相同的网址可以在浏览器中使用。

biopython

答案 1 :(得分:0)

我正在使用ruby解决完全相同的问题。到目前为止,通过使用ruby执行以下操作,我获得了适度的成功:

  1. 使用eutils中的Mechanize + esearch获取pubmed搜索的XML,然后使用Mechanize / Nokogiri从XML解析PMID
  2. 使用Mechanize + ID转换器将PMID转换为PMCID(如果可用)。如果您真的只对PMC上提供的论文感兴趣,您可以设置esearch以返回PMCID。
  3. 获得PMCID后,您可以使用Mechanize访问网页,点击页面上的pdf点击,然后使用Mechanize保存文件。
  4. 它绝不是直截了当的,但仍然没有那么糟糕。有一颗宝石声称也会这样做(https://github.com/billgreenwald/Pubmed-Batch-Download)。我计划尽快测试一下。