質問

次の文章かで目に付Wgetマニュアル

wget --spider --force-html -i bookmarks.html

This feature needs much more work for Wget to get close to the functionality of real web spiders.

だから、その次の行のコードに関連すると、スパイダーオプションwget.

src/ftp.c
780:      /* If we're in spider mode, don't really retrieve anything.  The
784:      if (opt.spider)
889:  if (!(cmd & (DO_LIST | DO_RETR)) || (opt.spider && !(cmd & DO_LIST)))
1227:      if (!opt.spider)
1239:      if (!opt.spider)
1268:      else if (!opt.spider)
1827:          if (opt.htmlify && !opt.spider)

src/http.c
64:#include "spider.h"
2405:  /* Skip preliminary HEAD request if we're not in spider mode AND
2407:  if (!opt.spider
2428:      if (opt.spider && !got_head)
2456:      /* Default document type is empty.  However, if spider mode is
2570:           * spider mode.  */
2571:          else if (opt.spider)
2661:              if (opt.spider)

src/res.c
543:  int saved_sp_val = opt.spider;
548:  opt.spider       = false;
551:  opt.spider       = saved_sp_val;  

src/spider.c
1:/* Keep track of visited URLs in spider mode.
37:#include "spider.h"
49:spider_cleanup (void)

src/spider.h
1:/* Declarations for spider.c

src/recur.c
52:#include "spider.h"
279:      if (opt.spider)
366:              || opt.spider /* opt.recursive is implicitely true */
370:             (otherwise unneeded because of --spider or rejected by -R) 
375:                   (opt.spider ? "--spider" : 
378:                     (opt.delete_after || opt.spider
440:      if (opt.spider) 

src/options.h
62:  bool spider;           /* Is Wget in spider mode? */

src/init.c
238:  { "spider",           &opt.spider,            cmd_boolean },

src/main.c
56:#include "spider.h"
238:    { "spider", 0, OPT_BOOLEAN, "spider", -1 },
435:       --spider                  don't download anything.\n"),
1045:  if (opt.recursive && opt.spider)

いの違いをコードしない抽象的.私のコード例です。

どのようなwebのモンスターボックスからWgetのスパイダー にコードについて教えてください。

役に立ちましたか?

解決

現実のスパイダーがたくさんの作品

書くスパイダーのためのWWWのか---お気をつけて多くの"ちょっと詳細"など

  • 各スパイダーコンピュータを受信するデータから数千のサーバを並列するために効率的な利用に接続されています。(非同期ソケットi/o)
  • 必要な複数のコンピュータスパイダーと並行するための膨大な量の情報は、WWW(クラスタリング;パーティショニングの仕事)
  • る必要があり丁寧にspideredウェブサイト:
    • を尊重し、robots.txt ファイルです。
    • な取得に多くの情報を迅速に:この過負荷のサーバー
    • なファイルを取得するまでには必要のない(例:isoディスクイメージtgzパッケージソフトウェアのダウンロード...).
  • またクッキーはセッションid:多くのサイトの添付を独自のセッションidをUrlをクライアントセッションを実現.各時間に到着するまでのサイト、新しいセッションid-新しいバーチャルディスカッションページと同じコンテンツ).そのような問題を早期に検索エンジンを動的に無視されます。現代の検索エンジンっていうのはどう対応します。
  • いの検知を無視する面倒なデータ:接続を提供するようで、あっという無限のデータ量や接続が遅すぎる仕上がりです。
  • 以下のリンクをする場合がありますの解析 sitemaps を取得したUrlのページ。
  • く評価することにより、今後の情報が重要ですが頻繁に変化するリフレッシュの頻度はその他のページ。注意:クモの巣のWWWを受け多くのデータ---お支払いる広帯域です。使用する場合がありまHTTPヘッドの要求に推測されるかどうかのページを変更します。
  • ほかを受けたい情報の処理をダウンロードしましょう。Googleを指標とリストそれぞれの単語のページが含まれます。する必要がある独立の貯蔵コンピュータやインフラを接続します。伝統的な関係データベー好きが止まらない、データ量および性能要件の保存-割り出し、全体WWW.

これは大変なんですよ。ただし、ご自分の目標はより緩やかな文の全体WWWスキップして構いませんの部品です。またダウンロードコピーのwikiなど。きのスペックのwget.

注意:いいのか、いまでどのようGoogleの再発明された最もコンピューティング-ホイール(上の基本的なLinuxカーネルを構築いいモンスターボックスの方場合でもカットのコーナーです。

くくりとしてより技術的発言の三つのポイント

並列接続/非同期ソケット通信

き走る複数のスパイダープログラムの並列プロセスやスレッド)。が必要約5000-10000並列接続を活用するためのネットワークに接続します。この額並列プロセス/スレッドの生産もオーバーヘッド。

シーンは非同期入力/出力:工程の約1000並列接続単一のスレッドはソケットは非ブロックモードで使用epollを選択し加工だけで接続を受けたデータです。以降Linux kernel2.4Linuxに優れた支援の規模に対するスケーラビリティ(もご覧いただくことをお勧めの研究メモリマップファイル)を継続的に改善し、後できます。

注意:を用いた非同期i/oをより使用"高速言語:でのやりとりすepoll駆動プロセス1000の接続ドを運営するよりも、1000プロセスで記述C.やれば、でき飽和し、100Mb接続プロセスで記述perlです。

からの回答: 下側のこのアプローチはまれている方にぴったりの実施を行うHTTPの仕様に自分に非同期書(私はよく知らないのは、再利用可能なライブラリはあります。でも容易になることにより簡単なHTTP/1.0プロトコルはHTTP/1.1のプロトコルです。ではないであろう利点をいかしたのHTTP/1.1のように通常のブラウザとにかく、この良い場所を保存するものとする。

編集五年後には: 現在では多くのオープンソースの技術をお手伝いをさせていただいております。私個人的には非同期 http実施node.js ---まだすべての作業項の元を特定した。もちろん、今日もたくさんありますのモジュールを容易にでき、その他の部品が必要なおーです。がありますので注意してくださるの品質の第三者のモジュールを大幅に異なる可能性がある。スニーカーとして親しまれてきたどんどん利用します。 [高齢化情報:] 最近書いたスパイダー用node.js う信頼性のnpmモジュールのHTMLの場合の処理リンクのデータを抽出不十分です。この仕事だ"委託"この処理過程の記述を別の言語です。があるものは変化に迅速に読み込みコメントは、この問題が生じる可能性があり、既に過去のもの...

パーティショニングの作業を複数のサーバー

コンピュータについていけないとspideringの全体WWW.必要なす作業を複数のサーバーとの交流-情報交換します。から割り当てる範囲のドメイン名"をそれぞれのサーバ:保管中のデータベースのインターネットガバナンスへの参照をスパイダー。

エキスUrlから受けたウェブページではバッチ:ソートに基づくドメイン名;重複を除去すがほどこされていて、手作りのスパイダー。このコンピュータには、指標のUrlは既に取得し、取得、残りのUrlに対するものとなります。

ばれるキューのUrlを取得、各スパイダーコンピュータまない性能ボトルネックを解消。がかなり多くのプログラミングの実施。

の基準

に述べた複数の基準(HTTP/1.x、Robots.txtクッキー).お時間が設置されていることもに実施している。だォ例のサイトにおいて、そのサイトをご存知だくに誤りが忘れの部品の標準的な関連のあるサンプルの原因となトラブルのためのサイトを利用したアプリケーションです。

この痛みへのHTTP/1.1規格。ものすべての手を加えるというのって、その素晴らしいホテルやして使用します。

他のヒント

私はコメントの原作者が参照して正確にわからないが、私は、少なくともあなたが示したもので、実行のみ(のシングルスレッドを使用するように見えるので、wgetのは、蜘蛛のように低速であることを推測することができます)。

など heritrix のように「本物の」スパイダーは彼らのクロール速度を最適化するために、並列処理やトリックの多くを使用し、同時にウェブサイトに素敵でありながら、彼らはクロールされています。これは、典型的には、(程度)毎秒1の速度で一つのサイトにヒットを制限し、同時に複数のウェブサイトをクロール意味する。

ここでもこれはちょうど私が一般的にクモの知っているものに基づいて推測し、あなたがここに投稿されたすべてのです。

残念ながら、多くのよりも、"リアル"ウェブクモの閉鎖ソースは、実際に閉バイナリー.しかし、いくつかの基礎的な技術wgetが欠

  • 平行;まいに追いつけないことがあるため、全体のデザイナーバックパックの取得中に複数のページでの時間
  • 優先順位付け;一部のページより重要になるスパイダー、他
  • 率を制限;き禁止されればよく引き下ページのとき
  • 省以外に地元のファイルシステム;Webのもとへの単一のディレクトリツリー
  • ページの再点検を定期的に再起動なしでの全体プロセス実際、現実のスパイダーしてください再検査を述とは大きく異なる可能性があ'ページの更新を頻繁について興味のページです。

また、その他の入力で使用できるなどsitemapsします。ポイントは、wgetな設計スパイダー全体のwebとなったもの姿を捉えることができます小さなコード例では、この問題の全体全体で技術の使用により単一の小型誤りがあったのです。

てるつもりはありません詳しい方のスパイダーのインターネットだと思いるwgetコメントに関するspidering一つのウェブサイトでは未だに深刻な挑戦です。

  • としてスパイダーすることが必要の場合は停止い再帰を這だからといって、URL変更のようなdate=1/1/1900に1/2/1900い
  • でも大きな挑戦を行ってURLを書き直してくれてありがとうございますこんなでどのようにgoogleやその他の取扱にあります。すっかり大きな課題に十分な耐震性の低い住宅では、倒壊したい方にはうってつけです。います。とどのように取り組むべきか自動的に認識するのURL書き換えがランダムパラメータとランダム変化のコンテンツ?
  • に必要な構文解析ではFlash/Javascript少なくとも一部レベル
  • も検討しなければならなかっHTTP問題のように ベース タグです。いても解析では、HTMLのは容易ではない、多くのサイトはXHTMLやブラウザで柔軟性の構文です。

とにかくこれをやるwgetで入手できるかもしれませんが、いくhttrackの課題を理解することとする。

プレイしていただければと思い過ごせばよいかを教えてくれるコード例ですが大きな課題リスク以外のリスクにつき意蜘蛛は約5000組織委員会 無3rdパーティーのライブラリ.

+一部は既に説明@yaakov-belchってるつもりはありません型です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top