zoukankan      html  css  js  c++  java
  • 爬取网易云音乐热评

    首先打开网易云音乐,打开你想爬取的评论的页面,然后f12,发现是能找到评论的 

    ,然后我们打开网页源代码,搜索评论,发现源代码中并没有评论的相关信息,这表明评论信息是js代码,是加密了的动态页面,一般我们爬取的是静态的,即源代码当中能直接找到的我们能看见的数据,这时候用正则表达式匹配则可以爬取成功,而动态页面,我们得在XHR里捕获它的请求信息

    这里抓包有个小技巧,即比对它的id,这样子就不用每个都去看一下是不是我们要的包

     可以看到这是一个post请求,而Resquest URL则是我们要的数据的地址,点开preview,可以发现我们要的数据就在hotComments里面

     怎么爬呢,既然是个post请求,我们可以用模拟浏览器向服务器发送请求的方法,来解析页面,这样做就可以直接用它加密即表单里的数据,而不是先去解密再解析页面,如图

    然后利用json来获取我们想要的键值对关系的评论数据就可以了。

    下面是我的源代码:

    #encoding:utf8
    import requests
    import re
    import json
    url = "https://music.163.com/weapi/v1/resource/comments/R_SO_4_545922868?csrf_token="
    headers = {
    'Host':"music.163.com",
    'Origin':'https://music.163.com',
    'Referer':'https://music.163.com/song?id=545922868',
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36',
    }
    data = {
    'params':"+C7GdwabX3V3pnW5pJGQWQcfOByDUKz5qrT24HkmK7EKYuDq4gNyM4S3UvKx7+s68ANR7n7yAU0MNsZWVwNOKljmd3HABOHiyiFEEXslfOqv4c5p49h8XnH/fnFF+dBIqLsJQjjWhvrfXx66bIWOBB1J+I9SH0Y+ixRt/fIT6LegMOGfytqGk83BTouH3N9O",
    'encSecKey':"c4a66b9b1d8c7accc431eb3c85e502acc0a4a7c3e7fe01c9018f2a3b3f0c98fa91fbf2764ca7b00a3d386fa6457bf621f4f0e63930805d12c7d5a9bff9176ad2c2f580256ec043e3a307c35105ba91a0d60a4abec672758ab45f14044af122b457298b37e7530280a51f7905e82eb0bff9fa7397c76e839080401f28903565be",
    }
    html = requests.post(url,headers=headers,data=data).text
    
    comments = json.loads(html)
    comments = comments['hotComments']
    for i in comments:
    print(i['commentId'],i['content'])

     这是我爬取的结果:

  • 相关阅读:
    Maven打包时去掉项目版本号
    maven编译的时候排除junit测试类
    Redis与Zookeeper实现分布式锁的区别
    分布式锁(基于redis和zookeeper)详解
    解读阿里巴巴集团的“大中台、小前台”组织战略
    java高并发系列
    JAVA之Unsafe学习笔记
    测试用例之正交排列法
    测试用例之因果图/判定表
    测试用例之边界值法
  • 原文地址:https://www.cnblogs.com/332hh/p/8907633.html
Copyright © 2011-2022 走看看