JavaScriptを有効にしてください

【PHP】PHPを使って簡単にスクレイピングしてみる

 ·  ☕ 1 分で読めます

PHP を使用して簡単にスクレイピングをしてみる

データの解析のため、PHPにスクレイピングをさせてみました。

サンプル

サンプルは Google から png 形式の画像を抜き出しを行っています。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php

use DOMDocument;
use DOMXPath;

// HTML読み込み
$html = file_get_contents('https://www.google.com/');
$dom = new DOMDocument('1.0', 'UTF-8');
$html = mb_convert_encoding($html, "HTML-ENTITIES", 'auto');
@$dom->loadHTML($html);

// 要素を検索
$xpath = new DOMXPath($dom);

// 画像タグのsrcにpngを含むものを検索(DOMNodeListを取得)
$contents = $xpath->query('//img[contains(@src, "png")]');

// 取得したDOMNodeListをforeach
// $value = DOMElement
foreach($contents as $value){
    // HTMLとして表示
    echo 'HTML';
    echo $value->ownerDocument->saveXML($value) . PHP_EOL;

    // HTML内の文字列を出力(HTMLタグは除去)
    echo 'string';
    echo $value->nodeValue . PHP_EOL;
}

取得結果

HTML
"<img alt="Google" height="92" src="/images/branding/googlelogo/1x/googlelogo_white_background_color_272x92dp.png" style="padding:28px 0 14px" width="272" id="hplogo"/>"
String
""

HTMLが取得できました。
今回は画像タグで <img /> のためHTML内には文字列がありません。

解説

DOMDocument でHTMLを読み込み
DOMXPath で要素を検索し DOMNodeList を取得
DOMNodeList に含まれている DOMElement を展開、解析など

これで簡単にスクレイピング出来ますね。
例えば aタグ を検索 → href からリンクを辿って指定のサイトのデータを抜き出す事なども可能です。

参考

共有

こぴぺたん
著者
こぴぺたん
Copy & Paste Engineer