2015-07-28 3 views
1

У меня есть небольшой скрипт, который возвращает заголовок веб-страницыPython, если нет AttributeError

title = BeautifulSoup(urllib2.urlopen(URL)).title.string 

Но не все сайты указать на <title> тег, в этом случае мой сценарий возвращает

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

+1

havce вы пробовали использовать 'попробовать except' положение? – Jeremy

ответ

2
try: 
    title = BeautifulSoup(urllib2.urlopen(URL)).title.string 
except AttributeError: 
    title = url 
1

Вы можете использовать встроенную функцию getattr, чтобы проверить, существует ли атрибут, и если не установить значение по умолчанию для него.

В вашем случае это будет как

title = getattr(BeautifulSoup(urllib2.urlopen(URL)).title, 'string', 'default title') 

Проверьте документацию для getattr функции - https://docs.python.org/2/library/functions.html#getattr

Смежные вопросы