週末は何もすることがなくて暇だったので、よくアクセスする php を使ってブログ クローリング システムを作りました。もちろんブログ パークから始めました (ほら、今でもブログ パークが好きです)。 Web ページのコンテンツを取得し、通常のマッチングを使用して必要なものを取得し、データベースを保存するのは比較的簡単です。もちろん、実際のプロセスではいくつかの問題が発生します。これを行う前にすでに考えており、将来 csdn、51cto、Sina blog などのコンテンツを追加したくなった場合に、簡単に拡張できるようにしたいと考えています。
まず最初に言っておきますが、これは単純なクロールです。次のようなものはクロールできないものもあります。
たとえば、リンク a からクロールを開始します。深さが 1 の場合は、現在のリンクのコンテンツを取得し、指定されたルールに従ってリンク a のコンテンツからリンクを照合します。一致したリンクも深さ 1 で処理を実行します。深さはリンクの深さとレベルです。この方法でのみ、クローラーは「這う」ことができます。
もちろん、リンクを使用して特定のコンテンツをクロールすると、クロールできるものが非常に限られたり、クロールする前に死んでしまう可能性があります(以降のレベルがコンテンツと一致しない)ので、クロール時に複数の開始リンクを設定できますいつでも。もちろん、クロール中に重複リンクが多数発生する可能性があるため、同じコンテンツが繰り返し取得されて冗長性が生じるのを防ぐために、クロールされたリンクにマークを付ける必要があります。この情報をキャッシュするにはいくつかの変数があり、形式は次のとおりですリーリー
リーリー
最後に、すべてのリンクが配列に結合されて返され、プログラムがループして接続内のコンテンツを取得します。上記の取得レベルが 2 と同様に、レベル 0 のリンク コンテンツが取得されており、レベル 1 のリンクを取得するためにのみ使用されます。レベル 1 のリンク コンテンツもすべて取得されており、レベル 1 のリンク コンテンツのみを取得します。リンクをレベル 2 に保存します。実際にコンテンツを取得するときは、上記のコンテンツが再度取得され、上記のハッシュ配列のステータスは使用されません。 。 。 (最適化予定)。
記事の取得にも規則性があり、ブログパークの記事内容を分析すると、基本的には非常に規則的な方法で記事のタイトルと本文を取得できることが分かりました。 リーリー
リーリー
リーリーこの時点では、好きなものを取得できます。表示効果を確認するために、通常の PC で 10 個のプロセスを開き、数時間を費やしました。わずかな最適化後にキャプチャされたコンテンツに、ブログ ガーデンの基本的な CSS コードがここに追加され、その効果とを確認できます。 リーリー この記事の著作権は著者ifforever(luluyrt@163.com)に帰属します。記事を転載した後は、著者と原文リンクをわかりやすい位置に記載する必要があります。記事ページに記載されていない場合は、法的責任を追及する権利が留保されます。
http://www.bkjia.com/PHPjc/948224.html