You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现榜单歌曲查询爬虫时返回结果位置偏移问题求解

问题原因

你直接全局搜索页面内所有class="title-artist"的div元素,除了排行榜列表里的100个条目对应元素外,页面顶部的热门展示位也用了相同的类名,相当于你拿到的列表前几位是额外的展示内容,不是排行榜列表里的条目,所以才会出现位次偏移的情况。

修复方案

先定位到排行榜的专属容器,再在容器内搜索歌曲条目,就能保证拿到的列表顺序和排行榜位次完全对应,修改后的代码如下:

import requests
from bs4 import BeautifulSoup

url = 'https://www.officialcharts.com/charts/singles-chart/'
req = requests.get(url)
soup = BeautifulSoup(req.content, 'html.parser')

# 先定位排行榜列表容器,再搜索对应元素,排除顶部多余内容
chart_container = soup.find("div", class_="chart-positions")
title_artist_list = chart_container.find_all("div", class_="title-artist")

print("")
print("输入查询位次")
user_pos = int(input("请输入1-100之间的数字: "))
if 1 <= user_pos <= 100:
    hit = title_artist_list[user_pos - 1]
    title, artist = [hr.text.strip() for hr in hit.findAll("a")]
    print("位次 | 歌曲名 | 演唱者")
    print(user_pos, "|", title, "|", artist)
else:
    print("请输入1-100范围内的数字")

注:原代码开头的lol = input("Number: ")和对应判断逻辑属于多余代码,已经删除,如果你有其他分支功能可以保留,不影响位次偏移问题的修复效果。额外加了strip()处理文本,可去掉内容前后多余的换行和空格,输出格式更整洁。

内容的提问来源于stack exchange,提问作者Edit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 16:15:01