У меня есть список URL-адресов, с которых я хочу очистить атрибут. Новичок в Python, поэтому, пожалуйста, извините. Windows 7, 64-битная. Python 3.2.
Следующий код работает. pblist - это список, состоящий из диктов, которые включают ключ 'short_url'.
for j in pblist[0:10]:
base_url = j['short_url']
if hasattr(BeautifulSoup(urllib.request.urlopen(base_url)), 'head') and \
hasattr(BeautifulSoup(urllib.request.urlopen(base_url)).head, 'title'):
print("Has head, title attributes.")
try:
j['title'] = BeautifulSoup(urllib.request.urlopen(base_url)).head.title.string.encode('utf-8')
except AttributeError:
print("Encountered attribute error on page, ", base_url)
j['title'] = "Attribute error."
pass
В следующем коде нет - например, в коде утверждается, что объект BeautifulSoup не имеет атрибутов заголовка и заголовка.
for j in pblist[0:10]:
base_url = j['short_url']
page = urllib.request.urlopen(base_url)
if hasattr(BeautifulSoup(page), 'head') and \
hasattr(BeautifulSoup(page).head, 'title'):
print("Has head, title attributes.")
try:
j['title'] = BeautifulSoup(urllib.request.urlopen(base_url)).head.title.string.encode('utf-8')
except AttributeError:
print("Encountered attribute error on page, ", base_url)
j['title'] = "Attribute error."
pass
Почему? В чем разница между передачей URL-адреса urllib.request.urlopen в BeautifulSoup и передачей объекта HTTPResponse, возвращаемого urllib.request.urlopen?