説明
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&lsofコマンドで実行中のソフトウェアのログファイルを探す DockerToolBoxで、PHP8.0&Apache&MySQL8.0&Redis6コンテナの作成 JavaScriptのJSONをobjectに変換して、forEachで中身を取得する JavaScriptで文字列の先頭or末尾の削除 忘れた頃にやってくる、JavaScriptでのよく使う正規表現メモ DockerToolBoxでAlmaLinuxをいじってみた 外部デバイス(PC、スマホ等)で、DockerToolBoxで作成したコンテナにアクセスする 戻るボタンの履歴を残さずに、ページを遷移する
ブログタイトルの一覧が取得できました。
以上となります。
コメント