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}")

代码解释:

  1. 导入库:使用requests库发送HTTP请求,BeautifulSoup库解析HTML。
  2. 发送请求:通过requests.get()获取网页内容。
  3. 解析HTML:使用BeautifulSoup查找包含试听数的HTML元素(这里假设是<span class="listen-count">)。
  4. 提取数据:获取元素的文本内容并去除空白字符。

注意事项:

  • 虾米音乐已停止服务,实际URL和HTML结构可能与示例不同。
  • 爬虫可能违反网站的使用条款,请确保遵守相关法律法规和网站规定。

总结建议: 使用爬虫技术抓取网页数据,但需注意网站结构和法律合规性。

#2 确实有效,非常感谢!

请问这个 api 有在线文档可以查么?

回到顶部