m0_43450539 2021-04-17 23:05 采纳率: 50%
浏览 377
已采纳

Requests 返回结果的目标内容是js

小白尝试使用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)
  • 写回答

6条回答 默认 最新

  • 浴火_凤凰 2021-04-18 02:07
    关注

    你的截图的结果是JS代码执行之后的结果,那个只做参考 不能作为爬虫的结果

    爬虫requests获取的结果是你右键-查看网页源代码 里面看到的内容 也 是没有执行JS的结果

    如果你想获取那个数据,2个方法:

    1.使用selenium等可以操作浏览器的类库 打开浏览器去抓取

    2.自己分析你需要的数据是在哪个JS文件中,然后使用requests爬取那个JS文件获取你要的数据

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 关注

    应该是爬错页面了吧,该页面应该是通过其他地址调用后再显示的。

    评论
  • 关注

    这个id是通过js读取外部json数据来动态更新的。
    requests只能获取网页的静态源代码,动态更新的取不到,
    对于动态更新的要用selenium 的 webdriver 爬取。 
    或者是找真正json数据的地址进行爬取。

    评论
  • weixin_45115418 2021-04-18 14:01
    关注

    哈哈 我之前也碰到过 后来经过高人指点 把url中的 “#”去掉就好了  我直接也想不明白为啥

    评论
  • 有问必答小助手 2021-04-19 11:46
    关注

    您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

    如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

    ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

    评论
  • 有问必答小助手 2021-04-20 13:31
    关注

    非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

    速戳参与调研>>>https://t.csdnimg.cn/Kf0y

    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 gitee无效的源路径/URL
  • ¥15 问题描述:给定一个算术表达式,通过程序求出最后的结果
  • ¥15 spyder运行重复
  • ¥15 我用C语言easyx图形库绘制了一个3d游戏方框透视,但进入游戏时候鼠标准星对准方框边缘 鼠标光标就会弹出来这是啥情况怎样让光标对准绘制的方框点击鼠标不弹出光标好烦这样
  • ¥20 用Power Query整合的问题
  • ¥20 基于python进行多背包问题的多值编码
  • ¥15 相同型号电脑与配置,发现主板有一台貌似缺少了好多元器件似的,会影响稳定性和使用寿命吗?
  • ¥15 C语言:数据子序列基础版
  • ¥20 powerbulider 导入excel文件,显示不完整
  • ¥15 paddle训练自己的数据loss降不下去