media:thumbnail 和 BeautifulSoup

media:thumbnail w/ BeautifulSoup

使用 BeautifulSoup 解析 media:thumbnail 标签的 url 属性的正确方法是什么?我尝试了以下方法:

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

不包含命名空间前缀:

>>> 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()方法returns一个元素,所以这里不需要订阅;您可以直接访问元素上的 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().

使用