人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

以下のhtmlのコード部分だけをphpを使って、スクレイピングしたいです。

具体的には下のo行目からz+p行目までをスクレイピングしたいです。

正規表現を記述してみたのですが、phpでうまく動作しません。
どのように正規表現を、変更すればいいでしょうか?


---------------------------------------------------------
o、p、x、y、z、は任意の2以上の自然数とします。
「hoge」は任意の文字列とします。

・・・・・・・・
o行目:<span class="i">「hoge」

・・・・・・・・

x行目:<span class="「hoge」">「hoge」</span>

・・・・・・・・

y行目:<span style="「hoge」">「hoge」</span><span class="「hoge」">「hoge」</span>

・・・・・・・・

z行目:<span class="「hoge」">「hoge」
・・・・・・・・
z+1行目:</span>
・・・・・・・・

z+p行目:「hoge」</span>
・・・・・・・・
--------------------------------------------------------
自分が記述した正規表現は以下の通りです。

'{<span class="i">(.*)((<span(.*)</span>)*)(.*)</span>}s'


わかりにくいものになってすいません。
回答をお願いします。

●質問者: tsukasa343
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● rouge_2008

<span class="i">内のspanの個数が決まっているのでしたら、次のようにするとマッチする正規表現になります。

#<span class="i">(.*?</span>){5}#s


<span class="i">の中の要素数が定まっていない場合、別の条件が必要になりますが、質問で提示している部分の直後に何か判定に使えるような記述はないのでしょうか?
あるいは、<span class="i">の中に、他に何か決まった要素はないでしょうか?
何もない場合は正規表現は適さないので、きちんと構造化されたHTMLなのでしたら、XPathを利用した方がいいと思います。
XPathを利用するライブラリもいくつかあるようです。

・PHPでのスクレイピングに役立つライブラリ色々
http://phpspot.org/blog/archives/2008/03/php_94.html

リンク先情報元(PHPでのスクレイピングに役立つライブラリ - (DxD)∞)より

HTMLScraping
HTMLをXML化してDOMやXPathで操作できるクラス。主にHTTP_Request+HTMLParser(XML_HTMLSax3を含む)/Tidy+Cache_Liteという構成で、スクレイピングに必要なものが一通り揃っている。ライセンスはLGPL他。
WebScraper
シンプルな汎用スクレイピングクラス。HTTP_Client+HTMLParser(XML_HTMLSax3を含む)という構成で、XPathで要素を抽出できる。自分好みにカスタマイズするのに最適。ライセンスは修正BSDライセンス他。


tsukasa343さんのコメント
回答いただきありがとうございます。 ><span class="i">内のspanの個数が決まっているのでしたら、・・・ この部分ですが、残念ながらspanの個数を決まっていません。 ><span class="i">の中の要素数が定まっていない場合、別の条件が必要になりますが、質 >問で提示している部分の直後に何か判定に使えるような記述はないのでしょうか? >あるいは、<span class="i">の中に、他に何か決まった要素はないでしょうか? こういった特定の記述はなく困っていました。 ご提示いただいたURLを参考にがんばってみます。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