PHPで簡単スクレイピング(php-html-parser編)

PHP

説明

php-html-parserを使って、スクレイピング(ウェブ抽出)を行います。
今回は例として、本サイトのブログタイトル一覧を入手します。

開発環境

php8.0
composer version 2.1.6

※dockerでの開発環境の構築方法はこちら

実践

①. composerからphp-html-parserを入れる

root@hoge:/var/www/html# mkdir scraping
root@hoge:/var/www/html# cd scraping/
root@hoge:/var/www/html/scraping# composer require paquettg/php-html-parser

②. phpファイルの作成(test.php)

<?php

require_once __DIR__ . '/vendor/autoload.php';

use PHPHtmlParser\Dom;
use PHPHtmlParser\Options;

$url = 'https://www.code-mogu.com';
$dom = new Dom();
$options = new Options();
$options->setEnforceEncoding('utf8'); // 文字コード
$dom->loadFromUrl($url, $options); // ページ解析

// ブログのタイトルを取得
$title_elements = $dom->find('.entry-card-title');
foreach( $title_elements as $title )
{
    echo $title->text . "\n";
}

※$dom->findの種類(一部)の取得方法を以下にまとめました。

目的ソースコード表示
idを取得したい場合$dom->find(‘id名’)$dom->find(‘id名’)->text
classを取得したい場合$dom->find(‘.class名’)$dom->find(‘id名’, 0)->text
aタグを取得したい場合$dom->find(“a”);$dom->find(‘a’, 0)->text

③. 実行

「php test.php」コマンドで、実行します。

root@hoge:/var/www/html/scraping# php test.php
HYPER(ターミナル)の背景をピカチュウにする
ps&#038;lsofコマンドで実行中のソフトウェアのログファイルを探す
DockerToolBoxで、PHP8.0&#038;Apache&MySQL8.0&#038;Redis6コンテナの作成
JavaScriptのJSONをobjectに変換して、forEachで中身を取得する
JavaScriptで文字列の先頭or末尾の削除
忘れた頃にやってくる、JavaScriptでのよく使う正規表現メモ
DockerToolBoxでAlmaLinuxをいじってみた
外部デバイス(PC、スマホ等)で、DockerToolBoxで作成したコンテナにアクセスする
戻るボタンの履歴を残さずに、ページを遷移する

ブログタイトルの一覧が取得できました。

以上となります。

コメント

タイトルとURLをコピーしました