最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

找接口

       找接口當然是隨便打開一個視頻然后F12啦,可是當我找了兩圈后我傻眼了,沒找到啊。。得,不能把時間浪費在這種事情上,果斷打開百度,不出所料,找到了如下的兩個接口,都是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,與之對應的id也為無符號int,并將crc32b編碼過后的數(shù)據(jù)作為主鍵,制成彩虹表存入我的服務器內(nèi)。
       (粗略的算了一下,6億數(shù)據(jù)就是需要27G左右的空間…而我的服務器一共才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,因為我的服務器還在可憐巴巴的往數(shù)據(jù)庫內(nèi)寫入彩虹表數(shù)據(jù)。。預計需要4天~
       今天加了個暴力破解的功能,避免了查詢結(jié)果為NULL,但是相對的查詢速度會非常慢。

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

總結(jié)

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

相關(guān)文章

  • Python八大常見排序算法定義、實現(xiàn)及時間消耗效率分析

    Python八大常見排序算法定義、實現(xiàn)及時間消耗效率分析

    這篇文章主要介紹了Python八大常見排序算法定義、實現(xiàn)及時間消耗效率分析,結(jié)合具體實例形式對比分析了冒泡排序、直接插入排序、選擇排序、歸并排序、希爾排序、桶排序、堆排序等排序算法的使用與執(zhí)行效率,需要的朋友可以參考下
    2018-04-04
  • 簡單介紹利用TK在Python下進行GUI編程的教程

    簡單介紹利用TK在Python下進行GUI編程的教程

    這篇文章主要介紹了簡單介紹利用TK在Python下進行GUI編程的教程,本文來自于IBM官方開發(fā)者技術(shù)文檔,需要的朋友可以參考下
    2015-04-04
  • python編程使用selenium模擬登陸淘寶實例代碼

    python編程使用selenium模擬登陸淘寶實例代碼

    這篇文章主要介紹了python編程使用selenium模擬登陸淘寶實例代碼,涉及selenium的簡介及Windows下的安裝,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • Python 中將值附加到集合的操作方法

    Python 中將值附加到集合的操作方法

    這篇文章主要介紹了Python 中將值附加到集合的操作方法,通過使用 add() 方法或 update() 方法,你可以向 Python 中的集合中添加元素,在添加元素時,需要注意不允許重復元素和集合是無序的,本文通過示例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • 基于python3 的百度圖片下載器的實現(xiàn)代碼

    基于python3 的百度圖片下載器的實現(xiàn)代碼

    這篇文章主要介紹了基于python3 的百度圖片下載器的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • Python字符串對齊和判斷方法匯總

    Python字符串對齊和判斷方法匯總

    本教程將詳細介紹Python中的字符串對齊方法以及字符串判斷方法,這些方法在文本處理、格式化輸出和字符串匹配中非常實用,無論你是Python初學者還是想要鞏固基礎知識的程序員,這篇教程都能幫助你全面理解這些操作,需要的朋友可以參考下
    2025-04-04
  • Python使用sqlite3第三方庫讀寫SQLite數(shù)據(jù)庫的方法步驟

    Python使用sqlite3第三方庫讀寫SQLite數(shù)據(jù)庫的方法步驟

    數(shù)據(jù)庫非常重要,程序的數(shù)據(jù)增刪改查需要數(shù)據(jù)庫支持,python處理數(shù)據(jù)庫非常簡單,而且不同類型的數(shù)據(jù)庫處理邏輯方式大同小異,下面這篇文章主要給大家介紹了關(guān)于Python使用sqlite3第三方庫讀寫SQLite數(shù)據(jù)庫的方法步驟,需要的朋友可以參考下
    2022-07-07
  • Python新手們?nèi)菀追傅膸讉€錯誤總結(jié)

    Python新手們?nèi)菀追傅膸讉€錯誤總結(jié)

    python語言里面有一些小的坑,特別容易弄混弄錯,初學者若不注意的話,很容易坑進去,下面我給大家深入解析一些這幾個坑,希望對初學者有所幫助,需要的朋友可以參考學習,下面來一起看看吧。
    2017-04-04
  • 基于Python搭建人臉識別考勤系統(tǒng)

    基于Python搭建人臉識別考勤系統(tǒng)

    人臉識別目前正被用于讓世界更安全、更智能、更方便。在本文中,你將學習如何使用 Python 構(gòu)建人臉識別系統(tǒng)。人臉識別比人臉檢測更進一步。感興趣的可以學習一下
    2021-12-12
  • 零基礎寫python爬蟲之使用Scrapy框架編寫爬蟲

    零基礎寫python爬蟲之使用Scrapy框架編寫爬蟲

    前面的文章我們介紹了Python爬蟲框架Scrapy的安裝與配置等基本資料,本文我們就來看看如何使用Scrapy框架方便快捷的抓取一個網(wǎng)站的內(nèi)容,隨便選個小站(dmoz.org)來示例吧
    2014-11-11

最新評論

赫章县| 台北市| 青神县| 泰来县| 阳新县| 静海县| 都江堰市| 浑源县| 南京市| 南华县| 宜良县| 衡阳县| 铜山县| 恩施市| 洪雅县| 汉中市| 裕民县| 福州市| 屏东县| 荥经县| 汾阳市| 乌什县| 通辽市| 昌吉市| 邳州市| 苏州市| 忻州市| 奉新县| 荔浦县| 凯里市| 临海市| 建昌县| 施甸县| 綦江县| 岳阳市| 英吉沙县| 霍州市| 乳山市| 叶城县| 韶山市| 调兵山市|