phpメモ②

phpでWebスクレイピングするときは、phpQueryを使えば簡単。
スクレイピング参考ページ:https://tanakashi.qrunch.io/entries/WU4wrUwHv6jA5rii

導入の参考ページ:https://naokixtechnology.net/php/984

phpQueryをダウンロードして読み込む。※https://code.google.com/archive/p/phpquery/downloads

DOMを取得していじる。
※DOMとは:https://developer.mozilla.org/ja/docs/Web/API/Document_Object_Model/Introduction

 phpQueryの使い方:https://qiita.com/dia/items/3cf963fa89b08b87e8ef

下記は、1つ目のテーブルの各行※tr(table:eq(0) tr)を
ループで取得(foreach)して、trの各値※tdをテキスト化、連結している。

その他:文字チェック:https://qiita.com/kazu56/items/2c72d187438de07c2503 

 

<?php
require_once('lib/phpQuery-onefile.php');
$html = file_get_contents("http://www.jses.or.jp/about/certification.html");
$dom=phpQuery::newDocument($html);
echo "名前" . "," . "病院名" . ",". "場所" . ",". "専門領域" ."<br>";
foreach($dom["table:eq(0) tr"] as $row)
{
//各要素取得
if (strpos(pq($row)->find("td:eq(0)")->text(),'<')!== false) {
continue;
}
$name = pq($row)->find("td:eq(0)")->text();
$clinique = pq($row)->find("td:eq(1)")->text();
$from =pq($row)->find("td:eq(2)")->text();
$organ =pq($row)->find("td:eq(4)")->text();

//表示
echo $name . "," . $clinique . ",". $from . ",". $organ ."<br>";

}
?>

 

参考ページ:

https://qiita.com/zaburo/items/465ca691aebad2b5691e

 

https://kuhaku.org/posts/2444

 

https://blog.hiroyuki90.com/articles/php-scraping/#HTML