【简易爬虫】找回B站“已失效视频”的相关信息

目录

前言

一、网页抓取已失效视频的相关信息

二、脚本运行环境的配置(PYTHON)

1.配置python环境(略)

2.引入库

三、使用脚本

1.参数count是收藏视频页面的总页数(第四行代码)

2.根据之前打开json文件的链接来修改需要爬取的url(第六行代码)

总结

附:将所有收藏视频的相关信息保存在本地文件的脚本




前言

在平静的日常生活中,笔者经常会发现自己收藏的视频突然被“河蟹”,变成已失效视频,但是却又忘记自己是什么时候收藏,视频的具体内容也完全回忆不到。自己喜欢的视频变成“已失效视频”这副冷冰冰的样子,总会让人感到好奇与一点遗憾。文章将讲述如何爬取自己收藏的已失效视频相关信息,希望可以帮助到大家。


一、网页抓取已失效视频的相关信息

在收藏内容中的已失效视频无法被点开,只能模糊地显示出该视频被收藏的日期,并不能为我们提供其他相关的信息,我们考虑使用Chrome的检查功能,找到数据的真实地址,从而找到已失效内容的具体信息

1.打开Chrome浏览器,进入个人主页的收藏夹,找到对应的已失效视频所在的那一页

2.右键窗口的任意位置,点击“检查”指令,进入下图所示页面

3.在最上方的一栏中找到network选项,然后刷新网页。此时,network会显示浏览器从网页服务器中所得到的所有文件,我们所需要的已失效视频的相关信息也在其中。

 

4.一般这些数据以json文件格式获取,因此我们可以单击network中的XHR选项,下拉找到开头为

list?media_id=xxxxxxx&pn...

格式的链接

 

5.双击打开链接,我们可以得到以json格式储存的数据,同时记住链接中对应的list?media_id后面的数字,它们对应着你的list?media_id,代码中将会用到。

6.看起来有些头疼,但是我们可以一行一行解析这些数据都代表着什么(这部分可以跳过)

上图其中一个未失效视频对应的数据,"tittle"是标题,"cover"是封面的图片url,"intro"是视频的简介,"upper"对应的是UP主的名字,头像等数据。

 这张图中的数据对应的是一个已失效视频。可以发现,当视频已失效时,它的默认标题就会改为“已失效视频”,同时该视频原本的封面也不会被保存,但是视频简介与UP主的个人信息并不会被删除,通过这些我们便可以推断出该已失效视频的内容大致是什么。

二、脚本运行环境的配置(PYTHON)

1.配置python环境(略)

2.引入库

代码如下:

import re
from urllib import request

三、使用脚本

下面是读取已失效视频的代码(注:不能直接复制粘贴用)

import re
from urllib import request



i=1
count=25
for i in range(count):
    url = 'https://api.bilibili.com/x/v3/fav/resource/list?media_id=xxxxxxx&pn='+str(i)+'&ps=20&keyword=&order=mtime&type=0&tid=0&platform=web&jsonp=jsonp'
    req = request.Request(url)
    page = request.urlopen(req).read()
    page = page.decode('utf-8')
    string = page
    my_match = re.findall('"title":"(.*?)"',string)
    intro = re.findall('"intro":"(.*?)"',string)
    upper = re.findall('"upper":{(.*?)}', string)
    for eachone in range(len(my_match)):
        if my_match[eachone]=="已失效视频":
            print("简介: "+intro[eachone])
            name = re.findall('"name":"(.*?)"', upper[eachone])
            print("up: "+name[0])
            print("========")
    i+=1

使用脚本之前需要对该脚本进行修改

1.参数count是收藏视频页面的总页数(第四行代码)

可以看到笔者的收藏总共有27页,读者可以根据自己实际的情况进行修改

2.根据之前打开json文件的链接来修改需要爬取的url(第六行代码)

在这一行中,我们需要第一步中获取的json文件的链接来修改url

url = 'https://api.bilibili.com/x/v3/fav/resource/list?media_id=xxxxxx&pn='+str(i)+'&ps=20&keyword=&order=mtime&type=0&tid=0&platform=web&jsonp=jsonp'

list?media_id=xxxxxx

这一部分中的xxxxxx修改为之前获得的链接中自己对应的list?media_id即可

爬取结果如图


总结

        在笔者使用脚本爬取已失效视频的内容时,发现大部分失效的视频都是搬运视频,由于没有版权而被下架。但是搬运视频时简介都会给出原视频的链接地址,所以想要知道失效的视频是什么,只需要点击视频原本地址观看即可。

        也有一些视频失效是因为视频原作者将其删除,或是因为对该视频的内容不满意,或是因为一些其他种种的原因,但不管怎么说,这些视频也曾经给我们带来过快乐或者感动,也感谢各位B站的UP主们能够给我们带来这么多有质量的视频作品。

附:将所有收藏视频的相关信息保存在本地文件的脚本

代码如下:

import time
import re
from urllib import request
import json



i=1
count=27
with open('D:\\bilibili默认收藏\\test.txt', "w+", encoding="utf-8") as f:
    for i in range(count):
        url = 'https://api.bilibili.com/x/v3/fav/resource/list?media_id=xxxxxxxx&pn='+str(i)+'&ps=20&keyword=&order=mtime&type=0&tid=0&platform=web&jsonp=jsonp'
        req = request.Request(url)
        page = request.urlopen(req).read()
        page = page.decode('utf-8')
        string = page
        my_match = re.findall('"title":"(.*?)"',string)
        intro = re.findall('"intro":"(.*?)"',string)
        upper = re.findall('"upper":{(.*?)}', string)
        for eachone in range(len(my_match)):
            print("名称: " + my_match[eachone])
            print("简介: "+intro[eachone])
            name = re.findall('"name":"(.*?)"', upper[eachone])
            print("up: "+name[0])
            print("========")
            f.write("名称: " + my_match[eachone])
            f.write("\n")
            f.write("简介: " + intro[eachone])
            f.write("\n")
            f.write("up: "+name[0])
            f.write("\n")
        i+=1
f.close()


使用方法同上,结果会保存在D:\\bilibili默认收藏\\test.txt文件中

  • 8
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值