必要信息
标黄的信息为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)