鱼C论坛

 找回密码
 立即注册
查看: 131|回复: 16

[已解决]网易云爬热门评论

[复制链接]
发表于 2020-11-21 23:48:22 | 显示全部楼层 |阅读模式
10鱼币
  1. import requests

  2. def get_comments(url):
  3.     headers={
  4.         'referer' : 'https://music.163.com/song?id=1342950406',
  5.         'uers-agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
  6.         }
  7.     params="LWWSthOmEgwh1oZ8CX9RZuvhYKqYiyYQ0C2WUw/Z9HgVe1QR3aEbbZt5ygqdnGiPNQoaXMZvLREOF7LNoNR2CUTgKGZqqiEjpPJlKay985udZDRAOnAy5J5U4p2W2sVD"
  8.     encSecKey='c378a8032a463877314cef6577c4f328ec85516bef83969edfad61ce283f56c21ff226935c747e7e438612952c03c15656235b8fd5c883a6852c9d6236e576c00a748ff1deb1135e1c33388784d0b2b4f85e24777f02efe6f0cde28e0885e7208db94245bba6e52e02b1663c979aee8cabbef1ac4a612f664dd8bc4e2873a183'
  9.     data=dict()
  10.     data['params']=params
  11.     data['enSecKey']=encSecKey

  12.    #name_id = url.split('=')[1]
  13.     target_url='https://music.163.com/weapi/comment/resource/comments/get?csrf_token=17767500d955ff212fd78d0e66df2ca4'

  14.     res=requests.post(target_url,headers=headers,data=data)
  15.    
  16.     return res
  17. def main():
  18.     url=input('请输入链接地址:')
  19.     res=get_comments(url)
  20.     print(res.text)
  21.     with open('网易.txt','w',encoding='utf-8') as fp:
  22.         fp.write(res.text)

  23. if __name__=="__main__":
  24.     main()
复制代码
这是我的代码,问题是返回的res.text是空的看了两天了
https://music.163.com/#/song?id=1342950406我想爬的歌曲
求求了帮帮孩子
最佳答案
2020-11-21 23:48:23
本帖最后由 wananzuiqingfen 于 2020-11-22 16:04 编辑

接口错了,这个接口是拿不到数据的:
  1. target_url = 'https://music.163.com/weapi/comment/resource/comments/get?csrf_token=
复制代码

请使用:
  1. f"http://music.163.com/weapi/v1/resource/comments/R_SO_4_{id}?csrf_token=
复制代码

  1. def get_comments(url):
  2.     """根据给定的网址下载指定的页面"""
  3.     name_id = url.split('=')[1]
  4.    
  5.     headers = {
  6.         'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36',
  7.         'referer': f'https://music.163.com/song?id={name_id}'
  8.     }
  9.    
  10.     params = 'Q8L8lkH8LhTOT57hrco8TPK6ZZubuBaFdiUKhUoIuZ21yIlWdrANebfqwygKOfFrECMyZGP4W+V8BzAyWVd1jiki9xvAxjy+GbkoN6KrfW5QaGazwskKh7h1XSQMI85VrMb3PU6mBYSOhelo2u8uNnt3vV0p2+/0+m76NiBY3RqbOi7Eg2jn/py5bOt9AXFHMLFqn7C2eWb1gHCvFW2z3GgSiYFlnm1C2SmZgCyedYLv9epjeoE7wE1kdaJ3AT+nOLemdOcYWrI3hIdltBcNa64OcWyYNhpxrLp6M/jABh8='
  11.     encSecKey = 'c74cc872bda4fc792e1af0b3fb252941183ae8fff338aee35dd771670fdd8c092b1574768c1f0922ace933211a56bf22d2ae102be55319d3bd14914a1e276abb66ae403ea57ee7e83499059a87fcbaf34160457c75af8c0b32edf9787466341f8d7219cbfabc90305b8fcc3dba56b31f3603a3ad35289972fc0b0c864727c8b2'
  12.    
  13.     data = {
  14.         'params' : params,
  15.         'encSecKey' : encSecKey
  16.     }
  17.     # 请使用这个接口
  18.     target_url = f"http://music.163.com/weapi/v1/resource/comments/R_SO_4_{name_id}?csrf_token="
  19.    
  20.     # target_url = 'https://music.163.com/weapi/comment/resource/comments/get?csrf_token='
  21.     res = requests.post(target_url, headers=headers, data=data)
  22.    
  23.     return res
复制代码

最佳答案

查看完整内容

接口错了,这个接口是拿不到数据的: 请使用:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2020-11-21 23:48:23 | 显示全部楼层    本楼为最佳答案   
本帖最后由 wananzuiqingfen 于 2020-11-22 16:04 编辑

接口错了,这个接口是拿不到数据的:
  1. target_url = 'https://music.163.com/weapi/comment/resource/comments/get?csrf_token=
复制代码

请使用:
  1. f"http://music.163.com/weapi/v1/resource/comments/R_SO_4_{id}?csrf_token=
