欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python腳本如何在bilibili中查找彈幕發(fā)送者

 更新時間:2020年06月04日 14:06:25   作者:dlpu_fan  
這篇文章主要介紹了如何在bilibili中查找彈幕發(fā)送者,本文給大家分享小編寫的一個python腳本來實現(xiàn)bilibili彈幕發(fā)送者,需要的朋友可以參考下

       總所周知bilibili是沒有辦法直接查看彈幕的發(fā)送者的,這使得當(dāng)我們看到一些nt彈幕的時候雖然生氣,卻無可奈何,但是B站是可以屏蔽某個用戶發(fā)送的彈幕的,這說明數(shù)據(jù)接口里肯定有用戶信息,由于最近在學(xué)爬蟲,所以我想先找找彈幕接口,分析下里面的數(shù)據(jù)。

找接口

       找接口當(dāng)然是隨便打開一個視頻然后F12啦,可是當(dāng)我找了兩圈后我傻眼了,沒找到啊。。得,不能把時間浪費在這種事情上,果斷打開百度,不出所料,找到了如下的兩個接口,都是XML格式網(wǎng)頁

https://comment.bilibili.com/+cid
https://api.bilibili.com/x/v1/dm/list.so?oid=+cid

       這里面的cid是一種每個視頻獨有的數(shù)字,也就是每一P都有一個cid,查找cid可以打開網(wǎng)頁然后F12,再ctrl+f搜索cid,一般八九位數(shù)的就是cid了。

       這里我找到了一個接口,可以通過aid找到cid

https://www.bilibili.com/widget/getPageList?aid=+aid

分析數(shù)據(jù)

       彈幕數(shù)據(jù)是獲取到了,那么我們就要從這一堆數(shù)據(jù)中分析他們的用途了

在這里插入圖片描述

       這里大概能得到兩個信息,其中第6個數(shù)據(jù)為時間戳,第8個數(shù)據(jù)為用戶uid的某種加密方式。經(jīng)查詢得到這是用戶uid經(jīng)過crc32校驗得到的結(jié)果轉(zhuǎn)為16進制數(shù),所以只能通過uid得到對于的校驗碼,無法反推。。似乎只能通過彩虹表的方式查找數(shù)據(jù)了?那么這串8位16進制的數(shù)字在數(shù)據(jù)庫中要用什么方式保存呢?
       選擇似乎有varchar和bigint,由于B站有差不多6億個用戶,在6億個數(shù)據(jù)中查找想要的字符串那速度必然很慢(但有人經(jīng)測試得到varchar型數(shù)據(jù)和bigint型數(shù)據(jù)查找速度其實差的不多?)
       就在我決定用bigint儲存數(shù)據(jù)時,我突然想到,8位16進制那就是2的32次方,int型的儲存上限時2的31次方,如果用無符號的方式保存正好是2的32次方,也就是能儲存到0xffffffff這么大的數(shù)據(jù),正好滿足要求。于是果斷換成無符號int,與之對應(yīng)的id也為無符號int,并將crc32b編碼過后的數(shù)據(jù)作為主鍵,制成彩虹表存入我的服務(wù)器內(nèi)。
       (粗略的算了一下,6億數(shù)據(jù)就是需要27G左右的空間…而我的服務(wù)器一共才40G的大小…)

做成網(wǎng)頁供大家使用

       接下來的操作似乎就水到渠成了,寫了個python腳本,該python腳本接受2個參數(shù),視頻cid和想要搜索的彈幕關(guān)鍵字,返回用戶發(fā)送的彈幕,用戶的crc32b編碼,時間戳。然后用php的exec函數(shù)執(zhí)行python代碼,并通過搜索數(shù)據(jù)庫找出用戶的uid,通過php返回json格式數(shù)據(jù)給前端。

python代碼(寫的很爛)

import requests
from bs4 import BeautifulSoup
import re
import io

import sys

sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8')
req = requests.get('https://comment.bilibili.com/'+sys.argv[1]+'.xml')
req.encoding = req.apparent_encoding
soup = BeautifulSoup(req.text, 'html.parser').find_all(name='d')
result = ""
for i in soup:
 s = re.sub('<(.*?)>', '', str(i))
 index = 0
 if(len(sys.argv[2])>0):
  index = s.find(str(sys.argv[2]))
 if(index!=-1):
  result+=str(i).split(",")[6]+","+s+","+str(i).split(",")[4]+","
