分散クロール
タスクをクロールニーズに応じて様々な方法で達成クロール配布することができます。ほとんどの場合、拡張ネットワーク通信層が十分で、プロキシ・スイッチとColly剤の使用を容易にこれを達成することができ
演技のコンバータ
HTTPリクエストを複数のエージェント間で分配される場合、プロキシスイッチの使用は、集束クロール残ります。Collyその代理スイッチのSetProxyFunc()部材を介してサポートしています。任意のカスタム関数は、(* url.URL、エラー)(* http.Request)FUNCを介して使用できます。
注意:SSHサーバーは-DフラグとSOCKS5のプロキシとして使用することができます。
Collyは、各要求プロキシリストに応じて回転することができる内蔵プロキシスイッチを有しています。
使用
パッケージメイン インポート( "github.com/gocolly/colly" "" github.com/gocolly/colly/proxy ) 主FUNC(){ C:= colly.NewCollector() P場合、ERR = proxy.RoundRobinProxySwitcher( 「SOCKS5 ://127.0.0.1:1337" 、 "SOCKS5://127.0.0.1:1338"、 "http://127.0.0.1:8080" )。ERR ==ゼロ{ c.SetProxyFunc(P) } // ... }
カスタムプロキシスイッチを実装します。
VARプロキシ[] * url.URL = [] * url.URL { &url.URL {ホスト: "127.0.0.1:8080"}、 &url.URL {ホスト: "127.0.0.1:8081"}、 } randomProxySwitcher FUNC( _ * http.Request)(* url.URL、エラー){ [)random.Intn(LEN(プロキシプロキシを返す)]、ゼロ } // ... c.SetProxyFunc(randomProxySwitcher)
分散クロール
管理し、スクレーパーとは独立して分散するために、あなたができる最善のことは、サーバーにパッケージをスクレーパーすることです。サーバーは、HTTP、TCPサーバやGoogle App Engineのように、サービスのいずれかのタイプにすることができます。カスタムストレージと集中アクセスURL永続的なCookie処理を使用してください。
注意:Collyが組み込まれているGoogle App Engineのためのサポート。あなたはApp Engineの環境で標準Collyを使用する場合は、Collector.Appengine(* http.Request)を呼び出すことを忘れないでください。
ここでは、見つけることができるの例を実現します。
分散ストレージ
デフォルトでは、URLを訪問し、クッキーのデータがメモリに格納されます。短期的な仕事をつかむために便利ですが、ジョブの処理、大規模または長時間実行をクロールするとき、それは重大な制限することができます。
Collyのデフォルトのメモリ記憶装置は、任意のストレージバックエンドの実装Colly /ストレージに置き換えることができます。ストレージ・インターフェース。表示既存のストレージを。