机械化错误 - Python

时间:2011-06-24 19:01:13

标签: python mechanize

我正在尝试使用机械化来查看和收集各种网站的数据。我遇到了错误状态

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()

有关如何解决此问题的任何建议?

1 个答案:

答案 0 :(得分:0)

mechanize使用logging模块。 如果您的脚本没有提供日志记录处理程序,那么从mechanize内部记录调用可能会导致此错误。

要提供通用处理程序,请尝试添加

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

到您的脚本。这将显示级别DEBUG或更高级别的所有日志消息。 如果您只想显示严重错误,可以将其更改为

logging.basicConfig(level=logging.CRITICAL)

或者,如果要禁用日志记录,可以使用

logging.disable(logging.DEBUG)

有关其他选项和日志记录级别,请参阅the docs