media:thumbnail with BeautifulSoup

时间:2015-03-09 15:03:08

标签: python rss beautifulsoup

使用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错误。

1 个答案:

答案 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()未使用。