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站搜索相应视频观看。