2016-06-14 213 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列表嗎? –