這篇文章主要介紹了怎么用裝飾器解決python爬取頁(yè)面出錯(cuò),具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
成都創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:做網(wǎng)站、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的渝北網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
不同用戶模版,用到的解析規(guī)則就不一樣。那么出現(xiàn)解析異常如何處理?尤其是你沒有catch到的異常。很可能因?yàn)檫@個(gè)問題,程序就崩掉。其實(shí)對(duì)于Python這門語(yǔ)言來(lái)說(shuō),我們可以通過 **裝飾器** 來(lái)捕捉我們沒有考慮到的異常。
def parse_decorator(return_type): """ :param return_type: 用于捕捉頁(yè)面解析的異常, 0表示返回?cái)?shù)字0, 1表示返回空字符串, 2表示返回[],3表示返回False, 4表示返回{}, 5返回None :return: 0,'',[],False,{},None """ def page_parse(func): @wraps(func) def handle_error(*keys): try: return func(*keys) except Exception as e: parser.error(e) if return_type == 5: return None elif return_type == 4: return {} elif return_type == 3: return False elif return_type == 2: return [] elif return_type == 1: return '' else: return 0 return handle_error return page_parse
上面的代碼就是處理解析頁(yè)面發(fā)生異常的情況,我們只能在數(shù)據(jù)的準(zhǔn)確性、全面性和程序的健壯性之間做一些取舍。用裝飾器的話,程序中不用寫太多的 `try`語(yǔ)句,代碼重復(fù)率也會(huì)減少很多。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享怎么用裝飾器解決python爬取頁(yè)面出錯(cuò)內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,遇到問題就找創(chuàng)新互聯(lián),詳細(xì)的解決方法等著你來(lái)學(xué)習(xí)!