一.重新分析过程
从QQ音乐搜索周杰伦的歌,打印所有歌名,代码可以写成如下:
import requests
from bs4 import BeautifulSoup
res_music = requests.get('https://y.qq.com/portal/search.html#page=1&searchid=1&remoteplace=txt.yqq.top&t=song&w=%E5%91%A8%E6%9D%B0%E4%BC%A6')
# 请求html,得到response
bs_music = BeautifulSoup(res_music.text,'html.parser')
# 解析html
list_music = bs_music.find_all('a',class_='js_song')
# 查找class属性值为“js_song”的a标签,得到一个由标签组成的列表
for music in list_music:
# 对查找的结果执行循环
print(music['title'])
# 打印出我们想要的音乐名
代码没有什么问题,但是得到的结果为空,这是为什么?
打印res_music,我们可以看到,网页源代码里根本没有我们想要的歌曲清单,那么问题到底出在哪里?
想要找到答案,我们需要学习——Network.
Network的功能是:记录在当前页面上发生的所有请求。
总之,为了成功抓取到歌曲清单。我们得先找到,歌名藏在哪一个请求当中。再用requests库,去模拟这个请求。
二.Network怎么用