Bilibili ialah tapak web video beramai-ramai yang popular di China. Ia juga merupakan harta karun, yang mengandungi semua jenis data. Antaranya, data benteng adalah sumber yang sangat berharga, begitu ramai penganalisis dan penyelidik data berharap untuk mendapatkan data ini. Dalam artikel ini, saya akan memperkenalkan penggunaan bahasa PHP untuk merangkak data benteng Bilibili.
Sebelum mula merangkak data benteng, kita perlu memasang rangka kerja perangkak PHP Symphony 2. Ia boleh dipasang melalui arahan berikut:
$ curl -LsS https://symfony.com/installer -o /usr/local/bin/symfony $ chmod a+x /usr/local/bin/symfony
Selepas itu, kita perlu menggunakan Composer untuk memasang perpustakaan bergantung GuzzleHttp dan PHP-DI:
$ composer require guzzlehttp/guzzle php-di/php-di
Seterusnya, kita perlu mencari video yang sepadan nombor di laman web Bilibili Ia boleh diperolehi melalui alat pembangun F12.
Selepas mendapatkan nombor video Bilibili, kita boleh menggunakan GuzzleHttp untuk menghantar permintaan GET untuk mendapatkan data dan mendapatkan senarai rentetan dalam maklumat video tersebut. Berikut ialah kod untuk mendapatkan data:
$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);
Selepas berjaya mendapatkan maklumat senarai barraj, kami merangkumnya ke dalam tatasusunan:
$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 ]; }
Selepas kami berjaya mendapatkan data barrage, kami Ia boleh disimpan ke pangkalan data untuk analisis dan penggunaan seterusnya:
$builder = $this->db->createQueryBuilder(); foreach ($items as $item) { $builder->insert('danmaku') ->values([ '`time`' => ':time', '`content`' => ':content' ]) ->setParameters([ ':time' => $item['time'], ':content' => $item['content'] ]) ->execute(); }
Seterusnya, kita boleh mula menganalisis rentetan yang diperolehi Data dianalisis dan dibentangkan. Kita boleh menggunakan PHP dengan Highcharts, alat visualisasi data, untuk membina carta bilangan komen. Berikut ialah pelaksanaan data paparan dan kod:
$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 }} }] });
Melalui artikel ini, kami telah berjaya menggunakan rangka kerja perangkak PHP Symphony 2 untuk merangkak fungsi data barrage Bilibili , menganalisis data yang diperoleh, dan menjana carta bilangan baraj. Dalam proses ini, kami mempelajari cara menggunakan PHP untuk menghantar permintaan GET untuk mendapatkan data rentetan video Bilibili, dan cara menggunakan Highcharts untuk memaparkan data.
Atas ialah kandungan terperinci Amalan PHP: merangkak data benteng Bilibili. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!