复制代码

  1. def get_comments(url):
  2.     """根据给定的网址下载指定的页面"""
  3.     name_id = url.split('=')[1]
  4.    
  5.     headers = {
  6.         'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36',
  7.         'referer': f'https://music.163.com/song?id={name_id}'
  8.     }
  9.    
  10.     params = 'Q8L8lkH8LhTOT57hrco8TPK6ZZubuBaFdiUKhUoIuZ21yIlWdrANebfqwygKOfFrECMyZGP4W+V8BzAyWVd1jiki9xvAxjy+GbkoN6KrfW5QaGazwskKh7h1XSQMI85VrMb3PU6mBYSOhelo2u8uNnt3vV0p2+/0+m76NiBY3RqbOi7Eg2jn/py5bOt9AXFHMLFqn7C2eWb1gHCvFW2z3GgSiYFlnm1C2SmZgCyedYLv9epjeoE7wE1kdaJ3AT+nOLemdOcYWrI3hIdltBcNa64OcWyYNhpxrLp6M/jABh8='
  11.     encSecKey = 'c74cc872bda4fc792e1af0b3fb252941183ae8fff338aee35dd771670fdd8c092b1574768c1f0922ace933211a56bf22d2ae102be55319d3bd14914a1e276abb66ae403ea57ee7e83499059a87fcbaf34160457c75af8c0b32edf9787466341f8d7219cbfabc90305b8fcc3dba56b31f3603a3ad35289972fc0b0c864727c8b2'
  12.    
  13.     data = {
  14.         'params' : params,
  15.         'encSecKey' : encSecKey
  16.     }
  17.     # 请使用这个接口
  18.     target_url = f"http://music.163.com/weapi/v1/resource/comments/R_SO_4_{name_id}?csrf_token="
  19.    
  20.     # target_url = 'https://music.163.com/weapi/comment/resource/comments/get?csrf_token='
  21.     res = requests.post(target_url, headers=headers, data=data)
  22.    
  23.     return res
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2020-11-21 23:50:12 | 显示全部楼层
在线等
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2020-11-22 00:38:36 | 显示全部楼层
刚才试了一下 可以呀 你那个参数复制错了吧 url也没有后面的一串数字
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2020-11-22 00:54:37 From FishC Mobile | 显示全部楼层
braga 发表于 2020-11-22 00:38
刚才试了一下 可以呀 你那个参数复制错了吧 url也没有后面的一串数字

我这里是有的,我跑去爬另一首歌就没有,但我也没有爬到,res.text是空的。要不你把你成功爬取的代码给我参考参考,就是上面那首歌
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2020-11-22 01:33:23 | 显示全部楼层
你如果只是想下载这一首,直接复制浏览器的params和encSecKey去请求就行了,接口是这个:https://music.163.com/weapi/comm ... nts/get?csrf_token=,得到的结果是json数据里面包含精彩评论和最新评论的第一页。
1、你的代码中encSecKey参数缩进有问题;
2、接口csrf_token参数后面是不用加其它值的,就是你那串17767500d955ff212fd78d0e66df2ca4,不知道这个参数你从哪复制来的,浏览器上csrf_token是空值;
3、headers不用加referer都可以,另外你那个get_comments函数传的url貌似没有必要吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2020-11-22 01:35:53 | 显示全部楼层
这样写是可以直接得到数据的
  1. import requests


  2. url = 'https://music.163.com/weapi/comment/resource/comments/get?csrf_token='
  3. header = {
  4.     'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 '
  5.                   '(KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36'
  6. }
  7. data = {
  8.     'params': 'DMCk1eN1t9idjkub8cw1VgngzFE8VxHNWP/ufJBHNImKTnfwq8Qxjcg/XT9A8vR4AvcpXSnZxsbnCw6c2Fjvnmfrx1qbojxAP+5mLuCSyBjp8wAI0gyDir3W8DrG1XcIzGdc/utch13jwfFV5Cf1wkXKmvPisFrTV07fNeRHFUZOS9yEoIu7tjKbSZ9/wt+kJzOENAGLymUZDFTS1yAivKEvqYX5e/17eEqp2b2sUZVCHj3t8MUVLYpaRk43Q/3Jv0cuJ8WwCGyEQrUOK7l41MWHpH0kSt5rRFvOQMS/K8c=',
  9.     'encSecKey': '93ad7f9800720c25a5ab38467c5deb05660f9bac9194dd8ef2be0378c5aa69a39c1936d4504a1dabcdfc0e0812f2ff942148d1abf910fe44bba59a4353d8e2e499b09184a0b1050ca960256b053fc064c0a438cf274b6e10e94a26eff011f00f87d1da7b115244c383bc0e4aa5cb7eb79e5643ace432cb9e22920e10da53f868'
  10. }
  11. re = requests.post(url, headers=header, data=data)
  12. print(re.json())
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2020-11-22 01:42:25 | 显示全部楼层
https://music.163.com/weapi/comm ... nts/get?csrf_token=
这个接口获取评论是受params和encSecKey参数影响的,这两个参数加密的是歌曲的一些信息,所以你想下载哪首歌的评论,就得复制这首歌的params和encSecKey,否则就自己生成这两个参数。
用自己生成的参数去下载评论,你可以看看我写的这个https://github.com/YungGuo08/Web ... _Download/Music_163
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2020-11-22 08:56:05 | 显示全部楼层
大马强 发表于 2020-11-22 00:54
我这里是有的,我跑去爬另一首歌就没有,但我也没有爬到,res.text是空的。要不你把你成功爬取的代码给我 ...
  1. import requests

  2. headers = {
  3. 'Uers-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
  4. }
  5. url = 'https://music.163.com/weapi/comment/resource/comments/get?csrf_token='
  6. data = {'params':'4esAPPspMpuhX/8RsqIx2nVvWAGCjFC/gdhvOUdblnEETm3+ZgoBEkYT5qlBtSAXdDNdc82QEcJDdEJUui79XjmtvSv1G2IX3DzRvI2IWkBQ23syobe6FULPGpR/of0lHZLBCU/oKReOBGXOIz/WpURHtE/r4xklnQ47YcQtKLIFFg9VndsKdZoLwmRt9J2dXk4dsf5cNr2XjEbKC0Gt1Ex4yQCnxej38RyJMtZ9mHrA/b+h5WSdOPWS5j0DlRr68uMwO9+xkXzUKJyR9F3nGGHVy5FeGYogtwTVoBxW/U4=',
  7. 'encSecKey': 'b8cfdce5dbc4cd65a061d66c6176155c44b4f29805e72f1041d632f01f36e569dd17749544e4a0246d01afab0ddc897fe2720285cf6df89ad315ee69a64ebe3ad4cbe4c69cc602d973d51eb3d3cdd117fff98b4d3027e1f7ecf7eb6c47fd8500cb4f437ef6c4c4f64a9e8ea26a34e96a9973b5605cdb35c6b45b393a050dad03'}

  8. res = requests.post(url,data,headers)
  9. with open('1.txt','wb')as f:
  10.     f.write(res.content)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2020-11-22 13:39:51 | 显示全部楼层
