溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python項目實戰(zhàn):爬取網(wǎng)易云音樂評論

發(fā)布時間:2020-08-12 22:21:36 來源:ITPUB博客 閱讀:214 作者:python交流 欄目:編程語言
前言

相信大家都非常喜歡聽音樂的吧,每一首歌背后都有一個故事,有愛情,有離別,有仇恨,有不舍等等,聽著自己喜歡總會唏噓,我不僅喜歡聽歌,還喜歡看歌曲下面的評論,很多人都闡述了自己對歌曲的看法和理解,除了一些,你懂的..、

廢話不多說了。上代碼吧(看完吧,代碼直接可以用)

首先導入需求庫

import jsonimport timeimport requests

設置headers信息,模擬成瀏覽器去訪問網(wǎng)站,跳過反爬蟲機制

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'}

創(chuàng)建函數(shù),獲取評論信息

def get_comments(page):
    """
    獲取評論信息
    """
    url = 'http://music.163.com/api/v1/resource/comments/R_SO_4_1313354324?limit=20&offset=' + str(page)
    response = requests.get(url=url, headers=headers)    # 將字符串轉(zhuǎn)為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'])        # 用戶所在地區(qū)
        user_city = str(user_message['city'])        # 個人介紹
        user_introduce = user_message['sign'].strip().replace('\n', '').replace(',', ',')        # 評論內(nèi)容
        comment = item['content'].strip().replace('\n', '').replace(',', ',')        # 評論ID
        comment_id = str(item['commentId'])        # 評論點贊數(shù)
        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
無論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來了解一起進步一起學習!裙內(nèi)有開發(fā)工具,很多干貨和技術(shù)資料分享!

Python項目實戰(zhàn):爬取網(wǎng)易云音樂評論

創(chuàng)建函數(shù),獲取注冊信息

def get_user(user_id):
    """
    獲取用戶注冊時間
    """
    data = {}
    url = 'https://music.163.com/api/v1/user/detail/' + str(user_id)
    response = requests.get(url=url, headers=headers)    # 將字符串轉(zhuǎn)為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

創(chuàng)建分頁主函數(shù)

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)

執(zhí)行函數(shù)

if __name__ == '__main__':
    main()

哈哈,感覺如何呀?是不是不難的?歡迎大家一起共同學習交流

程序運行結(jié)果

Python項目實戰(zhàn):爬取網(wǎng)易云音樂評論


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI