日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

女友刷B站流量告急,技术男友轻松搞定!

發布時間:2024/9/15 编程问答 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 女友刷B站流量告急,技术男友轻松搞定! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文 |?某某白米飯

來源:Python 技術「ID: pythonall」

B 站大家都熟悉,尤其是它的舞蹈區。有 100W+ 的舞蹈視頻。在沒有 wifi 的情況下,就欣賞不了這些視頻了。作為一個 python 程序員,小編就寫一個 Python 腳本在晚上下載舞蹈區的所有視頻。

抓取列表

首先點開舞蹈區先選擇宅舞列表。

然后打開 F12 的控制面板,可以找到一條 https://api.bilibili.com/x/web-interface/newlist?rid=20&type=0&pn=1&ps=20&jsonp=jsonp&callback=jsonCallback_bili_57905715749828263 的 url,其中 rid 是 B 站的小分類,pn 是頁數。

小編試著在瀏覽器將地址打開居然報了 404,可是在控制面板中這個地址的返回值明明就是視頻列表。試著去掉 callback 的參數,意外的得到了想要的結果。

眾所周知 bid 是一個 B 站視頻的唯一 ID,想要獲取 bid 可以從上面 url 的返回值中提取 aid,然后將 aid 轉換為 bid。

# aid 轉 bid 代碼取自:https://zhuanlan.zhihu.com/p/117358823Str?=?'fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF'??#?準備的一串指定字符串 Dict?=?{}#?將字符串的每一個字符放入字典一一對應?,?如 f對應0 Z對應1 一次類推。 for?i?in?range(58):Dict[Str[i]]?=?is?=?[11,?10,?3,?8,?4,?6,?2,?9,?5,?7]??#?必要的解密列表 xor?=?177451812? add?=?100618342136696320??#?這串數字最后要被減去或加上def?algorithm_enc(av):ret?=?avav?=?int(av)av?=?(av?^?xor)?+?add#?將BV號的格式(BV?+?10個字符)?轉化成列表方便后面的操作r?=?list('BV??????????')for?i?in?range(10):r[s[i]]?=?Str[av?//?58?**?i?%?58]return?''.join(r)def?find_bid(p):bids?=?[]r?=?requests.get('https://api.bilibili.com/x/web-interface/newlist?&rid=20&type=0&pn={}&ps=50&jsonp=jsonp'.format(p))data?=?json.loads(r.text)archives?=?data['data']['archives']for?item?in?archives:aid?=?item['aid']bid?=?algorithm_enc(aid)bids.append(bid)return?bids

獲取視頻的 CID

想要下載 1080 的視頻,光有 bid 是不夠的,還需要 登錄后 Cookie 中的 SESSDATA 值和 cid 。

首先登錄 B 站將 Cookie 中的 SESSDATA 復制到對象頭中。用地址為 https://api.bilibili.com/x/player/pagelist?bvid= url 返回 cid。

def?get_cid(bid):url?=?'https://api.bilibili.com/x/player/pagelist?bvid='?+?bidheaders?=?{'User-Agent':?'Mozilla/5.0?(Windows?NT?10.0;?Win64;?x64)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/90.0.4430.212?Safari/537.36','Cookie':?'SESSDATA=182cd036%2C1636985829%2C3b393%2A51','Host':?'api.bilibili.com'}html?=?requests.get(url,?headers=headers).json()infos?=?[]data?=?html['data']cid_list?=?datafor?item?in?cid_list:cid?=?item['cid']title?=?item['part']infos.append({'bid':?bid,?'cid':?cid,?'title':?title})return?infos

下載視頻

下載視頻的 https://api.bilibili.com/x/player/playurl 來自于每次視頻播放完之后的推薦列表。

最后使用 urllib.request.urlretrieve 函數下載視頻。

def?get_video_list(aid,?cid,?quality):url_api?=?'https://api.bilibili.com/x/player/playurl?cid={}&bvid={}&qn={}'.format(cid,?aid,?quality)headers?=?{'User-Agent':?'Mozilla/5.0?(Windows?NT?10.0;?Win64;?x64)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/90.0.4430.212?Safari/537.36','Cookie':?'SESSDATA=182cd036%2C1636985829%2C3b393%2A51','Host':?'api.bilibili.com'}html?=?requests.get(url_api,?headers=headers).json()video_list?=?[]for?i?in?html['data']['durl']:video_list.append(i['url'])return?video_listdef?schedule_cmd(blocknum,?blocksize,?totalsize):percent?=?100.0?*?blocknum?*?blocksize/?totalsizes?=?('#'?*?round(percent)).ljust(100,?'-')sys.stdout.write('%.2f%%'?%?percent?+?'['?+?s?+?']'?+?'\r')sys.stdout.flush()def?download(video_list,?title,?bid):for?i?in?video_list:opener?=?urllib.request.build_opener()opener.addheaders?=?[('User-Agent',?'Mozilla/5.0?(Windows?NT?10.0;?Win64;?x64)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/90.0.4430.212?Safari/537.36'),('Accept',?'*/*'),('Accept-Language',?'en-US,en;q=0.5'),('Accept-Encoding',?'gzip,?deflate,?br'),?('Range',?'bytes=0-'),??('Referer',?'https://www.bilibili.com/video/'+bid),('Origin',?'https://www.bilibili.com'),('Connection',?'keep-alive'),]filename=os.path.join('D:\\video',?r'{}_{}.mp4'.format(bid,title))?try:urllib.request.install_opener(opener)urllib.request.urlretrieve(url=i,?filename=filename,?reporthook=schedule_cmd)?except:print(bid?+?"下載異常,文件:"?+?filename)

總結

本篇介紹了通過爬蟲的方式下載 B 站視頻,代碼量不多就 130 行左右。大家也可以擴展一下,自動下載關注 up 主的視頻。

參考

  • [1] AID 轉 BID??https://zhuanlan.zhihu.com/p/117358823

推薦閱讀

Pandas處理數據太慢,來試試Polars吧!

懶人必備!只需一行代碼,就能導入所有的Python庫

絕!關于pip的15個使用小技巧

介紹10個常用的Python內置函數,99.99%的人都在用!

可能是全網最完整的 Python 操作 Excel庫總結!

總結

以上是生活随笔為你收集整理的女友刷B站流量告急,技术男友轻松搞定!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。