用两个关闭标签之间的美丽汤解析内容

时间:2011-11-19 20:00:02

标签: python html parsing beautifulsoup

我正在使用BeautifulSoup来解析带有艺术家和专辑信息的网页内容。我已将信息解析为:

`<span dir="ltr"><a href="unique?id=1234">Jay-Z</a> &amp; <a href="unique?id" = 321">Kanye West</a> - Watch the Throne</span>`

专辑名称(在本例中为“Watch the Throne”)始终位于结束</span>标记之前。

我需要从整个<span>元素中解析出相册数据,无论相册中包含多少艺术家,无论是单身艺术家还是30位艺术家。

难点在于,相册名称位于两个结束标记元素之间。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

>>> from BeautifulSoup import BeautifulSoup
>>> html = '''<span dir="ltr"><a href="unique?id=1234">Jay-Z</a> &amp; 
... <a href="unique?id" = 321">Kanye West</a> - Watch the Throne</span>'''
>>> soup = BeautifulSoup(html)
>>> soup.span.contents[-1].strip('- ')
u'Watch the Throne'

答案 1 :(得分:0)

如果我理解正确,相册名称将始终位于span元素的末尾。您可以尝试查找a-tag关闭的最后一个索引,以及span-tag关闭的最后一个索引,并从该构建中找到包含相册信息的字符串。

因此,使用theString.rfind("</a>"),您将找到起始索引,并theString.rfind("</span>")来查找结束索引。

答案 2 :(得分:0)

如果s是汤元素,那么:

album = s.findAll('a')[-1].nextSibling

我猜你可以自己清理“ - ” 祝你好运,我喜欢beautifulsoup