Web Scraper返回错误数据:爬取Billboard Hot100却得到新闻内容
问题原因分析
你的代码返回错误数据主要有两个核心问题:
1. URL拼接错误
代码里URL += URL + Year的写法完全错误,会生成重复的URL前缀。比如输入日期2023-01-01,最终生成的URL会是:
https://www.billboard.com/charts/hot-100/https://www.billboard.com/charts/hot-100/2023-01-01
这种无效URL会跳转到Billboard的错误页面或首页,自然只能抓取到新闻内容。正确的写法应该是直接将日期追加到原URL后:
URL = f"https://www.billboard.com/charts/hot-100/{Year}" # 或者 URL = "https://www.billboard.com/charts/hot-100/" + Year
2. HTML选择器错误
你用id="title-of-a-story"的h3标签抓取歌曲名,但这个id对应的是Billboard网站的新闻标题,并非Hot100榜单的歌曲标题。当前Billboard Hot100页面中,歌曲标题的h3标签带有特定属性,比如data-testid="chart-element__information__song",正确的选择器应该是:
songs = soup.find_all(name='h3', attrs={'data-testid': 'chart-element__information__song'})
也可以通过class筛选(注意网站可能会更新class名称):
songs = soup.find_all('h3', class_='c-title a-no-trucate')
内容的提问来源于stack exchange,提问作者Lulu
相关产品推荐
相关产品推荐

