2016-06-14 177 views
0

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

使用Entrez的utils的: - 它使用了Ruby宝石生物这样 http://www.hpa-bioinformatics.org.uk/bioruby-api/classes/Bio/NCBI/REST/EFetch/Methods.html#M002197

以获取给定的考研ID信息

  1. 我已经使用这里所说的方法试着 - Bio :: 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

    但是,无论是红宝石宝石和上面的调用不返回全文。

  3. 在进一步上网搜索,我发现,对于考研的rettype和retmode允许值不具有一个选项,以获得完整的文本,如这里的表中提到 - http://www.ncbi.nlm.nih.gov/books/NBK25499/table/chapter4.T._valid_values_of__retmode_and/?report=objectonly

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

  5. 这里是另一个链接,我发现,使用Python包生物,但只访问有关作者的信息 - 我如何可以下载文章的全文文本或XML或PDF https://www.biostars.org/p/172296/

格式使用由NCBI提供的Entrez utils?还是有可用的脚本或网络爬虫,我可以使用?

+0

你可以发布一个你想要下载的文章的链接并指定它需要的部分吗? –

+0

我想使用PMID下载关于Pubmed的文章的免费全文。例如:如果我通过PMID查询10438913在这里的pubmed搜索栏(http://www.ncbi.nlm.nih.gov/pubmed),然后发布的结果显示这篇文章是免费的文章。所以,点击这篇文章,我会去http://www.ncbi.nlm.nih.gov/pubmed/10438913,在右上角你会看到一个可点击的图标,说“最终版本免费”。如果你点击这个你会得到pdf版本。现在,我怎么能够自动化多个文章的这一步? –

回答

2

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

似乎PubMedCentral不希望您下载散装物品。通过urllib的请求被阻止,但浏览器使用相同的URL。

from Bio import Entrez 

Entrez.email = "[email protected]" 


#id is a string list with pubmed IDs 
#two of have a public PMC article, one does not 
handle = Entrez.efetch("pubmed", id="19304878,19088134", retmode="xml") 

records = Entrez.parse(handle) 
#checks for all records if they have a PMC identifier 
#prints the URL for downloading the PDF 
for record in records: 
    if record.get('MedlineCitation'): 
     if record['MedlineCitation'].get('OtherID'): 
      for other_id in record['MedlineCitation']['OtherID']: 
       if other_id.title().startswith('Pmc'): 
        print('http://www.ncbi.nlm.nih.gov/pmc/articles/%s/pdf/' % (other_id.title().upper())) 
+0

非常感谢!这工作就像下载PDF文件的魅力一样。但我仍然困惑,我在pubmed网站上查询了15个PMID,并向我展示了9位PMID他们提供了免费文本。当我运行你的脚本时,它只给了我1.请你解释你在代码中提到的PMID - PMC的关系。我对此感到困惑。 –

+0

@KahiniWadhawan:您可以添加PubMed ID列表吗? –