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

cakePHPでの多対多について

cakePHPで多対多のリレーションを使う機会があったので、その時のメモなどを。 多対多を説明するときには例によってブログの投稿(Item)とタグ(Tag)の関係が一番わかりやすいですね。 Conte …

no image

phpmdによるコードチェック

現在のプロジェクトですが、コードレビューなどをされる環境にはないため、一人で書いていると自然と規約とずれた書き方になっていることもあります。 規約通りに書こう、書こうと思っていてもなかなかその通りに書 …

no image

cakePHP Tips

cakeでの気づいたTipsなど。 知っているといろんな部分で開発が楽になります。 Contents1 作成日と更新日の自動設定2 scaffold3 新規登録と編集画面の作成4 htmlヘルパー5 …

no image

phpenvで入れたphpの起動スクリプトに関して

以前、CentOS7.7にphp5.3を入れるという案件がありましたが、yumなどでは入らないため、phpenvで入れました。 phpenv5.3+php-fpm が、起動スクリプトを配置していないこ …

no image

Laravelのルーティングに関して

Laravelでのルーティングに関して。 惰性で使っていたんですが、これを機にしっかりと整理してみようかと。あくまで頻出パターンのみです。 ディフォルトだとroutes/web.phpが読み込まれます …

アーカイブ