2010-12-05 14 views
9

ショッピング比較エンジンを構築しており、毎日のデータ収集プロセスを実行するためにクロールエンジンを構築する必要があります。C#の優れたオープンソースWebクロールフレームワーク

私はC#でクローラを構築することに決めました。私はHttpWebRequest/HttpWebResponseクラスについて多くの悪い経験をしており、大きなクロールではバグが多く、不安定であることが知られています。だから、私はそれらの上に構築しないことに決めました。フレームワーク4.0でも、バグがあります。

私は自分の個人的な経験によって話します。

非常に安定した非常に堅牢なライブラリであるjavaやnutch、apacheなどのオープンソースのクロールフレームワークについて知っていれば、クローラをコーディングしているエキスパートの意見が欲しいです。

C#に既に既存のクロールフレームワークがある場合は、その上にアプリケーションを構築します。

コードプロジェクトからこのソリューションを拡張して拡張する予定がない場合は、

http://www.codeproject.com/KB/IP/Crawler.aspx

いずれかが私に、より良いパスを提案することができる場合、私は本当に感謝しなければなりません。

EDIT:非常に複雑なJavaスクリプトを使用してクロールする必要があるサイトによっては、JavaScriptでレンダリングされたページをクロールできるようにする必要があるため、ウェブクローラが複雑になりました。誰かがJavaScriptをレンダリングできるC#でライブラリを使用している場合は、共有してください。私は好きではないwatinを使いました。またセレンについても知っています。これら以外のことが分かっている場合は、私とコミュニティと共有してください。

+9

HttpWebRequestはどのようにバグですか? – SLaks

+0

'SELECT'は壊れていません。 – neo2862

+1

http://htmlagilitypack.codeplex.com/ –

答えて

3

PhantomJS + HtmlAgilityPack

私はこのトピックは少し古いですが、私はPhantomJSを抜いて最高の結果を持っていた知っています。それにはNuGetパッケージがあり、それをHtmlAgilityPackと組み合わせることで、かなり好きなように取り出して&スクレイピングツールキットを作ることができます。

この例では、PhantomJSの組み込み解析機能を使用しています。これは非常に古いバージョンのライブラリで動作しました。それはまだ活発な開発の下にあるように思われるので、さらに多くの機能が追加されたと仮定することは安全でしょう。

void Test() 
{ 
    var linkText = @"Help Spread DuckDuckGo!"; 
    Console.WriteLine(GetHyperlinkUrl("duckduckgo.com", linkText)); 
    // as of right now, this would print ‘https://duckduckgo.com/spread’ 
} 

/// <summary> 
/// Loads pageUrl, finds a hyperlink containing searchLinkText, returns 
/// its URL if found, otherwise an empty string. 
/// </summary> 
public string GetHyperlinkUrl(string pageUrl, string searchLinkText) 
{ 
    using (IWebDriver phantom = new PhantomJSDriver()) 
    { 
     phantom.Navigate.GoToUrl(pageUrl); 
     var link = phantom.FindElement(By.PartialLinkText(searchLinkText)); 
     if(link != null) 
      return link.GetAttribute("href"); 
    } 
    return string.Empty; 
} 
2

私は何かを知っているNCrawler、codeplexで利用可能です。個人的に使用されていませんが、同僚はそれが問題なく動作すると言います。

+0

NCrawlerは今すぐテストして良い解決策に見えます。 –

0

Ncrawlerは、それは非常によさそうだJavascript.Butサポートし、あなたが

2

arachnode.netはJavaScriptを処理できるJavaScriptの実行を必要としない場合のソリューションを使用して簡単にしていません。 http://code.google.com/p/abot/から

3

ABOT C#のWebクローラ

説明は言う: ABOTはスピードと柔軟性のために作られたオープンソースのC#のWebクローラです。それは、低レベル配管(マルチスレッド、http要求、スケジューリング、リンク解析など)を担当します。データを処理するためのキーイベントや、コアインターフェイスの独自の実装をプラグインするだけで、クロールプロセスを完全に制御できます。

これは使用していません。

関連する問題