我正在尝试使用 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
问题是我想返回的文本没有包含在它自己的 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>
我要返回的内容
Chuck Ragan - 鹿特丹 - Folkadelphia session
Bonus Points:返回的数据格式为 Artist/Song/Album。用于存储和操作此信息的正确数据结构是什么?
最佳答案
尝试这样的事情:
for link in soup.find_all("li", class_="song"):
print link.text
输出:
Buy Chuck Ragan - Rotterdam - Folkadelphia Session
当然,如果你想删除Buy
,你可以像这样使用slice
:
for link in soup.find_all("li", class_="song"):
print link.text.strip()[5:]
输出是:
Chuck Ragan - Rotterdam - Folkadelphia Session
如果您想将这些字符串保存在列表中:
[i.strip() for i in link.text.strip()[5:].split('-')]
输出:
['Chuck Ragan', 'Rotterdam', 'Folkadelphia Session']
更多信息,您可以查看document .
关于python - 使用漂亮的汤,在具有类的 html 元素中仅抓取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33273197/