スクレイピング&正規表現でゴリゴリ

HTMLの解析。特定のタグを取り出すために使われる手法が正規表現。
PHPなので、「preg_match」とかを使う。

PHPには正規表現を扱う関数として、「ereg_」系と「preg_」系が用意されてて、校舎はperl互換。それだけでなく、後者のほうが機能的に満足いく結果が得られる場合が多い(というか、使いやすい)。

で、こんなやつ。

     $pattern = '|<a href=["\']([^"\']+)["\'][^>]*>([^<]+)<|i'; 
     preg_match_all( $pattern,      $contents, $out,     PREG_SET_ORDER);

もちろん、aタグをひっかける。「()」で囲まれている部分はあとで参照できる。URLと、アンカーが拾えるというわけだ。

しかし、これではひっかからないものもある。「href」属性の前に「class」属性だとか「id」属性が来たら、もうこれにはひっかからない。

で、別の方法を考えなくてならなくなるわけだ。まあ、そんな感じでいろいろあるわけです。

「スクレイピング&正規表現でゴリゴリ」への1件のフィードバック

  1. 別のアルゴリズムを採用してみた。

    たぶん、前よりも拾ってこれる項目は増えているはず。
    というか、取り残しはないはず。

コメントを残す

メールアドレスが公開されることはありません。