print(result)

效果展示

       前端代碼就是隨便寫的~至少功能實現(xiàn)了嘛

在這里插入圖片描述在這里插入圖片描述

       這里說一下為什么是NULL,因為我的服務(wù)器還在可憐巴巴的往數(shù)據(jù)庫內(nèi)寫入彩虹表數(shù)據(jù)。。預(yù)計需要4天~
       今天加了個暴力破解的功能,避免了查詢結(jié)果為NULL,但是相對的查詢速度會非常慢。

       最后!附上該工具的鏈接:點我

總結(jié)

到此這篇關(guān)于Python腳本如何在bilibili中查找彈幕發(fā)送者的文章就介紹到這了,更多相關(guān)bilibili彈幕發(fā)送者內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python讀取并寫入mat文件的方法

    python讀取并寫入mat文件的方法

    這篇文章主要介紹了python讀取并寫入mat文件的方法,文中給大家提到了python讀取matlab寫的mat文件問題以及解決辦法 ,需要的朋友可以參考下
    2019-07-07
  • 利用python腳本提取Abaqus場輸出數(shù)據(jù)的代碼

    利用python腳本提取Abaqus場輸出數(shù)據(jù)的代碼

    這篇文章主要介紹了利用python腳本提取Abaqus場輸出數(shù)據(jù),利用python腳本對Abaqus進行數(shù)據(jù)提取時,要對python腳本做前步的導(dǎo)入處理,本文通過實例代碼詳細講解需要的朋友可以參考下
    2022-11-11
  • Python 中多態(tài)性的示例和類的繼承多態(tài)性詳解

    Python 中多態(tài)性的示例和類的繼承多態(tài)性詳解

    多態(tài)性通常在類的方法中使用,其中我們可以具有相同方法名稱的多個類,本文給大家介紹Python 中多態(tài)性的示例和類的繼承多態(tài)性詳解,需要的朋友可以參考下
    2023-10-10
  • 解決tf.keras.models.load_model加載模型報錯問題

    解決tf.keras.models.load_model加載模型報錯問題

    這篇文章主要介紹了解決tf.keras.models.load_model加載模型報錯問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Selenium定時刷新網(wǎng)頁的實現(xiàn)代碼

    Selenium定時刷新網(wǎng)頁的實現(xiàn)代碼

    這篇文章主要介紹了Selenium定時刷新網(wǎng)頁的實現(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • 用Python實現(xiàn)數(shù)據(jù)的透視表的方法

    用Python實現(xiàn)數(shù)據(jù)的透視表的方法

    今天小編就為大家分享一篇用Python實現(xiàn)數(shù)據(jù)的透視表的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • Python實現(xiàn)經(jīng)典算法拓撲排序、字符串匹配算法和最小生成樹實例

    Python實現(xiàn)經(jīng)典算法拓撲排序、字符串匹配算法和最小生成樹實例

    這篇文章主要介紹了Python實現(xiàn)經(jīng)典算法拓撲排序、字符串匹配算法和最小生成樹實例,拓撲排序、字符串匹配算法和最小生成樹是計算機科學(xué)中常用的數(shù)據(jù)結(jié)構(gòu)和算法,它們在解決各種實際問題中具有重要的應(yīng)用價值,需要的朋友可以參考下
    2023-08-08
  • 在Python的Bottle框架中使用微信API的示例

    在Python的Bottle框架中使用微信API的示例

    這篇文章主要介紹了在Python的Bottle框架中使用微信API的示例,作者還在文中給出了一個生成的微信可掃描的二維碼圖,需要的朋友可以參考下
    2015-04-04
  • python OpenCV 實現(xiàn)高斯濾波詳解

    python OpenCV 實現(xiàn)高斯濾波詳解

    這篇文章主要介紹了Python+OpenCV 實現(xiàn)高斯濾波的過程,關(guān)于高斯濾波的解釋,它是一種線性平滑濾波,適用于消除高斯噪聲,具體實現(xiàn)過程跟隨小編一起看看吧
    2021-10-10
  • python實現(xiàn)PCA降維的示例詳解

    python實現(xiàn)PCA降維的示例詳解

    今天小編就為大家分享一篇python實現(xiàn)PCA降維的示例詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02

最新評論