如何修改Python爬虫实现仅提取打印英国单曲排行榜歌曲标题
代码修改方案
原有代码存在几处逻辑和写法错误,直接修改即可实现需求:
- 循环逻辑错误:while循环条件
page >= max_pages写反,且page +=1放在了while循环外部,会触发死循环 - 元素定位错误:定位歌曲标题的DOM选择器不正确,且获取文本的写法完全错误
- 存在冗余代码:前半部分输出所有页面链接的代码和需求无关,可以直接删除
修改后可直接运行的完整代码如下:
import requests from bs4 import BeautifulSoup def chart_spider(max_pages): page = 1 while page <= max_pages: # 单页已经包含完整TOP100榜单数据,不需要翻页可以固定url url = "https://www.officialcharts.com/charts/singles-chart" source_code = requests.get(url) plain_text = source_code.text soup = BeautifulSoup(plain_text, 'html.parser') # 用正确的class属性定位所有歌曲标题标签 for title_tag in soup.find_all('a', {"class": "chart-name"}): # 提取标题文本并去除前后空白字符 song_title = title_tag.get_text(strip=True) print(song_title) page += 1 # 传入参数1代表只爬取1页的TOP100数据 chart_spider(1)
代码运行后会直接按排名顺序输出当期TOP100的所有歌曲标题,不需要额外配置。如果需要爬取多期历史榜单,调整传入
chart_spider的参数以及url的拼接规则即可。
内容的提问来源于stack exchange,提问作者Edit
相关产品推荐
相关产品推荐

