网易云音乐评论爬虫

爬取网易云音乐热门评论
Requests库
json库

直接用requests.get()方法把网页爬下来做成文本找不到我们要的热评,说明它藏在其他文件中。目标就是把它找到。后面发现是网页post一个data信息才能得到热评。我们用requests.post()方法把data提交上去,就可以获得我们要找的热评了。

代码:

import requests
import json


def get_url(url):

    number=url.split('=')[1] #切段,取第二个
    headers={"Referer": "https://music.163.com/song?id=4466775",
             "User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36"}

    #直接爬取音乐界面然后下载界面文档找不到我们要的评论,说明热评在网页加载的另一个页面
    #放慢网页的加载速度不要缓存,一旦找到我们要的评论就停止网页加载,打开审查元素在Network找到XHR或者DOC文档看看有没有我们要的热评
    #这两个参数是向网页提交的信息,要提交信息才能获取到评论文件。

    params= "QJU++Me16JeaiaCfF/Ks4zjCJ92PWQpNAO+kHmZIVZVk3EBpNjDE6ligmuDN7" \
            "D7cympdIuoFzoII0exm6+NS1zBFMTwmf+owCoZWGxd6fiS4/wJmiWbZZhSlqDEp" \
            "W6eXQ1nQvZcopQIRyIG9/5vLhm2LBaXtHb1u6MEXyag3gqmnBm59Jto7aALWCMZcVxLC"

    encSecKey="4714164e076f437b0418d119298" \
              "67f1a0ef2ccb28d2a430f6c0b5cbe466cc3dc8671e128d89" \
              "0f6f096570ee0b537ebf14a05cf95794f42f67864bb66cd5955201070b93c4260b5cc93ac" \
              "38819124f6a751f06ed3fce33c78538b9821b177c94db08f80bf7e1fdb5cd719080a" \
              "c15f2a2292ded49cf594b278cf7ba78867bcb659"
    #把刚才网页上的data的写成字典形式
    data={"params":params,
         "encSecKey":encSecKey }

    #不要把网址写死,不同歌曲对应的id不一样
    target_url = "https://music.163.com/weapi/v1/resource/comments/R_SO_4_{}?csrf_token=".format(number)
    req = requests.post(target_url, headers=headers, data=data)

    return req


def main():
    url=input("请输入歌曲网址:")
    content=get_url(url)
    comment_json= json.loads(content.text)#json.loads后返回的是字典
    result=comment_json['hotComments']

    with open("F:/爬虫汇总/网易云音乐热评/hot_comments.txt", 'w', encoding='utf-8') as f:
        for each in result:
            f.write(each['user']['nickname']+'\n\n')
            f.write(each['content']+'\n')
            f.write('---------------------------\n')#write里面的参数是字符串

if __name__=="__main__":
    main()
   

在这里插入图片描述
运行后,把歌曲对应网址输入。运行成功后效果如下,打开文本
在这里插入图片描述
其他歌曲热评只要打开对于歌曲页面,把对应网址复制输入就行了。

猜你喜欢

转载自blog.csdn.net/ocean35/article/details/84504244