2010-12-05 11 views
9

में कोई भी अच्छा ओपन सोर्स वेब क्रॉलिंग फ्रेमवर्क Iam एक शॉपिंग तुलना इंजन का निर्माण करता है और मुझे दैनिक डेटा संग्रह प्रक्रिया करने के लिए क्रॉलिंग इंजन बनाने की आवश्यकता होती है।सी #

मैंने सी # में क्रॉलर बनाने का निर्णय लिया है। मुझे HttpWebRequest/HttpWebResponse क्लासेस के साथ बहुत बुरा अनुभव है और वे बड़ी क्रॉल के लिए अत्यधिक छोटी और अस्थिर होने के लिए जाने जाते हैं। तो मैंने उन पर निर्माण न करने का फैसला किया है। फ्रेमवर्क 4.0 में भी वे छोटी हैं।

मैं अपने व्यक्तिगत अनुभव से बात करता हूं।

मुझे यहां विशेषज्ञों की राय चाहिए जो क्रॉलर कोडिंग कर रहे हैं, अगर वे किसी भी अच्छे ओपन सोर्स क्रॉलिंग फ्रेमवर्क के बारे में जानते हैं, जैसे जावा में नच और अपाचे कॉमन्स हैं जो बहुत स्थिर और अत्यधिक मजबूत पुस्तकालय हैं।

यदि सी # में पहले से मौजूद कुछ मौजूदा क्रॉलिंग फ्रेमवर्क हैं, तो मैं आगे बढ़ूंगा और उनके आवेदन को उनके ऊपर बनाऊंगा।

यदि कोड समाधान से इस समाधान को विस्तारित करने और इसे विस्तारित करने की योजना नहीं है।

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

किसी भी एक मुझे एक बेहतर रास्ता सुझाव दे सकते हैं, तो मैं सच में आभारी होंगे।

संपादित करें: कुछ साइट जो मुझे क्रॉल करना है, बहुत जटिल जावा स्क्रिप्ट का उपयोग करके पृष्ठ प्रस्तुत करना है, अब यह मेरे वेब क्रॉलर को और अधिक जटिलता जोड़ता है क्योंकि मुझे जावास्क्रिप्ट द्वारा प्रदान किए गए पृष्ठों को क्रॉल करने में सक्षम होना आवश्यक है। अगर किसी ने सी # में किसी लाइब्रेरी का उपयोग किया है जो जावास्क्रिप्ट को क्रॉल कर सकता है, तो कृपया साझा करें। मैंने वॉटर का उपयोग किया है जिसे मैं पसंद नहीं करता और मुझे सेलेनियम के बारे में भी पता है। यदि आप इनके अलावा किसी अन्य चीज़ के बारे में जानते हैं तो कृपया मेरे साथ और समुदाय के साथ साझा करें।

+9

HttpWebRequest छोटी गाड़ी कैसे है? – SLaks

+0

'SELECT' टूटा नहीं है। – neo2862

+1

http://htmlagilitypack.codeplex.com/ –

उत्तर

3

PhantomJS + HtmlAgilityPack

मैं जानता हूँ कि इस विषय थोड़ा पुराना है, लेकिन मैं PhantomJS साथ अब तक का सबसे अच्छा परिणाम मिला है। इसके लिए NuGet पैकेज है, और इसे HtmlAgilityPack के साथ संयोजित करने के लिए & स्क्रैपिंग टूलकिट लाने के लिए एक सुंदर सभ्य बनाता है।

यह उदाहरण केवल फ़ैंटॉमजेएस की पार्सिंग क्षमताओं में निर्मित का उपयोग करता है। यह पुस्तकालय के एक बहुत पुराने संस्करण के साथ काम किया; चूंकि यह अभी भी सक्रिय विकास के तहत प्रतीत होता है, यह मानना ​​सुरक्षित होगा कि और भी क्षमताओं को जोड़ा गया है।

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

मुझे कोडप्लेक्स पर उपलब्ध एनसीrawलर नामक कुछ चीज़ पता है। इसे व्यक्तिगत रूप से इस्तेमाल नहीं किया जाता है, लेकिन एक सहयोगी का कहना है कि यह ठीक काम करता है।

+0

एनक्रॉलर अब एक अच्छा समाधान प्रतीत होता है। –

0

Ncrawler का समर्थन नहीं करता Javascript.But यह समाधान का उपयोग करने के लिए यदि आप जावास्क्रिप्ट निष्पादन

2

arachnode.net की जरूरत नहीं है जावास्क्रिप्ट संसाधित कर सकते हैं बहुत अच्छा है, और आसान लग रहा है।

3

Abot सी # वेब क्रॉलर

विवरण http://code.google.com/p/abot/ से कहते हैं: Abot एक खुला स्रोत सी # वेब की गति और लचीलेपन के लिए बनाया क्रॉलर है। यह निम्न स्तर की नलसाजी (मल्टीथ्रेडिंग, http अनुरोध, शेड्यूलिंग, लिंक पार्सिंग, आदि ..) का ख्याल रखता है। क्रॉल प्रक्रिया पर पूर्ण नियंत्रण लेने के लिए आप कोर इंटरफेस के डेटा को संसाधित करने या अपने स्वयं के कार्यान्वयन को प्लग करने के लिए महत्वपूर्ण घटनाओं में शामिल हैं।

हालांकि इसका उपयोग नहीं किया है।