Python中如何获取虾米音乐每首歌的试听数?
最近开始学习 python 爬虫,尝试爬取虾米音乐上的歌曲的试听数,但是发现网页源码中好像加密了。有人研究过这个吗?
Python中如何获取虾米音乐每首歌的试听数?
5 回复
getplaycount 借口,{‘id’:song_id,‘type’:‘song’, ‘_xiamitoken’:_xiamitoken},然后获取 data.plays
要获取虾米音乐每首歌的试听数,你需要通过爬虫技术来抓取网页数据。由于虾米音乐已经停止服务,相关的API和网页结构可能已经失效,因此以下代码示例是基于假设的网页结构,仅用于演示爬虫的基本思路。
import requests
from bs4 import BeautifulSoup
def get_listen_count(song_url):
try:
# 发送HTTP请求获取网页内容
response = requests.get(song_url)
response.raise_for_status() # 检查请求是否成功
# 使用BeautifulSoup解析HTML
soup = BeautifulSoup(response.text, 'html.parser')
# 假设试听数在某个特定的HTML元素中,例如<span class="listen-count">
listen_count_element = soup.find('span', class_='listen-count')
if listen_count_element:
listen_count = listen_count_element.text.strip()
return listen_count
else:
return "未找到试听数"
except requests.RequestException as e:
return f"请求失败: {e}"
# 示例歌曲URL(假设的)
song_url = "https://example.xiami.com/song/12345"
listen_count = get_listen_count(song_url)
print(f"试听数: {listen_count}")
代码解释:
- 导入库:使用
requests库发送HTTP请求,BeautifulSoup库解析HTML。 - 发送请求:通过
requests.get()获取网页内容。 - 解析HTML:使用BeautifulSoup查找包含试听数的HTML元素(这里假设是
<span class="listen-count">)。 - 提取数据:获取元素的文本内容并去除空白字符。
注意事项:
- 虾米音乐已停止服务,实际URL和HTML结构可能与示例不同。
- 爬虫可能违反网站的使用条款,请确保遵守相关法律法规和网站规定。
总结建议: 使用爬虫技术抓取网页数据,但需注意网站结构和法律合规性。
例子: http://www.xiami.com/count/getplaycount?id=1795526167&type=song&_xiamitoken=9e05a69cf31f3d12990d28eb1d0808c4 ,
数据{“plays”:426106,“status”:“ok”}
#2 确实有效,非常感谢!
请问这个 api 有在线文档可以查么?

