Bilibili는 중국에서 인기 있는 사격 동영상 웹사이트이며, 모든 종류의 데이터를 담고 있는 보물창고이기도 합니다. 그중에서도 사격 데이터는 매우 귀중한 자원이기 때문에 많은 데이터 분석가와 연구자들이 이 데이터를 얻기를 희망하고 있습니다. 이 기사에서는 Bilibili 사격 데이터를 크롤링하기 위해 PHP 언어를 사용하는 방법을 소개합니다.
탄막 데이터 크롤링을 시작하기 전에 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 웹사이트에서 해당 비디오 번호를 찾아야 합니다. 브라우저 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(); }
다음으로, 획득한 사격 데이터를 분석하고 표시할 수 있습니다. 데이터 시각화 도구인 Highcharts와 함께 PHP를 사용하여 댓글 수에 대한 차트를 작성할 수 있습니다. 다음은 표시 데이터 및 코드 구현입니다.
$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 사격 데이터를 크롤링하는 기능을 구현하고 얻은 데이터를 분석했습니다. 포격 횟수 차트가 생성되었습니다. 이 과정에서 우리는 Bilibili 비디오 사격 데이터를 얻기 위해 PHP를 사용하여 GET 요청을 보내는 방법과 Highcharts를 사용하여 데이터를 표시하는 방법을 배웠습니다.
위 내용은 PHP 연습: Bilibili 사격 데이터 크롤링의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!