哔哩哔哩视频播放量、点赞量、评论、收藏、投币与转发信息定时爬虫

from datetime import datetime
import requests
import re
import time
import schedule
import json
def get_info():
    headers = {
        'Host': 'api.bilibili.com',
        'Referer': 'https://www.bilibili.com/video/av77413543',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
    }
    source_url='https://api.bilibili.com/x/web-interface/view?bvid='+bv
    info_rsp1 = requests.get(url=source_url, headers=headers)
    info_json1 = info_rsp1.json()
    #print('av号:', info_json1['data']['aid'])
    aid=info_json1['data']['aid']###此处为int型;
    av=str(aid)##类型转换,便于拼接;

    info = 'https://api.bilibili.com/x/web-interface/archive/stat?aid=' + av
    info_rsp = requests.get(url=info, headers=headers)
    info_json = info_rsp.json()
    file_write(info_json)

def file_write(info_json):
    with open(bv + '_info'+datetime.now().strftime("%m-%d-%H")+'.txt', 'w', encoding='utf-8') as fp:
        print("注意:此文件为视频Bv号为 ", bv,"的数据!")
        fp.write('注意:此文件为视频Bv号为 '+ bv+'的数据!')
        if info_json['code'] == 0:
            print("数据采集时间: ", datetime.now().strftime("%Y-%m-%d %H:%M"))
            fp.write('播放量: {}\n'.format(info_json['data']['view']))
            fp.write('弹幕量: {}\n'.format(info_json['data']['danmaku']))
            fp.write('收藏数: {}\n'.format(info_json['data']['favorite']))
            fp.write('硬币数: {}\n'.format(info_json['data']['coin']))
            fp.write('分享数: {}\n'.format(info_json['data']['share']))
            fp.write('点赞数: {}\n'.format(info_json['data']['like']))
            fp.write('---------------------------------------------')

            print('播放量:', info_json['data']['view'])
            print('弹幕量:', info_json['data']['danmaku'])
            print('点赞数:', info_json['data']['like'])
            print('收藏数:', info_json['data']['favorite'])
            print('硬币数:', info_json['data']['coin'])
            print('转发数:', info_json['data']['share'])
        fp.write('\n')

def job():
    print("现在时间: ",datetime.now().strftime("%Y-%m-%d %H:%M"))
    get_info()
    print("---------------------------------------------------------------")

bv=input('请输入视频bv号:\n')
#BV1tU4y157dV
#schedule.every().hour.do(job)                    # 每隔 1 小时运行一次 job 函数
schedule.every(10).seconds.do(job)               # 每隔 10 分钟运行一次 job 函数
while True:
    schedule.run_pending()   # 运行所有可以运行的任务
    time.sleep(1)



版权声明:本文为qq_36745372原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。