小白尝试使用requests获取网易云音乐ID的时候发现问题,网址如下。
https://music.163.com/#/discover/toplist
在网站上看出id就在a标签的href属性里,浏览器中显示的是当前音乐的id,如下图。
但是问题出现了,在pyc中调用requests.get获取网页html。在html中寻找需要的音乐id
得到的html里音乐ID是${song.id}
请问是什么情况?
代码就以下四行
import requests url = "https://music.163.com/#/discover/toplist" res = requests.get(url) print(res.text)
你的截图的结果是JS代码执行之后的结果,那个只做参考 不能作为爬虫的结果
爬虫requests获取的结果是你右键-查看网页源代码 里面看到的内容 也 是没有执行JS的结果
如果你想获取那个数据,2个方法:
1.使用selenium等可以操作浏览器的类库 打开浏览器去抓取
2.自己分析你需要的数据是在哪个JS文件中,然后使用requests爬取那个JS文件获取你要的数据
应该是爬错页面了吧,该页面应该是通过其他地址调用后再显示的。
这个id是通过js读取外部json数据来动态更新的。
requests只能获取网页的静态源代码,动态更新的取不到,
对于动态更新的要用selenium 的 webdriver 爬取。
或者是找真正json数据的地址进行爬取。
哈哈 我之前也碰到过 后来经过高人指点 把url中的 “#”去掉就好了 我直接也想不明白为啥
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y