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'])

     这是我爬取的结果:

  • 相关阅读:
    itext操作PDF文件添加水印
    【PDF单页转化为图片输出 注意:英文或图片类的PDF可转化,中文抛异常】
    【使用Itext处理PDF文档(新建PDF文件、修改PDF文件、PDF中插入图片、将PDF文件转换为图片)】
    Itext简绍及操作PDF文件
    【将txt文本转图片】
    通用缓存组件
    一个简易的、轻量级的方法并行执行线程辅助类
    学习笔记 android fragment
    某队列积压问题分析、解决
    平衡
  • 原文地址:https://www.cnblogs.com/332hh/p/8907633.html
Copyright © 2011-2022 走看看