• 締切済み

マッチ情報を取得

$yahoo = file_get_contents(http://www.yahoo.co.jp/) で取得したソース情報の中から特定の情報だけを抜き取りたいのですが・・・。 正規表現 preg_match()などを使って欲しい情報があれば、特定の範囲を抜き取りするのかな?と思うのですが・・・。 いまいちやり方がわかっていません。 アドバイスお願いします。

みんなの回答

  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.4

#1です。 > 切り抜く方法がわからないので、教えてください。 かなり ざっくりとでしたが、#1で書いてある通りです。 #2さんも書いてある通り、俺がやったようなゴリ押しでやると、すんごい疲れますよ。 #3さんが書いてあるように「スクレイピング」で検索したほうがスマートなやり方が見つかると思います。 俺がやったサイトは、俺の欲しい情報は ほぼ必ず、同じ行に入っていたので、 その行を strip_tags したり、いろいろ小技を使って、分解しただけです。

すると、全ての回答が全文表示されます。
noname#243182
noname#243182
回答No.3

これは「スクレイピング」と呼ばれる処理です。検索することで、新たな情報が得られることでしょう。

参考URL:
http://pear.php.net/package/XML_HTMLSax3
すると、全ての回答が全文表示されます。
  • yuu_x
  • ベストアンサー率52% (106/202)
回答No.2

> アドバイスお願いします。 マークアップされたデータを単なる文字列として扱うには、相当な労力が必要になります。 <ul> <li title="<li></li>">def <li>ghi</li> </ul> たとえば上のようなツリーから、def を子として持つ li 要素を preg_match でスムーズに取得できるでしょうか。li ができたとして他の要素ではどうでしょう。全パターンを網羅する記述は、あまり考えたくないですね。いわばパーサを自分で組むようなものです。 パーサを自分で組む時間と労力があるのでしたら止めませんが、XML を扱う API として DOM, XPath, XQuery, Selecters API, XSL など多数存在しているのですから、それらを利用しない手はないでしょう。

すると、全ての回答が全文表示されます。
  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.1

んー、正直、自分もyahooのソースの解析なんてした事ありませんし、 具体的に、何の情報を切り取りたいのか分かりませんので、 アバウトなアドバイスしか出来ません。 yahooのソースを 何度も取得してみて、 自分の欲しい情報の入っているブロックが一定の場所であれば、 そこを抜き取ればいいと思いますし、 そうでなければ、特定の共通のキーワードになるようなものを探して、 そこらへんを基点に切り抜くとか、そんな感じになるんじゃないかと思います。

wakaba777
質問者

補足

Yahooは一例のURLです。 切り抜く方法がわからないので、教えてください。

すると、全ての回答が全文表示されます。

関連するQ&A