- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPでHTMLパーサをつくりたい(といっても簡略なもの))
PHPでHTMLパーサをつくりたい(といっても簡略なもの)
このQ&Aのポイント
- 質問内容は、PHPを使用して外部のサーバの数万のURLを解析し、ぱんくず(breadcrumb)を抽出してCSVファイルに変換する方法についてです。
- 質問者は、php4を使用しており、数万のURLを一括DLするか、phpのfoepn関数を使用してURLにアクセスして解析するかを迷っています。
- 質問者は、一括DLしてもIPで拒否されるリスクがないことを確認しており、効率と速度の観点から、phpのfoepnを使用する方法が適しているかどうか知りたいと思っています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
やっつけ仕事といえば正規表現です。 ぱんくずの形式が固定で、ぱんくず階層が一定数以下(たとえば10階層以下)とかだったら、ゴリゴリ正規表現を書くだけだと思います。どの辺で悩んでいるんでしょうか? wgetを使うかどうかは、どちらでもよいと思いますが、本当に単純にGETしてくるだけだったら、あえてwgetを使う理由は見当たりません。 速度的にはwgetの方が少々遅いんではないかと思います。データを一度ファイルに落とすことになりますし、PHPからwgetを起動するオーバーヘッドもあります。また、wgetはfopenなどよりも複雑なことをするプログラムですので、それも速度に影響するかもしれません。 なので、もし私がやるならば、wgetは使いません。ちゃんとやるならばfsockopen()でタイムアウトや各種のエラーハンドリングなどを実装しますし、そうでなければfile()とかでテキトーに書いてしまいます。
お礼
ご回答ありがとうございます。 なお、質問にて申し上げることを忘れておりました。 申し訳ございません。 追記: ●念のため(ぱんくず解析以外にもなにかしらHTMLに対して作業を行う可能性があるため)に、すべていったんローカルにhtmlファイルたちを落として、それから処理しようと考えています。 >やっつけ仕事といえば正規表現です。 自分、正規表現があまり得意ではない・・・というよりも、できるんですが、失敗(それも失敗とは気付かない)の可能性があるものでして。 >wgetはfopenなどよりも複雑なことをするプログラムですので、それも速度に影響するかもしれません。 確かにそのとおりですね。「man wget」でみるといろいろ書いてありますね・・・。 >ちゃんとやるならばfsockopen()でタイムアウトや各種のエラーハンドリングなどを実装しますし、そうでなければfile()とかでテキトーに書いてしまいます。 なるほどですね。検討してみます。 ありがとうございました。