你的参数url从头到尾没有调用过呀
另外第十五行
  1. target_url='https://music.163.com/weapi/comment/resource/comments/get?csrf_token=17767500d955ff212fd78d0e66df2ca4'
复制代码

这个链接打不开。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2020-11-22 15:19:45 | 显示全部楼层
你看了两天都没发现encSecKey打错字了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2020-11-22 17:11:35 | 显示全部楼层
蚯蚓翔龙 发表于 2020-11-22 15:19
你看了两天都没发现encSecKey打错字了?

没错呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2020-11-22 17:16:01 | 显示全部楼层
本帖最后由 大马强 于 2020-11-22 17:51 编辑
wananzuiqingfen 发表于 2020-11-21 23:48
接口错了,这个接口是拿不到数据的:

请使用:


感谢大佬,还想请教几个问题,
1、你那个接口i在我这里找不到,是在另一个地方吗?
2、那个data里的参数的数值我每次看都是不一样的,为什么不会影响。
3、若要爬多页评论,要咋办?每一页的接口都是不一样的吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2020-11-22 17:55:44 | 显示全部楼层
大马强 发表于 2020-11-22 17:16
感谢大佬,还想请教几个问题,
1、你那个接口i在我这里找不到,是在另一个地方吗?
2、那个data里的 ...

这位鱼友上课不认真呀,小甲鱼帖子已经给出了代码了:
原文: https://fishc.com.cn/forum.php?mod=viewthread&tid=100435

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2020-11-22 22:23:23 | 显示全部楼层
wananzuiqingfen 发表于 2020-11-22 17:55
这位鱼友上课不认真呀,小甲鱼帖子已经给出了代码了:
原文: https://fishc.com.cn/forum.php? ...


你那个接口是在浏览器上面找到的吗?为什么我跟小甲鱼的操作一摸一样但我拿到的是另一个字符串
拿到了这个https://music.163.com/weapi/comm ... nts/get?csrf_token=
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2020-11-22 22:29:37 | 显示全部楼层
大马强 发表于 2020-11-22 22:23
你那个接口是在浏览器上面找到的吗?为什么我跟小甲鱼的操作一摸一样但我拿到的是另一个字符串{:10_277 ...

我以前也是遇到这个问题,按照教程来找到的接口用不了,后面按照小甲鱼发布的代码修改了一些接口就行了。

吾等菜鸡何必在乎这些,照葫芦画瓢就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2020-11-22 22:41:00 | 显示全部楼层
wananzuiqingfen 发表于 2020-11-22 22:29
我以前也是遇到这个问题,按照教程来找到的接口用不了,后面按照小甲鱼发布的代码修改了一些接口就行了。 ...

哈哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1

GMT+8, 2020-11-30 11:53

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表