PHP の練習: Bilibili の弾幕データをクロールする
Bilibiliは中国で人気の弾幕動画サイトですが、あらゆるデータが揃っている宝庫でもあります。中でも弾幕データは非常に貴重な資料であり、多くのデータアナリストや研究者がこのデータの入手を望んでいます。この記事では、PHP言語を使用してBilibiliの弾幕データをクロールする方法を紹介します。
- 準備
弾幕データのクロールを開始する前に、PHP クローラー フレームワーク Symphony 2 をインストールする必要があります。次のコマンドでインストールできます:
$ curl -LsS https://symfony.com/installer -o /usr/local/bin/symfony $ chmod a+x /usr/local/bin/symfony
その後、Composer を使用して GuzzleHttp と PHP-DI 依存ライブラリをインストールする必要があります:
$ composer require guzzlehttp/guzzle php-di/php-di
次に、Bilibili に移動する必要があります。 Web サイトにアクセスして、対応するビデオの番号を確認します。ブラウザ F12 開発者ツールを通じて取得できます。
- 弾幕データのクローリング
Bilibili 動画の番号を取得したら、GuzzleHttp を使用して GET リクエストを送信してデータを取得し、弾幕リストを取得します。ビデオ情報。データを取得するコードは次のとおりです:
$client = new GuzzleHttpClient(); $res = $client->request('GET', "https://api.bilibili.com/x/v1/dm/list.so?oid={$oid}"); $xml = simplexml_load_string($res->getBody(), 'SimpleXMLElement', LIBXML_NOCDATA);
弾幕リスト情報を正常に取得した後、それを配列にカプセル化します:
$items = []; foreach ($xml->d->p as $p) { list($time, $type, $size, $color, $time) = explode(",", $p['p']); $content = (string) $p; $items[] = [ 'time' => (float) $time, 'content' => $content ]; }
弾幕データを正常に取得した後、次のようになります。後続の分析と使用のためにデータベースに保存されます。
$builder = $this->db->createQueryBuilder(); foreach ($items as $item) { $builder->insert('danmaku') ->values([ '`time`' => ':time', '`content`' => ':content' ]) ->setParameters([ ':time' => $item['time'], ':content' => $item['content'] ]) ->execute(); }
- 弾幕データの分析
次に、取得した弾幕データの分析を開始できます。データが分析され、表示されます。 PHP とデータ視覚化ツール Highcharts を使用して、弾幕数のグラフを作成できます。表示データとコードの実装は次のとおりです。
$builder = $this->db->createQueryBuilder(); $data = $builder->select('COUNT(*) as cnt, FLOOR(`time`) as time') ->from('danmaku') ->groupBy('floor(`time`)') ->execute() ->fetchAll(PDO::FETCH_ASSOC); echo $twig->render('danmaku.html.twig', [ 'data' => $data ]);
Highcharts.chart('container', { chart: { type: 'spline' }, title: { text: '弹幕数量' }, xAxis: { title: { text: '时间' } }, yAxis: { title: { text: '数量' } }, credits: { enabled: false }, series: [{ name: '弹幕数量', data: {{ data | json_encode }} }] });
- 結論
この記事を通じて、PHP クローラー フレームワーク Symphony 2 を使用して Bilibili の弾幕データ関数をクロールすることに成功しました。 、取得したデータを分析し、弾幕数のグラフを作成しました。このプロセスでは、PHP を使用して GET リクエストを送信して Bilibili ビデオの弾幕データを取得する方法と、Highcharts を使用してデータを表示する方法を学びました。
以上がPHP の練習: Bilibili の弾幕データをクロールするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undress AI Tool
脱衣画像を無料で

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Stock Market GPT
AIを活用した投資調査により賢明な意思決定を実現

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

Mantianxing Comicのフルバージョンはhttps://www.mantianxingmh.comです。このプラットフォームは、情熱、愛、サスペンス、サイエンスフィクションなどのさまざまなテーマをカバーし、豊富なリソースとタイムリーな更新と分類された検索をサポートしています。高解像度の画質、複数のページターニングモード、カスタムバックグラウンドと輝度の調整を提供し、読書体験を最適化するための目の保護モードを備えています。ユーザーは、本棚を作成し、レコードの読み取りを保存し、オフラインをダウンロードし、クロスデバイスの同期の進行状況を達成できます。

mysqli_insert_id()(手順スタイル)、$ mysqli-> insert_id(オブジェクトスタイル)、または$ pdo-> lastinsertid()()を使用して、最後に挿入されたIDを取得し、同じ接続ですぐに呼び出される必要があります。

PHPにHTMLを出力するために、単一の引用符または脱出した二重引用符を使用します。属性の引用符の競合を避けるために、文字列を単一の引用符で巻くことをお勧めします。動的なコンテンツは、可変スプライシングまたはHeredoc構文と組み合わせて生成できます。

finalClassESSANDMETHODSINPPREVENTINTANCHENDOVERIDINGTOPROTECTCRITICLICODE.2.AFINALCLASSCANNOTBEEXTEDED.3.AFINALMETHODCANNOTBEOVERDINDCANTCONSTIMPRENTIONSACROSSSUBCLASSES.4.USEFINFINEFORESTURET

$ _gettoaccessurlquelystringvariablesinphpを使用します。

praitsinphpenablehorizontalcodereusebyalowingclasseStoinheritmethods fromreusabletraitcontainers、bypassingsingleinheritancelimits

MBTI無料テストWebサイトの公式入り口はhttps://www.16personalities.com/です。このWebサイトは、中国語と英語版のテストを提供し、パーソナリティディメンション分析、パーソナライズされたレポート、マルチシナリオアプリケーションの提案をカバーし、ユーザーが自分の性格タイプの詳細な理解を得るのに役立ちます。

set_error_handlerinphpenablescustomerrorhandlingbydefining afunction ot interceptss recoverableerrors、controllollogledlogginger-friendlyresponses; itacceptssparametersils; itacceptssparameterslike;
