phpQueryを初めて扱ったときにDOM操作がすごく大変だったので、
よく使う操作一覧を残します。
まず、外部ページを取得してPHPQueryで扱える形に整形する部分を載せておきます。
<?php
require "phpQuery-onefile.php"; // スクレイピングのためのライブラリを読み込み
$html = file_get_contents("https://jmty.jp/"); // 外部ページを取得
$htmldoc = phpQuery::newDocument($html); // phpQueryで扱える形式に変換
?>
phpQueryを使用するにはphpQuery.phpファイルをダウンロードする必要があります。
https://code.google.com/archive/p/phpquery/downloads
※下記の記事でphpQueryの準備や具体的な使い方を記しているので、phpQueryを初めて使う方はご参考ください。
phpQueryでスクレイピングを行う
クラス名で取得
※クラス名の前にドットを忘れないこと
$elements=$htmldoc->find(".クラス名");
id名で取得
#を忘れないこと
$element=$htmldoc->find("#id名");
タグ名で取得
$elements=$htmldoc->find("タグ名");
aタグのhrefを取得
$elements=$htmldoc->find("aタグのクラス名");
for($i=0; $i<count($elements); $i++){
$link=$htmldoc->find("aタグのクラス名:eq($i)")->attr("href");
echo $link;
}
imgタグのsrcを取得
$elements=$htmldoc->find("imgタグのクラス名");
for($i=0; $i<count($elements); i++){
$imglink=htmldoc->find("imgのクラス名:eq($i)")->attr("src");
echo $imglink;
}
取得したい要素のクラス名やID名がない時
$elements=$htmldoc->find("取得する要素の親のクラス名 or ID名");
for($i=0; $i<count($elements); $i++){
$htmldoc->find("取得する要素の親のクラスorID:eq($i)")->find("取得要素のタグ名");
echo $element;
}
コメント