继上篇我们讲过爬取出错的问题后,小编想进一步的与大家探讨这个问题。我们都知道不同网站对于爬虫的态度是不一样的,有的没有太多限制,有的爬虫是会被阻拦在外的。我们无法改变外界的网站环境,那么只能对于获取数据出错的方式尽可能的积极寻找解决办法和减少出错的可能性。接下来小编就教大家用装饰器解决python爬取页面出错的办法。
不同用户模版,用到的解析规则就不一样。那么出现解析异常如何处理?尤其是你没有catch到的异常。很可能因为这个问题,程序就崩掉。其实对于Python这门语言来说,我们可以通过 **装饰器** 来捕捉我们没有考虑到的异常。
def parse_decorator(return_type): """ :param return_type: 用于捕捉页面解析的异常, 0表示返回数字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
上面的代码就是处理解析页面发生异常的情况,我们只能在数据的准确性、全面性和程序的健壮性之间做一些取舍。用装饰器的话,程序中不用写太多的 `try`语句,代码重复率也会减少很多。
以上的注意点小伙伴们可要牢记,毕竟在处理爬取出错的情况上,我们也没有太多更好的解决办法。
神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试