认真学习的fzz 发表于 2020-10-20 09:33:48

爬取网易云音乐热评

问题描述:在爬取网易云歌曲热评的时候,我在打开热评链接的时候,所有歌曲的热评链接都是一样的,这样我怎么区分不同的音乐呢? 如图
###看过小甲鱼爬取网易云热评的 应该知道我什么意思


就是在这张图里面 热评在get?csrf_token=这个文件里面 我想读取这个文件里面的热评信息, 但是我发现所有歌曲的这个文件的地址都是一样的,https://music.163.com/weapi/comment/resource/comments/get?csrf_token=
那么我怎么区分不同的歌曲呢?

##代码
import requests
from bs4 import BeautifulSoup
import json

def get_res(url):
    headers = {"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36"}
    params='Oh86j23sgDVlk1FaLiEQu7tVD / 5nlf61fbILFPKmNBb3KGm + JnhB6PMvXmGL6Tw7LClxV + am8 + Za7Mf61tsOxCp6mjvvJrBKvrsGVyMmjeAKr2eC0UZSP9BhdkZAFEMsdSDQgoUFpWt + LjY + VOapwrVuCRMu0wQdT7Nrj / V2hZ9M321MoAyJZZOGBDlrhAO / N6ru + u848vM9V68fkbLLpnPVezxgIIUCfNCH8e + hPZ + pPwjfQ + QfLVuTEZ9vvM8GdC + QxdvdK2Eky + LAsrKAhZZtkHdc2FWJItY + qom0B4k ='
    encSecKey='ad3aef05c75ce4dc2ec4dc4c98ef0d92e82f9315b7baa7ff80d02125ab2b9c404dd50f2d84ed12d41aa42753ffff33d4f45989a2f8f34aaf1167c21a15db1004c471ccaee5af087a8698c143d33c50c79af9b04f3a0fbfbefc9b2857bb10030a7eeb0f0cc5410381df6eee3f2fe8e48952b031badb8b70363cd92b6a7751cd84'

    data={'params':params,"encSecKey":encSecKey}

    get_url = 'https://music.163.com/weapi/comment/resource/comments/get?csrf_token='
    res = requests.post(get_url,headers=headers,data=data)
    return res

def get_com(res):
    comments_json = json.loads(res.text)
    hot_comments = comments_json["data"]["hotComments"]
    print(hot_comments["user"]["nickname"])
    with open("text.txt","w",encoding="utf-8") as f:
      for each in hot_comments:
            f.write(each["user"]["nickname"]+"\n")
            f.write(each["content"]+"\n")
            f.write("--------------------------------\n")

def main():
    #url = 'https://music.163.com/#/song?id=1305364671'
    url = input("请输入歌曲链接:")
    res = get_res(url)
    get_com(res)

认真学习的fzz 发表于 2020-10-20 10:29:28

补充一下   我在热评的那个网页里发现虽然存储热评信息的地址是一样的 但是params和encSecKey 这两个值是不一样的 我改了这两个值之后 就可以获得这两个值对应的歌曲的热评 这很让人苦恼~~~~

bonst 发表于 2020-10-20 11:54:33

那怎么去获取每一首歌曲的params和encSecKey

疾风怪盗 发表于 2020-10-20 12:26:49

是这种js代码生成的吧,要想找到来源,怕是很难
      this.getcdnInfo = function() {
            var params = {};
            if (gQ1x) {
                params.cdnBytes = gQ1x.info.cdnBytes;
                params.p2pBytes = gQ1x.info.p2pBytes
            } else if (iE2x) {
                var bNS6M = iE2x.loadedInfo();
                params.cdnBytes = bNS6M.cdnloaded;
                params.p2pBytes = bNS6M.p2ploaded
            }
            return params
      }
      ;
页: [1]
查看完整版本: 爬取网易云音乐热评