Python——B站UP主视频信息采集

必要信息

标黄的信息为UP主的IP
在这里插入图片描述

因为每一次都得打开网页观看新闻,而且进入过程有大量视频与图片,太消耗时间与精力,并且都是以短视频的方式呈现,许多内容标题和详细报道就可介绍完,所以利用用此程序解决快速获取时事。

这位最后的输出结果,如果你是第一次运行则会将第一页全部数据输出,下次运行时自动从上一次运行时最新视频开始获取你未观看的。


源码

import requests
import time
import os.path

"""
获取用户主页ID
"""
def analysis(id):
    url = "https://api.bilibili.com/x/space/arc/search?mid={}&ps=30&tid=0&pn=1&keyword=&order=pubdate&order_avoided=true&jsonp=jsonp".format(id)
    header = {
        "User-Agent":
            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 Edg/106.0.1370.52"
    }
    request = requests.get(url, headers=header)
    time.sleep(2)
    reu = request.json()
    content = reu['data']['list']['vlist']
    return content

"""
存储UP主信息内容,每次运行询问用户选择UP主

此功能还未实现
"""
def save_up(id):
    read_file = open("./data/bili_up.txt", "r")
    read_txt = read_file.read().split("\n")
    read_file.close()
    write_file = open("./data/bili_up.txt", "a+")
    for txt in read_txt:
        txt = txt.split(":")
        try:
            if id in txt:
                analysis(id)
                break
            else:
                write_file.writelines(str("UP主:" + analysis(id)[0]['author'] + "ID:" + id + "\n"))
                break
        except:
            pass
        break
    write_file.close()


"""
        1、获取数据内容
        2、读取上次运行时间
        3、运行时与上一次时间进行比对,选取最新数据
        4、将信息存储为JSON格式,并输出
"""
def data(id):
    content = analysis(id)
    File_exist = os.path.isfile("./logs/bili.txt")  
    if File_exist == False:
        fd = os.open("./logs/bili.txt", os.O_CREAT)
        os.close(fd)
    log = open("./logs/bili.txt", "r")
    last_content = log.read()
    log.close()
    last_cread_time = str(last_content.strip("\n").split(":")[-1])
    save_file = open("./data/bili.txt", "w")    # 请确保你程序目录下存在logs和data文件夹
    print(content[0]['author'])
    save_file.write(content[0]['author'])
    for i in range(30):
        created_time = str(int(content[i]['created']))
        if last_cread_time < created_time:
            title = content[i]['title']
            vedio_url = "https://www.bilibili.com/video/" + content[i]['bvid'] + "/?spm_id_from=333.999.0.0&vd_source=72c6d5f1fb4431ee221d888ee31d044d"
            created_time = time.strftime("%Y年%m月%d日 %H:%M")
            print("【标题】:" + title + "【上传时间】:" + str(created_time) + "【详细报道】:" + content[i]['description'] + "【URL】:" + vedio_url + "\n")
            save_file.write("【标题】:" + title + "【上传时间】:" + str(created_time) + "【详细报道】:" + content[i]['description'] + "【URL】:" + vedio_url + "\n")
        else:
            break
    save_file.close()
    fi = open("./logs/bili.txt", "a+")
    start_time = str(content[0]['created'])
    log_txt = "上次获取最新视频时间:" + start_time + "\n"
    fi.write(log_txt)
    fi.close()

if __name__ == "__main__":
    user_id = str(input("请输入UP主ID:\n"))
    #user_id = ""
    # save_up(user_id)  # 此功能还未实现
    data(user_id)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值