如何用python对随机产生的bv号进行检索?

我又来了!从上一个问题中我已经制作出一个可以随机生成bv号的函数,现在要将生成的bv号进行检索,直到找到播放量超过五十万的视频,请问如何将用python实现检索!


import requests
import re
bv = 'BV1De4y2J7VJ'
url = 'https://www.bilibili.com/video/' + bv
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36 Edg/90.0.818.49"}
res = requests.get(url, headers=headers)

# 构建正则表达式用来提取播放次数
bofang = re.findall(r'<span title="总播放数(.*?)" class="view item">', res.text)
try:
    if int(bofang[0]) > 500000:
        print('超过50w,播放量为',bofang[0])
    else:
        print('没有50w')
except Exception as e:
    print('bv号无效')

可以通过 pip install bilibili-api,使用 bilibili-api 这个库获取播放量,下面是用随机avid转bvid,你可以换成自己的随机bvid函数

import asyncio
from bilibili_api import video
import random

table='fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF'
tr={}
for i in range(58):
    tr[table[i]]=i
s=[11,10,3,8,4,6]
xor=177451812
add=8728348608

def dec(x):
    r=0
    for i in range(6):
        r+=tr[x[s[i]]]*58**i
    return (r-add)^xor

def enc(x):
    x=(x^xor)+add
    r=list('BV1  4 1 7  ')
    for i in range(6):
        r[s[i]]=table[x//58**i%58]
    return ''.join(r)


def getBvid():
    return enc(random.randint(10000, 2**30))

async def main():
    
    while True:
        bvid = getBvid()
        try:
            v = video.Video(bvid=bvid)
            info = await v.get_info()
        except Exception as e:
            pass
        else:
            if(info['stat']['view'] > 500000):
                print("播放量>500k:" + bvid)
                break;
  
if __name__ == '__main__':
    asyncio.get_event_loop().run_until_complete(main())

这个看看是否有帮助
https://b23.tv/AxsCcZt

检索源是啥

一般大概是这样(使用时注意加睡眠时间

import requests
import re

# 目标URL
url = 'https://www.bilibili.com/video/BV' + yourbvcode

# 获取响应
res = requests.get(url)

# 构建正则表达式用来提取播放次数
r = re.compile('总播放数[0-9]*')

# 播放次数
t = int(r.findall(res.text)[0][4:])