接下来通过f12查看页面元素
我们会发现,查询到的每首歌曲的跳转信息都在一个类名为”tGequ“的a标签里
那么我们就可以使用findAll函数获得所有歌曲的a标签
def search(self, keyword):
self.play_index_now = -1 # 每次重新搜索都将当前播放序号设置为-1
urlbase = r’https://www.8lrc.com/search’ # 搜索的基础地址
params = {‘key’: keyword} # 封装搜索的参数
res_body = requests.get(urlbase, params) # 拼接url,发送请求
soup_body = BeautifulSoup(res_body.text, ‘html.parser’) # html解析获得响应文本
self.tags = soup_body.findAll(class_=‘tGequ’) # 得到查询结果
通过tag[‘href’]即可得到其中的href属性值
由于这是一个相对地址,只要在前面加上baseurl:https://www.8lrc.com即可得到对应歌曲的链接
获取歌曲音频资源及歌词
接着我们访问具体歌曲如https://www.8lrc.com/geci/1130167.htm,希望获得其歌曲的资源以及歌词
同样打开开发者工具,可以发现在第四个script标签中的setPlayer函数里有一个url地址,且其以.mp3为后缀,结合这是一个播放器,我们不难想到这就是歌曲的音频资源,而下面的显然就是我们所需要的歌曲的歌词
知道了这些以后,就可以开始爬虫获取了
首先我们通过soup_body.select("body script")[3].get_text()
语句获得这个script标签的文本
通过观察,url地址都是以”url“:"
为起始,以引号"
作为结束,所以我们不难写出匹配url地址的正则表达式: