こんにちは!私はルートアドレスから始まり、すべての見つかったリンク(内部リンクのみ)をクロールするWebサイトクローラーを作成します。そこで、私はこの問題に直面しています。 クローラはルートから開始しなければならず、次にウェブページ(ルートページ)を解析してすべてのリンクを取得する必要があります。リンクを取得している間は、同じページを2回クロールしないでください。みんな良いデータ構造があるのですか、SQLや他のインデックスデータ構造を使う必要がありますか?クローラのデータ構造
答えて
私はここに私の答えをチェックアウトしてお勧めします:Designing a web crawlerとHow can I bring google-like recrawling in my application(web or console)
私はあなたが求めている多くの質問に答えました。この問題を解決するために重要なのは、リンクをクロールする必要があるかどうかを効率的に判断するために、クローラはURL-Seen Testを使用することです。 URL-Seen Testは通常、キー(URL)を迅速に解決するマップ構造を使用して実装されます。よく使用されるソリューションは、leveldb、berkeleydb、およびその他のNOSQLソリューションなどの組み込みデータベースです。
おそらく探しているデータ構造はTreeです。
しかし、クローラの場合は、ルートから開始して、訪問したURLの「リスト」を維持することができ、リンクをたどりつぶすたびに、それが遭遇したかどうかをチェックするので、前。遭遇していない場合は、リストに追加してそれに従います。
文字通りリスト(すなわち配列)である必要はありませんが、それはdictionaryまたは検索の高速化に役立つその他のデータ構造になります。
また、SQLデータベースなど、redisのようなKey-Valueストレージのようなものでもかまいません。このようなものを使用すると、標準的な方法(SQL、特別なAPI、その他)で通信できるデータベースシステムによって、すべての索引付けと問合せが行われます。
しかし、これは簡単なことですが、「クロール」で考慮する必要があります。まず、already available crawlerで実行しようとしていることを確認してください。
- 1. 弾性データ構造BIデータ構造
- 2. iOS CFデータ構造とNSデータ構造
- 3. ハッシュテーブル(データ構造)
- 4. データ構造リンクリスト
- 5. Webserviceデータ構造
- 6. データ構造
- 7. データ構造
- 8. データ構造
- 9. チュートリアル - データ構造
- 10. 構造データNoSQL
- 11. Perlデータ構造
- 12. データ構造
- 13. 構造化データ
- 14. データ構造 - キュー
- 15. データ構造 - ポリゴン
- 16. ツリーのデータ構造とデータ
- 17. カテゴリツリーのデータ構造
- 18. アプリケーションルートのデータ構造
- 19. ツリーのデータ構造
- 20. ResultSetのデータ構造
- 21. データ構造のデザインパターン
- 22. データ構造のインデックス
- 23. ジンジャーのデータ構造
- 24. アララリストのデータ構造
- 25. データ構造のリバースエンジニアリング
- 26. ORMのデータ構造
- 27. バイオインフォマティクスのデータ構造
- 28. Segueのデータ構造
- 29. Firebaseのデータ構造
- 30. オブジェクトのデータ構造