前回のphpQueryでスクレイピング①:情報を取得して表示してみるでは
スクレイピングで取得したデータを全て表示しました。
今回は必要な要素だけを取得して表示する方法について書きます。
前回のおさらいとしてスクレイピングして全て表示するコードを載せます。
※以下のコードで動かすにはphpQuery-onefile.phpのダウンロードが必要です
<?php
require "phpQuery-onefile.php"; // スクレイピングのためのライブラリを読み込み
$html=file_get_contents("https://jmty.jp/"); // 外部ページを取得
echo $html; // 表示
?>
前回はこれで取ってきたページをそのまま全て表示していましたが、今回はここから記述を加えて必要な情報だけを取得していきます。
①DOMをphpで取得できる形に整形する
<?php
require 'phpQuery-onefile.php'; // スクレイピングのためのライブラリを読み込み
$html = file_get_contents('https://jmty.jp/'); // 外部ページを取得
$htmldoc= phpQuery::newDocument($html); // phpQueryで扱える形式に変換
?>
②ClassやIdで欲しい要素を取得する
$links = $htmldoc->find("○○"); // セレクタ指定で要素取得(○○=Class名やId名)
○○には取得したい要素のClass名やId名を要素の検証で調べて入れます.
下記のようにp-article-simple-item-titleというクラス名を持つ要素を取得したい場合は上の○○に.p-article-simple-item-titleと入れます.

③データを表示する
先ほど取得した要素を表示して、ちゃんと取得できたか確認してみましょう。
echo $links;
無事取得できたようです。

以上、phpQueryのスクレイピングでデータを取得して必要な要素だけを表示する方法でした。

ソースコード全文
最後にコードを全文載せておきます。
<?php
require 'phpQuery-onefile.php'; // スクレイピングのためのライブラリを読み込み
$html = file_get_contents('https://jmty.jp/');// 外部ページを取得
$htmldoc= phpQuery::newDocument($html); // phpQueryで扱える形式に変換
$links = $htmldoc->find("○○"); // セレクタ指定で要素取得(○○=Class名やId名)
echo $links; // 表示
?>
こちらにphpQueryの操作一覧を載せています。
phpQueryのDOM操作一覧
コメント