2012-12-31 16 views
0

我想通過python查詢pubmed。我找到了一個不錯的生物學相關的庫來做到這一點: http://biopython.org/DIST/docs/tutorial/Tutorial.html帶有示例biopython代碼查詢pubmed的HTTPError

我發現一些示例代碼在這裏: http://biopython.org/DIST/docs/tutorial/Tutorial.html#htoc116

from Bio import Entrez 
Entrez.email = "[email protected]"  
handle = Entrez.egquery(term="orchid") 
record = Entrez.read(handle) 
for row in record["eGQueryResult"]: 
    if row["DbName"]=="pubmed": 
    print row["Count"] 

當我改變了電子郵件,運行這段代碼,我得到了以下錯誤:

Traceback (most recent call last): 
    File "pubmed.py", line 15, in <module> 
    handle = Entrez.egquery(term=my_query) 
    File "/usr/lib/pymodules/python2.7/Bio/Entrez/__init__.py", line 299, in egquery 
    return _open(cgi, variables) 
    File "/usr/lib/pymodules/python2.7/Bio/Entrez/__init__.py", line 442, in _open 
    raise exception 
urllib2.HTTPError: HTTP Error 404: Not Found 

導致問題的原因並不多。我不知道它試圖訪問哪個網址。 當我搜索「pubmed entrez urllib2.HTTPError:HTTP錯誤404:未找到」時,我得到8個結果,其中沒有任何關聯(除此線程外)。

+0

你可以找到它試圖訪問哪些網址通過捕捉異常。 'try:handle = Entrez.egquery(term =「orchid」)''Exception as e:pass',然後'print e.geturl()'。我得到''http://eutils.ncbi.nlm.nih.gov/entrez/eutils/egquery.fcgi?term = orchid&tool = biopython&email = A.N.Other%40example.com''。 – DSM

+0

謝謝。我正要這樣做。我收到以下網址:http://eutils.ncbi.nlm.nih.gov/entrez/eutils/egquery.fcgi?term=orchid&tool=biopython&email=MYEMAIL。這是否表明pub客服務器/服務已關閉? – anonymous

+0

從異常中獲取URL的好技巧:) – peterjc

回答

1

這個例子適用於我。它看起來像是一個臨時的NCBI問題,雖然「錯誤404」是非常不尋常的,並不是我在Entrez看到的網絡問題的典型情況。一般來說,在任何網絡資源的情況下,都要花上幾個小時或一天時間,然後再擔心有什麼事情會發生。

還有你可能想訂閱的,但如果有一個計劃的服務中斷,最近它未提及的Entrez的公用事業公告郵件列表: http://www.ncbi.nlm.nih.gov/mailman/listinfo/utilities-announce

+0

現在也適合我。 – anonymous