python自建IP代理池爬网易云音乐评论

本文介绍了如何利用Python建立IP代理池,并结合此代理池爬取网易云音乐歌曲评论,进行数据分析。作者首先分析了网易云音乐评论的加载方式,发现可以通过API接口获取评论数据。在遇到加密问题后,转向使用代理IP避免频繁请求导致IP被封。文章提供了获取和验证代理IP的代码,并提到后续计划使用Scrapy框架进行扩展。
摘要由CSDN通过智能技术生成

python自建IP代理池爬网易云音乐评论

最近想学学数据分析,苦于没有数据,前几天在网易云听歌的时候突然来了感想。爬某个人的‘我喜欢的音乐’这个列表里面所有歌的评论,来分析一下这个人喜欢什么种类的歌多一些。


随便找了一首歌的 链接,且看它的id=574566207,所以分析得到那一串数字代表了这首歌的id。
接下来我们看评论的加载形式,我平常是用Google浏览器直接F12可以打开开发者模式选择“Network”。如下图1所示。

图一:

可以查看url的具体请求

我翻了几评论页看到页面整体没变,可以肯定这不是js就是ajax加载的。通过XHR可以看到有评论对应的数据集,如图二所示

图二:

这里写图片描述

点开headers,可以看到这个网址的url,它的请求求方式是post(图三所示)。而post请求都是需要提交表单的(图四),通过图四可以看出它的参数是加密过的。

图三:

这里写图片描述

图四:

这里写图片描述

两个参数params和encSecKey的值会因为刷新页面而改变的,所以要分析它的加密方式。通过看js代码查看到加密算法是用了 AES和rsa 加密算法,对数据进行了两次 AES 加密。本来打算是挑战下自己的,但是安装了三方库“Crypto”,运行时出现了一个错误,说是系统缺少一个*.dll模块。


然后就换了一种思路,通过filder抓包工具,抓网易云音乐软件的包,最后抓到了一个josn接口(‘http://music.163.com/api/v1/resource/comments/R_SO_4_574566207?limit=20&offset=1‘),通过接口可以看到评论数据是以json形式加载的,而每次改变的只是offset的值,评论的内容也会对应的跳转到第几页。


本来是打算直接动手就要撸代码的,想了一下爬多了数据会被封真实ip。就想着从哪里弄些ip来用用,然后就找了西刺代理,从里面把最近公布的三页ip取下来,然后再挨个用代码请求百度,如果返回的code是200就存在一个txt里面。然后用的时候再去读取出来。

代码块

IP池的代码
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import requests, threading, datetime
from lxml import etree
import random

"""
1、抓取西刺代理网站的代理ip
2、并根据指定的目标url,对抓取到ip的有效性进行验证
3、最后存到指定的path
"""

# ------------------------------------------------------文档处理--------------------------------------------------------
# 写入文档
def write(path,text):
    with open(path, 'a', encoding='utf-8') as f:
        f.writelines(text)
        f.write('\n')
# 清空文档
def truncatefile(path):
    with open(path, 'w', encoding='utf-8') as f:
        f.truncate()
# 读取文档
def read(path):
    with open(path, 'r', encoding='utf-8') as f:
        txt = []
        for s in
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值