はじめに
以外とphpでのスクレイピング
について書いてあるブログとか
無かったんでちょっと書いてみる
構文はjQueryとだいたい同じ
phpjquery-onefileのダウンロード
以下のサイトからライブラリを
ダウンロードする
https://code.google.com/archive/p/phpquery/downloads
phpQuery-onefile.phpファイルを
これから作るファイル(sample.php)と
同じディレクトリに保存する
├ sample.php
└ phpQuery-onefile.php
実際に使ってみる
スクレイピング するサイトは
https://ja.wikipedia.org/wiki/攻殻機動隊
でやってみる
まずは見出し"h1"タグを出してみる
<?php
//ライブラリを読み込む
require('phpQuery-onefile.php');
//スクレイピングしたいサイトのURL
$url = "https://ja.wikipedia.org/wiki/攻殻機動隊";
//$urlのデータを全部取ってくる
$html = file_get_contents($url);
$doc = phpQuery::newDocument($html);
echo $doc["h1"];
?>

h1 h2 h3 を取り出す
echo $doc["h1, h2, h3"];
以下に基本的な操作を書いてみた
基本的なところ
html要素の指定
html要素の指定をするとき は以下のようにする。
$doc["要素名"];
$doc["h2"]; $doc["a"];
id属性指定
id属性の指定をしたいときは 以下のようにする。
$doc[".id名"];
例
$doc[".wrap"]; $doc[".content"];
classの指定
$doc["#class名"];
例
$doc["#"];
複数の要素や属性に全てマッチ(AND)
$doc["要素名.id名"];
複数の要素や属性にマッチする(OR)
$doc["要素1,要素2,要素3"]; $doc["属性1,属性2"];
find()
下の階層から指定した要素や属性の データを取り出す
eq()
指定したインデックス番号の要素を 取り出すことができる。
たとえば
echo $doc["h2:eq(0)"];
gt()
指定したインデックス番号より大きい要素を取り出す
lt()
指定したインデックス番号より小さい要素を取り出す
not()
セレクタで指定した要素を除外する。インデックス番号での指定は出来ない。
<参考サイト>
https://www.buildinsider.net/web/bookphplib100/070
https://code.google.com/archive/p/phpquery/ https://handywebdesign.net/2017/09/jquery-for-beginner/