Bクロール駅の弾幕

Bクロール駅の弾幕

いくつかの時間今それを記録経験を弾幕B駅をクロールする前に

予備的

HTML構文解析

ここに画像を挿入説明
ここに画像を挿入説明
JSON応答ファイルの弾幕が配置されている検索、1,000以上のリアルタイム弾幕があることがわかった
解析パラメータは:
ここに画像を挿入説明
のビデオを識別するための唯一の主キーOID
我々は注意を払う必要がありますので、(私は、マスターまでのすべてのビデオのグラブを考えていたダウンの改革は、OIDクロールを見つけました)すべてのOIDを取る
//www.bilibili.com/video/av+vidます。https:各動画のURLが固定されているフォーマットを参照
、すべてのクロールのxpathの、メインインターフェイスからすべてのVIDグラブをOID
この点を、すべてのOIDクロールが完了しました

次のエントリコードは弾幕、分析データをフェッチ

まず小さなテストで、個々のビデオ弾幕テストをつかみます:

url="https://api.bilibili.com/x/v1/dm/list.so?oid=144896116"
headers={
        "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0"
         }
# query_list={"oid":"144896116"}
response=requests.get(url,headers=headers)
html_str=response.content
html=etree.HTML(html_str)
d_list=html.xpath('//d')
content_list=[]

a=d_list[0].xpath('//text()')
items={}
items["danmu"]=a
content_list.append(items)
with open("blbl.txt","w",encoding="utf-8") as f:
    for content in content_list:
        f.write(json.dumps(content,ensure_ascii=False))
        f.write("\n")

案の定、グラブ成功

次いで、データベースに格納され、堰、解像度の全てをつかみます

import pymysql
import json
import io
import sys

con = pymysql.connect(

    host='127.0.0.1',

    port=3306,

    user='root',

    password='root',

    db='test',

    charset='utf8mb4'

)
cur = con.cursor()
cur.execute("insert into danmu(dm) value('测试')")
con.commit()
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='gb18030')
with open("danmu.json", "r", encoding="utf-8") as f:
    danmu_str = json.load(f)
    # print(danmu_str["dm"][0]["danmu"])
    j = 0
    for j in range(0, 1002):
        for item in danmu_str["dm"][j]["danmu"]:

            # sql_str="insert into danmu(dm) value( \""+item+"\")"

            for stuff in dirty_stuff:
                item = item.replace(stuff, "")
            print(item)
            length = item.__len__()
           
            for l in range(1, length - 1):
                if (item_list[0]==item_list[l]):
                    item=item_list[0]
            sql_str = "insert into danmu(dm) value( \"" + item + "\")"
            cur.execute(sql_str)
            con.commit()


ここに画像を挿入説明
構文解析データ、弾幕ランク:


select count(*) as count,dm as danmu
from danmu
group by dm
order by count desc;

トップの結果:
ここに画像を挿入説明
私は逮捕され、予期しない結果の利点をランク付けキングHanqingの100万人の弾幕、どのようなああ0、F、ああ、ああ...

公開された73元の記事 ウォン称賛20 ビュー4395

おすすめ

転載: blog.csdn.net/lzl980111/article/details/104228861