我正在使用BeautifulSoup来解析带有艺术家和专辑信息的网页内容。我已将信息解析为:
`<span dir="ltr"><a href="unique?id=1234">Jay-Z</a> & <a href="unique?id" = 321">Kanye West</a> - Watch the Throne</span>`
专辑名称(在本例中为“Watch the Throne”)始终位于结束</span>
标记之前。
我需要从整个<span>
元素中解析出相册数据,无论相册中包含多少艺术家,无论是单身艺术家还是30位艺术家。
难点在于,相册名称位于两个结束标记元素之间。
有什么想法吗?
答案 0 :(得分:1)
>>> from BeautifulSoup import BeautifulSoup
>>> html = '''<span dir="ltr"><a href="unique?id=1234">Jay-Z</a> &
... <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