婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 利用Python網絡爬蟲爬取各大音樂評論的代碼

利用Python網絡爬蟲爬取各大音樂評論的代碼

熱門標簽:蘇州人工外呼系統軟件 京華圖書館地圖標注 電話機器人貸款詐騙 看懂地圖標注方法 打印谷歌地圖標注 淮安呼叫中心外呼系統如何 佛山通用400電話申請 廣東旅游地圖標注 電話外呼系統招商代理

 python爬蟲--爬取網易云音樂評論

方1:使用selenium模塊,簡單粗暴。但是雖然方便但是缺點也是很明顯,運行慢等等等。
方2:常規思路:直接去請求服務器

1.簡易看出評論是動態加載的,一定是ajax方式。

2.通過網絡抓包,可以找出評論請求的的URL

得到請求的URL

3.去查看post請求所上傳的數據

顯然是經過加密的,現在就需要按著網易的思路去解讀加密過程,然后進行模擬加密。

4.首先去查看請求是經過那些js到達服務器的

5.設置斷點:依次對所發送的內容進行觀察,找到評論對應的URL



6.查找加密函數

(忽略查找過程)找到:加密函數在

通過查找,找到加密函數具體位置:

7.解讀加密函數

運用的是AES,模式是:CBC

function a(a) { a=16
        var d, e, b = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", c = "";
        for (d = 0; a > d; d += 1)
            e = Math.random() * b.length, #生成隨機數
            e = Math.floor(e), #取整
            c += b.charAt(e); #取出b中對應位置的字符
        return c
    }
    function b(a, b) {
        var c = CryptoJS.enc.Utf8.parse(b)
          , d = CryptoJS.enc.Utf8.parse("0102030405060708")
          , e = CryptoJS.enc.Utf8.parse(a) #e是數據
          , f = CryptoJS.AES.encrypt(e, c, { #c就是加密密鑰 
            iv: d, #iv是偏移量
            mode: CryptoJS.mode.CBC # 模式:CBC加密
        });
        return f.toString()
    }
    function c(a, b, c) {
        var d, e;
        return setMaxDigits(131),
        d = new RSAKeyPair(b,"",c),
        e = encryptedString(d, a)
    }
    function d(d, e, f, g) { d:數據json串  e:"010001" f:   g = "0CoJUm6Qyw8W8jud"
        var h = {}
          , i = a(16); #16位隨機值
        return h.encText = b(d, g), g是密鑰
        h.encText = b(h.encText, i), #返回的就是params i是密鑰
        h.encSecKey = c(i, e, f), #返回的是encSecKey e和f定死,能產生變數的只能是i
        h
    function e(a, b, d, e) {
        var f = {};
        return f.encText = c(a + e, b, d),
        f
    }
    window.asrsea = d

解讀該過程即可:代碼有注釋。

8.參數如何獲得:

function d(d, e, f, g) { d:數據json串  e:"010001" f:   g = "0CoJUm6Qyw8W8jud"


 var bZe2x = window.asrsea(JSON.stringify(i4m), brx6r(["流淚", "強"]), brx6r(Sc1x.md), brx6r(["愛心", "女孩", "驚恐", "大笑"]));

#使用網頁控制臺:發現都為定值;

9.這時只需找到某一個i以及它對應的encSecKey 即可完成服務器的驗證

拿到該值之后開始編寫代碼

全部代碼粘貼

#1.找到未加密的參數        #通過函數window.asrsea()進行加密
#2.想辦法把參數進行加密,params--->encText  encSecKey--->encSecKey

from Cryptodome.Cipher import AES
from base64 import b64encode
import requests,json



e = "010001"
f = "00e0b509f6259df8642dbc35662901477df22677ec152b5ff68ace615bb7b725152b3ab17a876aea8a5aa76d2e417629ec4ee341f56135fccf695280104e0312ecbda92557c93870114af6c9d05c4f7f0c3685b7a46bee255932575cce10b424d813cfe4875d3e82047b97ddef52741d546b8e289dc6935b3ece0462db0a22b8e7"
g = "0CoJUm6Qyw8W8jud"
i = "0hyFaCNAVzOIdoht"

url = 'https://music.163.com/weapi/comment/resource/comments/get?csrf_token='
headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'
    }

def get_encSecKey():
    return "4022359ea3110bcd034e0160c3b89e5e172fd0110a3cf765d9f366d9fd09840a1f4a4705ac43719fdb8bfeb44d3b92334733061ad10942131184a4dfba0ac9d2cf867b8b6236523c1ca5f44c0d2d82c1c2665a3137a9241c7373539c1aa8e5e9bb9d33dafc764b5d76c2ab34fc94df85e27a934c8a603fa713f2cf38c2b7bbae"

def get_params(data): #data默認是json字符串
    first = enc_params(data,g)
    second = enc_params(first,i)
    return second

def to_16(data):
    pad = 16-len(data)%16
    data +=chr(pad) * pad
    return data

def enc_params(data,key): #加密過程
    iv = "0102030405060708"
    data = to_16(data)
    aes = AES.new(key=key.encode('utf-8'),IV=iv.encode('utf-8'),mode=AES.MODE_CBC) #創建加密器
    bs = aes.encrypt(data.encode('utf-8')) #加密
    return str(b64encode(bs),"utf-8") #轉化成字符串

#處理加密過程
'''
 function a(a) { a=16
        var d, e, b = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", c = "";
        for (d = 0; a > d; d += 1)
            e = Math.random() * b.length, #生成隨機數
            e = Math.floor(e), #取整
            c += b.charAt(e); #取出b中對應位置的字符
        return c
    }
    function b(a, b) {
        var c = CryptoJS.enc.Utf8.parse(b)
          , d = CryptoJS.enc.Utf8.parse("0102030405060708")
          , e = CryptoJS.enc.Utf8.parse(a) #e是數據
          , f = CryptoJS.AES.encrypt(e, c, { #c就是加密密鑰 
            iv: d, #iv是偏移量
            mode: CryptoJS.mode.CBC # 模式:CBC加密
        });
        return f.toString()
    }
    function c(a, b, c) {
        var d, e;
        return setMaxDigits(131),
        d = new RSAKeyPair(b,"",c),
        e = encryptedString(d, a)
    }
    function d(d, e, f, g) { d:數據json串  e:"010001" f:   g = "0CoJUm6Qyw8W8jud"
        var h = {}
          , i = a(16); #16位隨機值
        return h.encText = b(d, g), g是密鑰
        h.encText = b(h.encText, i), #返回的就是params i是密鑰
        h.encSecKey = c(i, e, f), #返回的是encSecKey e和f定死,能產生變數的只能是i
        h
    }'''
if __name__ == '__main__':

    page = int(input('請輸入需要爬取的頁數:'))
    print('開始爬蟲!!!')
    fp = open('./網易云評論.txt', 'w', encoding='utf-8')
    for j in range(1,page+1):
        page_num = str(j*20)
        data = {
            'csrf_token': "",
            'cursor': "-1",
            'offset': "0",
            'orderType': "1",
            'pageNo': "1",
            'pageSize': page_num,
            'rid': "R_SO_4_1376142151",
            'threadId': "R_SO_4_1376142151"
        }

        response = requests.post(url,data={
            "params":get_params(json.dumps(data)),
            "encSecKey":get_encSecKey()
        },headers=headers)


        result = json.loads(response.content.decode('utf-8'))
        #hotComments
        for hot in range(len(result['data']['hotComments'])):
            fp.write('hotComments' + ' ')
            fp.write('昵稱:' + result['data']['hotComments'][hot]['user']['nickname'] + '\n')
            fp.write('評論:' + result['data']['hotComments'][hot]['content'] + '\n')

            if result['data']['hotComments'][hot]['user']['vipRights'] == None:
                fp.write('vip:yes' + '\n')
            else:
                fp.write('vip:no' + '\n')
            fp.write('點贊數' + str(result['data']['hotComments'][hot]['likedCount']) + '\n')
            fp.write('-------------------------------------' + '\n')

        #print(result['data']['hotComments'][1]['user']['nickname'])

        #comments
        for r in range(20):
            fp.write('comments')
            fp.write('昵稱:'+result['data']['comments'][r]['user']['nickname']+'\n')
            fp.write('評論:'+result['data']['comments'][r]['content']+'\n')

            if result['data']['comments'][r]['user']['vipRights'] == None:
                fp.write('vip:yes'+'\n')
            else:
                fp.write('vip:no'+'\n')
            fp.write('點贊數'+str(result['data']['comments'][r]['likedCount'])+'\n')
            fp.write('-------------------------------------'+'\n')
    print('爬取完畢!!!')

效果圖

通過這次爬蟲實驗,在爬取的過程中,遇到各種困難,收貨很多。掌握遇到加密,該如何處理的步驟,以及拓寬自己的思路,去運用各種工具。以及各種自己想不到的思路。最起碼,下次遇到如此加密的數據獲取,心里有了一些底氣。
也了解了大互聯網公司對數據進行加密的一種方式,以及網頁運作的更深一步的了解,受益頗多。

到此這篇關于如何用Python網絡爬蟲爬取網易云音樂評論的文章就介紹到這了,更多相關python爬取網易云音樂評論內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • js實現網頁音樂播放器
  • Vue.js實現音樂播放器
  • 如何用Python一次性下載抖音上音樂
  • java實現播放背景音樂
  • 用python制作個音樂下載器
  • Android實現音樂視頻播放
  • 自己用python做的一款超炫酷音樂播放器

標簽:衡水 中山 駐馬店 江蘇 湖州 呼和浩特 畢節 股票

巨人網絡通訊聲明:本文標題《利用Python網絡爬蟲爬取各大音樂評論的代碼》,本文關鍵詞  利用,Python,網絡,爬蟲,爬取,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《利用Python網絡爬蟲爬取各大音樂評論的代碼》相關的同類信息!
  • 本頁收集關于利用Python網絡爬蟲爬取各大音樂評論的代碼的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    水蜜桃久久夜色精品一区的特点| 亚洲午夜久久久久久久久电影院| 欧美xingq一区二区| 国产精品卡一卡二卡三| 国产欧美日韩不卡| 欧洲激情一区二区| 国产呦萝稀缺另类资源| 懂色中文一区二区在线播放| 樱花影视一区二区| 欧美日韩国产一级| 成人sese在线| 2021中文字幕一区亚洲| 亚洲视频免费观看| 欧美高清视频不卡网| 日韩理论片网站| 一区二区三区免费在线观看| 欧美日韩国产精品自在自线| 捆绑紧缚一区二区三区视频| 欧美精品成人一区二区三区四区| 日韩精品电影一区亚洲| 国产精品久久久久久久岛一牛影视 | 精久久久久久久久久久| 亚洲h精品动漫在线观看| 91麻豆精品国产自产在线观看一区 | 久久久久99精品国产片| 中文字幕成人在线观看| 欧美成人video| 欧美一区二区不卡视频| 日韩一区二区在线播放| 色呦呦日韩精品| 色欧美乱欧美15图片| 亚洲欧洲制服丝袜| 国产精品久久99| 视频一区中文字幕国产| 精品一区二区三区久久久| 久久国产免费看| 成人午夜视频网站| 日本一区二区成人在线| 国产精品素人视频| 一区二区在线观看av| 中文一区二区在线观看| 亚洲免费av在线| 日韩成人精品在线观看| 国产麻豆精品一区二区| 视频一区二区三区在线| 欧美日韩第一区日日骚| 欧美刺激脚交jootjob| 国产精品乱人伦| 欧美午夜精品一区二区三区| 久久精品一区二区三区不卡| 最新日韩av在线| 日韩高清不卡一区二区| 成人一道本在线| 欧美探花视频资源| 国产精品乱人伦一区二区| 看片网站欧美日韩| 91麻豆精品久久久久蜜臀| 一区二区三区在线观看欧美| 成人一区在线观看| 国产色婷婷亚洲99精品小说| 免播放器亚洲一区| 91精品国产综合久久精品app| 日本一区二区高清| 国产iv一区二区三区| 欧美精品一区二区三区久久久| 日韩国产欧美在线视频| 欧美综合色免费| 亚洲精品菠萝久久久久久久| 91丨porny丨中文| 亚洲靠逼com| 欧美日韩精品一区二区| 亚洲网友自拍偷拍| 欧美一区二区三区视频免费播放| 亚洲伊人伊色伊影伊综合网| 欧美日韩不卡视频| 久久99久久99| 亚洲欧美激情在线| 日韩欧美二区三区| 国产成人亚洲精品狼色在线| 国产精品第四页| 成人免费毛片aaaaa**| 麻豆国产精品视频| 欧美电视剧在线看免费| 成人综合日日夜夜| 午夜av电影一区| 国产偷国产偷精品高清尤物| 99精品久久99久久久久| 日本在线播放一区二区三区| 日韩视频123| 97久久超碰国产精品| 一区二区三区高清| 久久久噜噜噜久久中文字幕色伊伊| 91免费小视频| 最新国产の精品合集bt伙计| 国产日韩欧美精品在线| 日韩欧美自拍偷拍| 色噜噜狠狠色综合中国| www.色精品| 欧美伊人久久大香线蕉综合69| 日本不卡1234视频| 国产 欧美在线| 99久久精品国产观看| 日本高清免费不卡视频| 51久久夜色精品国产麻豆| 日韩欧美国产综合| 亚洲国产精品av| 亚洲一区二区在线免费观看视频| 最新日韩av在线| 丝袜美腿高跟呻吟高潮一区| 国产麻豆午夜三级精品| 色94色欧美sute亚洲线路二| 91精品国产高清一区二区三区蜜臀| 日韩限制级电影在线观看| 国产欧美一区二区三区网站 | 色香色香欲天天天影视综合网| 欧美三级韩国三级日本三斤 | 日韩午夜小视频| 久久这里只有精品首页| 国产一区二区0| 欧美影视一区在线| 欧美大白屁股肥臀xxxxxx| 国产精品福利一区二区| 一区二区三区精品久久久| 青草av.久久免费一区| 色婷婷精品大视频在线蜜桃视频| 日韩视频免费直播| 日韩电影在线一区二区| 在线影院国内精品| 一区二区在线电影| 午夜精品123| 欧美亚洲国产一区在线观看网站 | 色偷偷久久人人79超碰人人澡| 26uuu亚洲综合色欧美| 亚洲成a人片综合在线| 91精品国产欧美一区二区| 午夜精品在线看| 久久综合网色—综合色88| 国产美女在线精品| 综合久久一区二区三区| 欧美剧情电影在线观看完整版免费励志电影| 国产精品白丝在线| 欧美性猛片aaaaaaa做受| 麻豆精品视频在线| 国产精品免费看片| 欧美偷拍一区二区| 成人app软件下载大全免费| 亚洲男同性视频| 一本久久精品一区二区| 免费成人你懂的| 亚洲裸体xxx| 欧美日韩一二三| 性感美女久久精品| 在线不卡一区二区| 欧美日韩一区二区三区视频| 激情五月播播久久久精品| 日本中文在线一区| 91香蕉视频黄| 一区二区三区四区五区视频在线观看 | 国产成人av电影免费在线观看| 欧美日韩国产另类不卡| 国产免费成人在线视频| 亚洲欧美电影一区二区| 美女任你摸久久| 在线电影国产精品| 日韩视频在线你懂得| 亚洲一区二区三区免费视频| 欧美三级中文字| 久久精品国产99国产| 在线观看欧美黄色| 亚洲一区在线播放| 欧美一区二区三区男人的天堂 | 成人理论电影网| 国产精品国产三级国产三级人妇 | 亚洲在线免费播放| 国产女主播在线一区二区| 中文字幕第一页久久| 欧美色综合网站| 91蝌蚪porny九色| 91首页免费视频| 99久久精品免费看国产免费软件| 中文一区二区在线观看 | 亚洲男同1069视频| 日韩美女啊v在线免费观看| 久久99精品久久久久久久久久久久| 日韩高清欧美激情| 日日嗨av一区二区三区四区| 成人午夜视频在线观看| 91视频91自| 精品国一区二区三区| 国产制服丝袜一区| 亚洲欧美日韩在线| 国产女人aaa级久久久级| 亚洲靠逼com| 午夜精品久久久久久久久久| 日本在线不卡一区| av电影天堂一区二区在线| 色婷婷亚洲综合| 精品国产青草久久久久福利| 久久精品一区二区三区不卡牛牛| 国产精品色眯眯|