一、准备工作安装requests库和beautifulsoup4库:requests库是一个简洁明了的处理HTTP请求的第三方库;beautifulsoup4库是第一方库,用于解析处理HTML和XML的三方库。2、分析网站HTML源码通过分析HTML源码,“歌手-歌曲名称”信息被封装在标签中,标签在“class=pc_temp_songlist”标签中。因此可以使用beautifulsoup4中的select方法进行过滤:歌曲时长的分析方法也同上,select的具体用法可以参考如下:BeautifulSoup库中find_all和select的使用Python**推荐:020持续更新,精品圈每天都有新内容,干货高度集中。建立联系,讨论技术,你想要的都在这里!成为第一个加入团队并超越同行的人!(入群不需要任何费用)点此与Python开发者交流学习。群号:745895701申请即时发货:Python软件安装包,免费提供Python实战教程资料,包括Python基础学习、进阶学习、爬虫、人工智能、自动化运维、自动化测试等**三、爬酷狗Top500songsimportrequestsfrombs4importBeautifulSoupimportjson#获取网页HTML源码defgetText(url):try:r=requests.get(url,timeout=30)#必须访问get()函数的参数url通过HTTP或HTTPS,每次请求超时时间为30秒r.raise_for_status()#返回的请求状态status_code不为200,该方法会产生异常r.encoding='utf-8'#更改编码方式通过给编码属性赋值returnr.textexcept:return""#解析HTML页面格式并提取有用信息defgetInfo(url):soup=BeautifulSoup(getText(url),'html.parser')#创建美丽的Soupobjectsongs=soup.select('.pc_temp_songlist>ul>li>a')#获取包含“歌手-歌曲名”信息的labeltimes=soup.select('.pc_temp_songlist>ul>li>span.pc_temp_time')#获取包含歌曲的“歌曲持续时间”信息的标签,zip(songs,times)中的时间:data={"singer":song.get_text().split('-')[0],"songtitle":song.get_text().split('-')[1],"time":time.get_text().strip()}print(data)SONGS.append(data)SONGS=[]if__name__=='__main__':urls=['https://www.kugou.com/yy/rank/home/{}-8888.html'.format(str(i))foriinrange(1,24)]forurlinurls:getInfo(url)print("Numberofsongs:",len(SONGS))#将爬取到的数据保存为JSON文件格式w??ithopen('songs.json','w',encoding='utf-8')asjson_file:json_str=json.dumps(SONGS,ensure_ascii=False,indent=4)json_file.write(json_str)得到的json文件格式如下:很简单
