どのように入手してコンテンツ(データ)から別のサイトをPHP
2008年3月28日7コメント
別のサイトの内容を取るのは、これを行うにタスクていた。 と思ったのは簡単だろうが、私とまったく同じものが出て計画…幸いなことに、成功した! 学んで、あなたは、あまりにも、他のウェブサイトから情報を集め、 インターネット上のです。
ミッション: サイトの内容を入手して
今日、職場で、タスクは、 "プル"いくつかのデータを1つのサイトを"グラフト"は、 ウェブサイトからの抜粋だわ、私は助けを開発する。 最終更新時に私はすぐに覚えて一度にタスクとしては同じことをする友人に送るときに(と、当時、彼は私の説明は、多かれ少なかれ、それは参考) 。 非常に簡単だろうなって思って、タスクを達成する、しかし、時間、 "訓戒"それはいいとして私はgevã … rsrs
解決策:ネイティブの機能を、 PHPと正規表現
私の研究に費やされるウェブ上での参考資料を探して必死になって、正規表現 (これは、後に分かりますが、 1つの柱を実現するためにはいくつかのコンテンツを別のサイトから入手) 。 lookingここでは、チャットを探して、そこにしようとしgevã圧延をよりよく理解するような正規表現です。 その前に、使用しているリトル" gambiarra " 、私の目標を達成するために管理します。
まず最初にこれを行うには、全体の内容をピックアップするページを選択し"操作"です。 そのためには使用して、たとえば、この関数のfile_get_contents ( ) 。 サイトのコンテンツを再生する変数は、うまくいくだろう( 'すべてを一例と同じサイトに移動することは) :
1 | $のURL = とfile ( ' http://www.bcb.gov.br/ ' ) ; |
準備は、今すぐには、変数$ URLを、 文字列は、すべてのホームページの内容を、 bcbです。
正規表現
ここでは簡単なので、キャッチしている困難な部分は、ページのことだけをしたかった…このためには、 正規表現を使用しなければなりません!
何をお持ちでない場合は、正規表現、ヴァイ語を簡単に(と不完全な… ) の説明は何です正規表現は、 Wikipediaから:
正規表現の情報技術、標準を定義するかを求めるの代わりに使用する単語またはグループの単語です。 それは必要があります。を作るの特定の部分のテキストを検索します。
正規表現が可能に断片的な単語やグループを識別する単語にマッチ( "マッチ" )を、特定の規格基準( "パターン" ) 、これは"定期的に"です。
は、 PHPにはいくつかの機能をネイティブに動作する正規表現です。 わずか1つのことを知って、各サービスとmeneira正しい使用します。
ええと、問題の解決に向け、次のステップは、パターンを識別するためのサイトを抽出するにしたいです。 の場合に、必要に応じて、テーブルにいくつかの外国為替レート(は右側に、このサイトは、 bcb ) 。 また、ソースコード、私は、その情報は、テーブル(意味的に正しいアプローチ! ) ;また、このテーブルは周囲の間にHTMLコメント" < ! --ホーム指標-- >"と" < ! - - f i mi nd icadores- -> " 。 これは良いこと、というので、容易に"パターンを識別する。 "
説明より:は、パターン求めの場合には、すべてのHTMLコメントの間には" < ! --ホーム指標-- >"と" < ! - - f i mi nd icadores-->です。 " 全体のテーブルがある、私はぴねす! :-)
これを行うにするためには何が必要PHPの関数を使用するには(場合には、選択されたpreg_match_all ( ) )を検索するには正規表現内の変数$ URLを、これには、 サイト全体の最初のページには、表のとおりです。
正規表現vááárias多くの時間をテストした後、私の結論にたどり着きましたがmutretaを小さくします。 しかし、第一に、どのようにコードを表示させては、今までです。
1 2 | $のURL = とfile ( ' http://www.bcb.gov.br/ ' ) ; preg_match_all ( ' /鉱石-> (. )<!--/s 'を、 $ U RLを、 $コンテンツ) ; |
説明:この関数の最初の引数は、標準のが私を求める、 2番目は、ここで私はしようと、第三に、警備隊の配列のすべての単語の出現を求められている。 ほとんどの場合、良いことがありますが、ここでは、しかし、私には問題は、まだいくつかの他の行のコードを必要とする。
現在のところ、変数$コンテンツが含まれを配列にして出現が見つかりました。 を使用してしますprint_r ( ) 、どの位置に発見さは、まさに私が探して: $コンテンツ[ 0 ] [ 0 ] 。
メーカーは" mutreta "
を作るこの" mutreta "は、ゲームの内容を、表の位置を別の変数(を容易に取扱) 。
1 2 3 | $のURL = とfile ( ' http://www.bcb.gov.br/ ' ) ; preg_match_all ( ' /鉱石-> (. )<!--/s 'を、 $ U RLを、 $コンテンツ) ; $ディスプレイ = $コンテンツ [ 0 ] [ 0 ] ; |
私は何があったの断片を返される(つまり、テーブルに、外国為替レート)に私がそのサイトを表示するにしたくない(としていくつかのリンク) 。 だからそれらを撤回することを決めたの機能をstr_replace ( )の、どの部分を文字列に置き換えています。 することが可能、を引数として、パスの配列です。 ので、今すぐと近づいての最後に、このコードは、この:
1 2 3 4 5 | $のURL = とfile ( ' http://www.bcb.gov.br/ ' ) ; preg_match_all ( ' /鉱石-> (. )<!--/s 'を、 $ U RLを、 $コンテンツ) ; $ディスプレイ = $コンテンツ [ 0 ] [ 0 ] ; 撤回$ = アレイ ( '大半の通貨' 、 ' copom 分' 、 '他の' 、 '鉱石->','<!--'); $ディスプレイ = str_replace ( $ 撤回、 '' 、 $ ディスプレイ) ; |
言い換えれば、ここでいくつかの項目が表示さを撤回するの配列 $ $ディスプレイに置き換えられます" " (何も… ) 。 に注意して最後の2つの配列の要素は、 "汚染"不必要ではありませんが、私の怠惰のために正規表現を作るより精巧になりました。 :-)
最後に…
した後で、次のような画面が表示されるマンダル語" sobrou "の内容を削減するのサイトのbcbのホームページです。
1 2 3 4 5 6 | $のURL = とfile ( ' http://www.bcb.gov.br/ ' ) ; preg_match_all ( ' /鉱石-> (. )<!--/s 'を、 $ U RLを、 $コンテンツ) ; $ディスプレイ = $コンテンツ [ 0 ] [ 0 " < /スパン> ; 撤回$ = アレイ ( '大半の通貨' 、 ' copom 分' 、 '他の' 、 '鉱石->','<!--') $ディスプレイ = str_replace ( $ 撤回、 '' 、 $ ディスプレイ) ; エコー $ディスプレイ; |
許可されない場合は、サーバーとの機能file_get_contents ( )のですか?
には多くのサーバーでは、様々な理由(主に"安全保障" ) 、許可されていない関数を使用してfile_get_contents ( )のです。 これらの場合、変数を配置することができる任意の外部のページに、次のコードを使用して(需要の説明をした後に、 公式ハンドブックのPHP ) :
1 2 3 4 5 6 7 | $あなた = curl_init ( ) ; $タイムアウト = 0 ; curl_setopt ( $ あなた、 curlopt_url 、 ' o_site_que_voce_quer ' ) ; curl_setopt ( $ あなた、 curlopt_returntransfer 、 1 ) ; curl_setopt ( $ あなた、 curlopt_connecttimeout 、 $ タイムアウト) ; $コンテンツ = curl_exec ( $ あなたの) ; curl_close ( $あなたの) ; |
次に、このページの内容を" o_site_que_voce_quer "は、変数$コンテンツです。
結論
その後、スタッフは、その内容の一部を撤回するには、 ウェブサイト ( phpを使用し) 、の手順を実行する:
- 学ぶのは、どのページのコンテンツには正確な;
- サイトのコンテンツを再生するに変数;
- したい単語を抽出する正規表現を使用する;
- 必要に応じて、カットの他のいくつかの点の結果を救急治療室;
- 表示画面は、最終的な結果です。
猫の大飛躍を扱うかどうかこの場合は、正規表現;こと、私通知、しかしを学ぶこと! とやるとくらい! 読んで参考文献の最後には、次の資料を見つけることについては、インターネット上の他の素材です。
もう一つ重要な点は:ことに注意してくださいとして、あなたが撮影場所を変更するサイトの内容をその構造は、最も高いのが必要に正規表現を変更することもできます。
一つのことに注意:もし、 ウェブ開発者は、正規表現を使用しない、まだ、その時間にすることができますのでご安心くださいヴァイ来る!
参考文献国立
これは、ガイドのマリノアウレリウスjargas 、優れた正規表現を学ぶと、倍の引き締めに相談ですか?
記事の生活では、 Linux 、 マルセロサントスアラウジョは、正規表現の紹介をします。














素晴らしい、 sr.tárcio ! さあ、レモンとは、レモネードです。 この記事は、非常に良い、おめでとう!
いただきありがとうございます、お客様のgevã !
50 %は、お客様のクレジット! d =
abraços !
覚えているのXHTMLを使用するの構造は、次のページには不要、以降のデータを抽出することが正確に同じ方法で、これは、 XMLからデータを抽出しています。
@ラファエルエドゥアルドカスナー
こんにちは、ラファエル、いいですか?
非常に興味深いことに言及! それが学ぶこともできるように設定する例ですか?
abraços !
おかげで手!
whoしたい人々を徹底的に調べる、ヴァイある大きなリンクをer :
http://guia-er.sourceforge.net/
それを私は非常に便利!
@ juliano
このサイトをいただきありがとうございますアウレリウス思い出させる。 良いもこの本を購入は、リファレンス彼は、しかし、オンラインでの協議、これは非常に良い!
訪問いただきありがとうございます!
トラックバックを2008年8月26日