使用美丽的汤,在具有类的html元素内剪切文本

Mic*_*eue 6 python beautifulsoup

我正在尝试使用BeatifulSoup刮一页

import urllib2
from bs4 import BeautifulSoup

url='http://www.xpn.org/playlists/xpn-playlist'
page = urllib2.urlopen(url)

soup = BeautifulSoup(page.read())

for link in soup.find_all("li", class_="song"):
    print link
Run Code Online (Sandbox Code Playgroud)

问题是我想要返回的文本没有包含在它自己的html标签中

<li class="song"> <a href="/default.htm" onclick="return clickreturnvalue()
" onmouseout="delayhidemenu()" onmouseover="dropdownmenu(this, event, menu1, 
'100px','Death Vessel','Mandan Dink','Stay Close')">Buy</a>  
Chuck Ragan - Rotterdam - Folkadelphia Session</li>
Run Code Online (Sandbox Code Playgroud)

我要回报的是什么 Chuck Ragan - Rotterdam - Folkadelphia Session

奖励积分:返回的数据格式为艺术家/歌曲/专辑.用于存储和操作此信息的正确数据结构是什么?

Kev*_*uan 1

尝试类似的方法:

for link in soup.find_all("li", class_="song"):
    print link.text
Run Code Online (Sandbox Code Playgroud)

输出:

Buy  Chuck Ragan - Rotterdam - Folkadelphia Session
Run Code Online (Sandbox Code Playgroud)

当然,如果你想删除Buy,你可以slice这样使用:

for link in soup.find_all("li", class_="song"):
    print link.text.strip()[5:]
Run Code Online (Sandbox Code Playgroud)

输出是:

Chuck Ragan - Rotterdam - Folkadelphia Session
Run Code Online (Sandbox Code Playgroud)

如果您想将这些字符串保存在列表中:

[i.strip() for i in link.text.strip()[5:].split('-')]
Run Code Online (Sandbox Code Playgroud)

输出:

['Chuck Ragan', 'Rotterdam', 'Folkadelphia Session']
Run Code Online (Sandbox Code Playgroud)

欲了解更多信息,您可以查看 文档