使用Beautiful Soup解析两个闭合标签之间的内容
我正在使用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个艺术家。
困难在于专辑名称夹在两个结束标签之间。
有没有什么好主意?
3 个回答
0
如果s是汤元素的话:
album = s.findAll('a')[-1].nextSibling
我想你可以自己把“ - ”清理掉。祝你好运,我喜欢beautifulsoup。
0
如果我理解得没错,专辑名称总是位于元素的最后面。你可以尝试找到标签最后一个关闭的位置,以及标签最后一个关闭的位置,然后从这些位置构建一个包含专辑信息的字符串。
所以,使用theString.rfind("</a>")
你可以找到开始的位置,使用theString.rfind("</span>")
来找到结束的位置。
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'