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