2011-06-24 11 views
2

機械化を使用してさまざまなウェブサイトからデータを収集しようとしています。機械化エラー - Python

No handlers could be found for logger "mechanize" 

このエラーは、エラーが発生した場所の特定の場所を示していないため、デバッグが非常に困難です。私はオンラインで見て、機械化バージョン0.1.11がこの問題を解決したことを見てきました。私は機械化の新しいバージョンをダウンロードし、これはもはや問題ではないはずだと想像します。この問題を引き起こす私のコードは

def KEGG(textfile): 
    KEGGString = '' 
    KEGGList = [] 
    original = open('Final.txt', 'r')  
    for row in original:  
     data = re.split("(#|\t)", row) ##splits text files by tabs into separate strings 
     new_items = [x if x!='\t' else 'None' for x in data] ##replaces extra tabs with "None" 
     KEGGList.append(new_items[-1]) 
    KEGGHeaderless = KEGGList[1:] ## Removes header (Cross-Reference (KEGG)) from the list. 
    KEGGHeaderless = [s.replace(';', '') for s in KEGGHeaderless] 
    fo = open('KEGG Description.txt', 'w') 
    for row in KEGGHeaderless: 
     geneID = row 
     base2 = 'http://www.genome.jp/dbget-bin/www_bget?' 
     url = base2 + geneID 
     br = Browser() 
     br.set_handle_robots(False) 
     br.open(url) 
     for line in KEGGHeaderless: 
      targetURL = '/dbget-bin/get_linkdb?-t+pathway+' + row 
      try: 
       site = br.follow_link(url=targetURL) 
       br.open(site) 
       page = br.response().read() 
       fo.write(page) 
      except: 
       fo.write(line + "None\n") 
    fo.close() 

どのようにこの問題を解決するための提案?

答えて

0

mechanizeは、loggingモジュールを使用します。 スクリプトでロギングハンドラが指定されていない場合は、mechanizeの呼び出しをログに記録するとこのエラーが発生する可能性があります。

スクリプトに

import logging 
logging.basicConfig(level=logging.DEBUG) 

を追加してみてください、ジェネリックハンドラを供給します。レベルDEBUG以上のすべてのログメッセージが表示されます。 あなたは重大なエラーのみを表示したい場合は、

logging.basicConfig(level=logging.CRITICAL) 

にそれを変えることができるか、あなたはログを無効にしたい場合は、

logging.disable(logging.DEBUG) 

を使用することができ、他のオプションとロギングレベルのthe docsを参照してください。

+0

ありがとうございます!それはうまくいった。 – Marea

関連する問題