如果没有元素,我想从BeautifulSoup中捕获错误。目前我正在使用通常的方法:
try:
var1 = soup.div.text
except AttributeError:
var1 = 'N/A'
但是,我现在不得不重复这一点,因此想知道是否有可能编写一个自定义函数来执行此操作,我可以重用它。例如:
def customerrorcatcher(something):
....
....
customerrorcatcher(soup.div.text)
答案 0 :(得分:4)
您可以这样做:
def get_attribute(obj, attr, default=None, on_error=None):
try:
return getattr(obj, attr)
except AttributeError as e:
if on_error: on_error(e)
return default
然后你会这样称呼:
text = get_attribute(soup.div, 'text', default='default_text', on_error=_logger.error)
您甚至可以嵌套通话:
text = get_attribute(get_attribute(soup, 'div'), 'text', default='default_text', on_error=_logger.error)