Python 如果没有 AttributeError
Python if no AttributeError
我有一个returns网页标题
的小脚本
title = BeautifulSoup(urllib2.urlopen(URL)).title.string
但并非所有网站都指定 <title>
标签,在这种情况下我的脚本 returns
AttributeError: 'NoneType' object has no attribute 'string'
如果网页上有标题,有没有办法让title
变量等于标题?
我试过了
if BeautifulSoup(urllib2.urlopen(url)).title.string.strip():
print BeautifulSoup(urllib2.urlopen(url)).title.string.strip()
else:
print url
但它仍然引发 AttributeError 错误
try:
title = BeautifulSoup(urllib2.urlopen(URL)).title.string
except AttributeError:
title = url
您可以使用内置函数getattr
来检查属性是否存在,如果不存在则为其设置默认值。
在你的情况下会像
title = getattr(BeautifulSoup(urllib2.urlopen(URL)).title, 'string', 'default title')
检查 getattr
函数的文档 - https://docs.python.org/2/library/functions.html#getattr
我有一个returns网页标题
的小脚本title = BeautifulSoup(urllib2.urlopen(URL)).title.string
但并非所有网站都指定 <title>
标签,在这种情况下我的脚本 returns
AttributeError: 'NoneType' object has no attribute 'string'
如果网页上有标题,有没有办法让title
变量等于标题?
我试过了
if BeautifulSoup(urllib2.urlopen(url)).title.string.strip():
print BeautifulSoup(urllib2.urlopen(url)).title.string.strip()
else:
print url
但它仍然引发 AttributeError 错误
try:
title = BeautifulSoup(urllib2.urlopen(URL)).title.string
except AttributeError:
title = url
您可以使用内置函数getattr
来检查属性是否存在,如果不存在则为其设置默认值。
在你的情况下会像
title = getattr(BeautifulSoup(urllib2.urlopen(URL)).title, 'string', 'default title')
检查 getattr
函数的文档 - https://docs.python.org/2/library/functions.html#getattr