天天看點

Python爬蟲——抖音排行榜

最近公司準備搞個抖音号,叫我們爬一下抖音的排行榜,記錄一下

Python爬蟲——抖音排行榜

連結在這裡

選擇二次元榜單,打開network,很快就可以找到資料存放的位置

Python爬蟲——抖音排行榜

簡單分析一下可知,不同榜單的URL差別主要在于“billboard_type=”這個參數,這裡需要一個一個确定一下,二次元的幾個榜單的話是從61到68;還有得到的資料是json格式,接下來就可以寫代碼啦。對了,header還是要僞裝一下的哈,主要是user-agent和cookie。其他儲存自己需要的資料即可

from bs4 import BeautifulSoup
import requests
import os
import json
from datetime import datetime
import pandas as pd
import time

def get_links(linkid):
    url = 'https://creator.douyin.com/aweme/v1/creator/data/billboard/?billboard_type={}'.format(linkid)
    headers = {
    "user-agent":'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36',
    "referer": "https://creator.douyin.com/billboard/cospa",
    'cookie':'XXX'#填寫自己的cookie即可
}
    res = requests.get(url,headers=headers)
    jd=json.loads(res.text)['billboard_data']
    
    newsdetails=[]
    for ent in jd :
        newsdetails.append(get_detail(ent,linkid))
        
    return newsdetails
def get_detail(jd,linkid):
    result={}
    result['标題']=jd['title']#标題
    result['影響力']=str(int(jd['value'])/10000)+'w'#影響力
    result['排名']=jd['rank']#排名
    result['粉絲數']=str(int(jd['map_list'][0]['value'])/10000)+'w'#粉絲數
    result['近一月上榜次數']=jd['map_list'][1]['value']#近一月上榜次數
    result['上周排名']=jd['map_list'][2]['value']#上周排名
    result['分類']=linkid#分類
    result['連結']=jd['link']#連結
    now = datetime.now().strftime('%Y-%m-%d')
    result['時間']=now
    return result


def main():
    news_total = []
    for i in range(61,68):
        news_total.extend(get_links(i))
        
    df = pd.DataFrame(news_total)
    
    
    now = datetime.now().strftime('%m%d_%H%M%S')
    newsname = 'dy'+now+'.xlsx'
    df.to_excel(newsname)

if __name__ == '__main__':
    main()