PHP-Praxis: Crawlen von Bilibili-Sperrdaten

王林
Freigeben: 2023-06-13 19:10:01
Original
1986 Leute haben es durchsucht

Bilibili ist eine in China beliebte Sperrvideo-Website. Sie ist auch ein Schatz, der alle Arten von Daten enthält. Unter diesen sind Sperrdaten eine sehr wertvolle Ressource, weshalb viele Datenanalysten und Forscher hoffen, diese Daten zu erhalten. In diesem Artikel werde ich die Verwendung der PHP-Sprache zum Crawlen von Bilibili-Sperrdaten vorstellen.

  1. Vorbereitung

Bevor wir mit dem Crawlen der Sperrdaten beginnen, müssen wir ein PHP-Crawler-Framework Symphony 2 installieren. Es kann über den folgenden Befehl installiert werden:

$ curl -LsS https://symfony.com/installer -o /usr/local/bin/symfony
$ chmod a+x /usr/local/bin/symfony
Nach dem Login kopieren

Danach müssen wir Composer verwenden, um GuzzleHttp und PHP-DI-abhängige Bibliotheken zu installieren:

$ composer require guzzlehttp/guzzle php-di/php-di
Nach dem Login kopieren

Als nächstes müssen wir die entsprechende Videonummer auf der Bilibili-Website finden, die das kann Dies kann über die F12-Entwicklertools des Browsers erfolgen.

  1. Sperrdaten durchsuchen

Nachdem wir die Nummer des Bilibili-Videos erhalten haben, können wir mit GuzzleHttp eine GET-Anfrage senden, um die Daten abzurufen und so die Sperrlisteninformationen im Video zu erhalten. Das Folgende ist der Code zum Abrufen der Daten:

$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);
Nach dem Login kopieren

Nachdem wir die Sperrlisteninformationen erfolgreich erhalten haben, kapseln wir sie in ein Array:

$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
    ];
}
Nach dem Login kopieren

Nachdem wir die Sperrdaten erfolgreich erhalten haben, können wir sie zur späteren Analyse in der Datenbank speichern und verwenden Sie:

$builder = $this->db->createQueryBuilder();
foreach ($items as $item) {
    $builder->insert('danmaku')
            ->values([
                '`time`' => ':time',
                '`content`' => ':content'
            ])
            ->setParameters([
                ':time' => $item['time'],
                ':content' => $item['content']
            ])
            ->execute();
}
Nach dem Login kopieren
  1. Analyse der Sperrdaten

Als nächstes können wir mit der Analyse und Anzeige der erhaltenen Sperrdaten beginnen. Wir können PHP mit Highcharts, einem Datenvisualisierungstool, verwenden, um ein Diagramm der Anzahl der Kommentare zu erstellen. Das Folgende sind die Anzeigedaten und die Code-Implementierung:

$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
]);
Nach dem Login kopieren
Highcharts.chart('container', {
    chart: {
        type: 'spline'
    },
    title: {
        text: '弹幕数量'
    },
    xAxis: {
        title: {
            text: '时间'
        }
    },
    yAxis: {
        title: {
            text: '数量'
        }
    },
    credits: {
        enabled: false
    },
    series: [{
        name: '弹幕数量',
        data: {{ data | json_encode }}
    }]
});
Nach dem Login kopieren
  1. Fazit

In diesem Artikel haben wir das PHP-Crawler-Framework Symphony 2 erfolgreich verwendet, um die Funktion zum Crawlen von Bilibili-Sperrdaten zu implementieren, und die erhaltenen Daten analysiert Es wird ein Diagramm mit der Anzahl der Staustufen erstellt. In diesem Prozess haben wir gelernt, wie man mit PHP eine GET-Anfrage sendet, um Bilibili-Videosperrdaten zu erhalten, und wie man Highcharts zum Anzeigen der Daten verwendet.

Das obige ist der detaillierte Inhalt vonPHP-Praxis: Crawlen von Bilibili-Sperrdaten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!