使用BeautifulSoup解析url
标记的media:thumbnail
属性的正确方法是什么?我尝试过以下方法:
doc = BeautifulSoup(urlopen('http://rss.cnn.com/rss/edition.rss'), 'xml')
items = doc.findAll('item')
for item in items:
title = item.title.text
link = item.link.text
image = item.find('media:thumbnail')[0]['url']
但是,我收到'NoneType' object is not subscriptable
错误。
答案 0 :(得分:2)
不要包含名称空间前缀:
>>> doc.find('thumbnail')
<media:thumbnail height="51" url="http://i2.cdn.turner.com/cnn/dam/assets/150116173806-amateur-video-amedy-coulibaly-top-tease.jpg" width="90"/>
element.find()
方法返回一个元素,因此此处无需订阅;您可以直接访问元素的url
属性:
>>> doc.find('thumbnail')['url']
u'http://i2.cdn.turner.com/cnn/dam/assets/150116173806-amateur-video-amedy-coulibaly-top-tease.jpg'
目前没有任何支持按特定命名空间进行搜索;名称空间 URL 存储在.namespace
属性中,但.find()
或.find_all()
未使用。