爬取网易云音乐评论

from selenium import webdriver
from selenium.webdriver.common.by import By

web=webdriver.Chrome()
web.get('https://music.163.com/#/song?id=417859631')
web.maximize_window()
web.implicitly_wait(10)
web.switch_to.frame("g_iframe")    # 切换到目标frame标签,否则直接拿是拿不到的
for i in range(1,36):
    content=web.find_element(By.XPATH,f'//*[@class="m-cmmt"]/div[2]/div[{i}]/div[2]/div[1]/div').text
    print(content)
    print("-----------------------")

这个是用selenium方法拿到的,可以根据需求改变相应代码

import requests
from Crypto.Cipher import AES
from base64 import b64encode
import json

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

data = {
    "csrf_token": "",
    "cursor": "-1",
    "offset": "0",
    "orderType": "1",
    "pageNo": "1",
    "pageSize": "20",
    "rid": "R_SO_4_467595367",
    "threadId": "R_SO_4_467595367"
}


def get_encSecKey():
    return "05c3967f3d0a23f97978041e196b82f35798db35ba6c5b09f6b5f052db01423b7183128186349fba9a08a42e4ea670933a891311dc10853e1b7d4e37a3349b81a587820c7e128f020bca2810a728295f9fdf6ae881db4e807a030cca331559e5024505c94715a12f7576bf6665dde5a1f87fe28417d9b088cfb2fa660a3a5ce2"

# 变成16的倍数,为下面的加密服务
def to_16(data):
    pad = 16 - len(data) % 16
    data += chr(pad) * pad
    return data

def get_params(data):  # 默认接收到的是字符串
    first = enc_params(data, g)
    second = enc_params(first, i)
    return second

def enc_params(data, key):  # 加密过程
    iv = "0102030405060708"
    aes = AES.new(key=key.encode("utf-8"), IV=iv.encode("utf-8"),mode=AES.MODE_CBC)  # 可以理解为创建一个加密器  要将key和iv编码成字节形式
    data = to_16(data)
    bs = aes.encrypt(data.encode("utf-8"))  # 加密    加密的内容长度必须是16位的倍数
    return str(b64encode(bs), "utf-8")  # 转化成字符串返回

if __name__ == '__main__':
    url = "https://music.163.com/weapi/comment/resource/comments/get?csrf_token="
    re = requests.post(url, data={
        "params": get_params(json.dumps(data)),
        "encSecKey": get_encSecKey()
    })
    re2=re.text
    print(re2)

这个是根据B站上的一位大佬写的requests,需要解码,有兴趣的可以去B站搜索相应视频观看。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清丶酒孤欢ゞ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值