skillup

技術ブログ

PHP

PHPでのスクレイピング

投稿日:2016年3月2日 更新日:

本日はPHPスクレイピングについて。

スクレイピング自体はRubyJavaとやってきました。

PHPに関しては昔、正規表現でごりごりやってましたね。これを使えば何でもできるんで一番早いです。

が・・保守性、可読性ともによくはないので、今回はHTMLパーサーを使った方法をメモリます。

PHPのスクレイピングはRubyにも負けず劣らずたくさんありますが、一番簡単なのが下記の方法でしょう。

上記のように書き,「xpathでの要素の指定」のところにxpathの記法で要素を指定してあげればOKです。

単純にidとかで指定する場合はxpath(“//div[@id=”sample_id”]’)とかで簡単なんですが、classの場合には複数のクラスがある場合が普通です。

例えば

といったクラスがあったときに

とやっても取得できません。

のようにかかないとダメなのです。

あとは$dataListをループで回し、取得してあげればOKです。配列にしてしまうのが一番簡単でしょう。

参考リンク

PHPでHTMLをパースして解析する簡単な方法

[PHP]DOM, XPathを使ったスクレイピング(HTMLのタグ内容取得)

PHPネイティブのDOMによるスクレイピング入門

-PHP
-

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

CakePHP3でのコレクションに関して

プログラミングにおいて基礎となるのは配列、ハッシュの処理とオブジェクト指向の使いこなしです。 配列、ハッシュの処理に関しては自前でメソッドを書いてもよいですが、バグの温床になりやすいので、ライブラリを …

no image

cakePHP CSVのインポートとエクスポート

本日もcakeネタです。 CSVインポート&エクスポート CSVのインポートとエクスポートについて。 かなりいろいろなプラグインがあるようですが、一番楽なのはbehaviorを使う手法のようです。 a …

no image

cakeでのトランザクション、コミット、ロールバック

cakePHP(2.X系)でのトランザクション、コミット、ロールバックについて。 cakePHPでトランザクションを書ける場合、Model内に [crayon-6654b30a0beb18743052 …

no image

ログライブラリについて

以前にも少し書いたログ設計に関する記事。 ログの設計指針について 上記でログの設計について書きましたが、今回はログのライブラリに関して欲しいと思う機能を。 Contents1 レベル分け2 チャネルわ …

no image

Cakeの共通処理

CakePHPだけに限りませんが、フレームワークの場合、オブジェクト指向の特徴を理解して、全ページに共通な処理などは個々のコントローラーに書くのではなく、もっと抽象度の高いクラスに書いたほうが保守性が …

アーカイブ