3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

HTMLファイルをPHPでスクレイピング

Last updated at Posted at 2020-04-15

前提

  • 抽出したい要素を一意に特定できるよう考慮しなければならない
  • 複数ページのある要素を抽出したいという場合には、その要素が特定の部分にしか記載されていないのであればそのままスクレイピングをしても問題なし
  • もし複数の箇所に記載されているのであれば、まずは記載箇所をパターン化してからスクレイピングする必要がある

下準備

$html = 'https://xxx.com/index.html';
$html = file_get_contents($store_html);
$dom = new DOMDocument();
@$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
unset($dom);
  • @」でエラーを抑制しているのは HTML の記述に誤りがあった場合でもエラーを表示しないようにするため

値の取得の例

$tar = $xpath->query('//body//p[contains(.,"タイトル")]/following-sibling::div[@class="main"]/span')->item(0)->nodeValue;
  • 「//」で途中のパスを省略することができる。
  • 上記はbodyタグの中から、文言に"タイトル"を含むpタグの隣の、class名がmainのdivタグのなかの、spanタグの中のテキストを取得している。
  • query() は一致した全ての要素をリストの形で返すため item(0) として最初の要素を指定する必要がある。

スクレイピングしたい対象によって取得方法が異なるためその都度調べるしかない

参考リンク

https://php-archive.net/php/dom-scraping/
http://cloudcafe.tech/?p=2456

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?