python - 使用漂亮的汤,在具有类的 html 元素中仅抓取文本

标签 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

问题是我想返回的文本没有包含在它自己的 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/

相关文章:

python - Linux 中的 Century Gothic 字体

python - 将用户导入 Firebase 时密码错误(使用 SHA256 的 password_hash)

python - 漂亮的汤和要求没有得到整页

python - 如何提取div中的特定链接?

python - 获取 Spark RDD 中每个键的最大值

python - 性能 SQLAlchemy 和或

python - 为什么 `datetime.date.today` 在 Python 中比 `datetime.datetime.now` 慢?

python - 使用 beautifulsoup 从跨度内获取跨度中的数字

python - 仅抓取 <p> 而不嵌入 <a>

python - 从机场网站抓取航类数据表失败