ITPub博客

首页 > 应用开发 > Python > Python项目实战:爬取网易云音乐评论

Python项目实战:爬取网易云音乐评论

原创 Python 作者:python交流 时间:2019-03-19 21:36:44 0 删除 编辑

前言

相信大家都非常喜欢听音乐的吧,每一首歌背后都有一个故事,有爱情,有离别,有仇恨,有不舍等等,听着自己喜欢总会唏嘘,我不仅喜欢听歌,还喜欢看歌曲下面的评论,很多人都阐述了自己对歌曲的看法和理解,除了一些,你懂的..、

废话不多说了。上代码吧(看完吧,代码直接可以用)

首先导入需求库

import jsonimport timeimport requests

设置headers信息,模拟成浏览器去访问网站,跳过反爬虫机制

headers = {        'Host': 'music.163.com',        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) 
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}

创建函数,获取评论信息

def get_comments(page):
    """
    获取评论信息
    """
    url = '(page)
    response = requests.get(url=url, headers=headers)    # 将字符串转为json格式
    result = json.loads(response.text)
    items = result['comments']    for item in items:        # 用户名
        user_name = item['user']['nickname'].replace(',', ',')        # 用户ID
        user_id = str(item['user']['userId'])        # 获取用户信息
        user_message = get_user(user_id)        # 用户年龄
        user_age = str(user_message['age'])        # 用户性别
        user_gender = str(user_message['gender'])        # 用户所在地区
        user_city = str(user_message['city'])        # 个人介绍
        user_introduce = user_message['sign'].strip().replace('\n', '').replace(',', ',')        # 评论内容
        comment = item['content'].strip().replace('\n', '').replace(',', ',')        # 评论ID
        comment_id = str(item['commentId'])        # 评论点赞数
        praise = str(item['likedCount'])        # 评论时间
        date = time.localtime(int(str(item['time'])[:10]))
        date = time.strftime("%Y-%m-%d %H:%M:%S", date)
        print(user_name, user_id, user_age, user_gender, user_city, user_introduce, comment, comment_id, praise, date)        with open('music_comments.csv', 'a', encoding='utf-8-sig') as f:
            f.write(user_name + ',' + user_id + ',' + user_age + ',' + user_gender + ',' + user_city + ',' + user_introduce + ',' + comment + ',' + comment_id + ',' + praise + ',' + date + '\n')
        f.close()

小编推荐一个学python的学习qun 945,8790,25
无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

创建函数,获取注册信息

def get_user(user_id):
    """
    获取用户注册时间
    """
    data = {}
    url = '(user_id)
    response = requests.get(url=url, headers=headers)    # 将字符串转为json格式
    js = json.loads(response.text)    if js['code'] == 200:        # 性别
        data['gender'] = js['profile']['gender']        # 年龄
        if int(js['profile']['birthday']) < 0:
            data['age'] = 0
        else:
            data['age'] = (2018 - 1970) - (int(js['profile']['birthday']) // (1000 * 365 * 24 * 3600))        if int(data['age']) < 0:
            data['age'] = 0
        # 城市
        data['city'] = js['profile']['city']        # 个人介绍
        data['sign'] = js['profile']['signature']    else:
        data['gender'] = '无'
        data['age'] = '无'
        data['city'] = '无'
        data['sign'] = '无'
    return data

创建分页主函数

def main():
    # 前500页
    # for i in range(210000, 230000, 20):
    # 后500页
    for i in range(0, 25000, 20):
        print('\n---------------第 ' + str(i // 20 + 1) + ' 页---------------')
        get_comments(i)

执行函数

if __name__ == '__main__':
    main()

哈哈,感觉如何呀?是不是不难的?欢迎大家一起共同学习交流

程序运行结果


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69912078/viewspace-2638798/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
上路:9458 中路:79 下来025 有干货

注册时间:2019-03-04

  • 博文量
    188
  • 访问量
    236416