2010-01-17 25 views
29

मुझे बस यह विचार था, और यह सोच रहा था कि पूरे वेब को क्रॉल करना संभव है (जैसे बड़े लड़के!) एक समर्पित सर्वर (जैसे Core2Duo, 8gig RAM, 750gb डिस्क 100mbps) पर।गाइड?

मैं एक पेपर में आया हूं जहां यह किया गया था .... लेकिन मुझे इस पेपर के शीर्षक को याद नहीं किया जा सकता है। यह कुछ सांख्यिकीय मॉडल का उपयोग कर एक समर्पित सर्वर पर पूरे वेब को क्रॉल करने जैसा था।

फिर भी, बस करीब 10,000 बीज यूआरएल के साथ शुरू, और संपूर्ण क्रॉल करने की कल्पना ....

यह संभव है?

मुझे वेब को क्रॉल करने की आवश्यकता है लेकिन समर्पित सर्वर तक सीमित है। मैं यह कैसे कर सकता हूं, क्या वहां पहले से ही एक ओपन सोर्स समाधान है?

उदाहरण के लिए इस वास्तविक समय खोज इंजन को देखें। http://crawlrapidshare.com परिणाम बेहद अच्छे और ताज़ा अपडेट किए गए हैं .... वे यह कैसे कर रहे हैं?

+20

मैं आपकी यात्रा में शुभकामनाएं चाहता हूं। –

+1

उत्सुकता यह कितनी देर तक एक मशीन से वेब का 50% क्रॉल करने के लिए ले जाएगा (यहां तक ​​कि एक एफएटी पाइप, असली सौदा कोर बहुत सी रैम और एचडीडी स्पेस)। कितना लंबा? कोई अनुमान? –

+3

Google प्रति दिन 4 बिलियन पृष्ठों को क्रॉल करता है और फिर भी वे पूरे वेब को क्रॉल करने में सक्षम नहीं हैं। –

उत्तर

20

वेब क्रॉलिंग अवधारणात्मक सरल है। वेब को एक बहुत ही जटिल निर्देशित ग्राफ के रूप में देखें। प्रत्येक पृष्ठ एक नोड है। प्रत्येक लिंक एक निर्देशित किनारा है।

आप इस धारणा से शुरू कर सकते हैं कि एक अच्छी तरह से चुने गए शुरुआती बिंदु अंततः हर दूसरे बिंदु (अंततः) तक पहुंच जाएंगे। यह सख्ती से सच नहीं होगा लेकिन व्यवहार में मुझे लगता है कि आपको यह अधिकतर सत्य मिलेगा। अभी भी संभावना है कि आपको शुरुआती बिंदुओं के एकाधिक (शायद हजारों) की आवश्यकता होगी।

आप यह सुनिश्चित करना चाहते हैं कि आप एक ही पृष्ठ को दो बार (एक ट्रैवर्सल में) न करें। व्यावहारिक रूप से ट्रैवर्सल इतने लंबे समय तक ले जाएगा कि यह केवल एक सवाल है कि आप किसी विशेष नोड पर वापस आने से पहले और आप कैसे परिवर्तनों का पता लगा सकते हैं और इसका सामना कर सकते हैं (जिसका मतलब है कि दूसरी बार जब आप किसी पृष्ठ पर आते हैं तो यह बदल सकता है)।

हत्यारा आपको कितना डेटा स्टोर करने की आवश्यकता होगी और इसे प्राप्त करने के बाद आप इसके साथ क्या करना चाहते हैं।

+3

पूरे शब्दकोश को google.com पर भेजकर बस अपनी क्रॉलिंग शुरू करें;) –

+0

@cletus खूबसूरती से डाल दिया। – Malaken

+1

अवधारणात्मक सरल –

2

मुझे यकीन है कि यह संभव है। आपको केवल क्वांटम सीपीयू और क्वांटम रैम होना चाहिए।

गंभीरता से, एक सर्वर पूरे वेब के विकास के साथ पकड़ने में सक्षम नहीं होगा। Google सर्वरों के विशाल खेत का उपयोग करता है (दसियों में गिना जाता है, अगर सैकड़ों हजारों नहीं), और यह आपको तत्काल अनुक्रमण प्रदान नहीं कर सकता है।

मुझे लगता है कि यदि आप एक सर्वर तक सीमित हैं और पूरे वेब को क्रॉल करने की आवश्यकता है, तो आपको वास्तव में उस क्रॉल के परिणामों की आवश्यकता है। "वेब को क्रॉल कैसे करें" पर ध्यान केंद्रित करने के बजाय, "Google का उपयोग करने वाले डेटा को निकालने के तरीके" पर ध्यान केंद्रित करें। इसके लिए एक अच्छा प्रारंभिक बिंदु होगा: Google AJAX Search API

+0

+1 लेकिन वास्तव में एक टिप्पणी होना चाहिए – RCIX

+0

Google ने एपीआई के माध्यम से खोज परिणामों को स्वचालित और पुन: उपयोग करने के सभी कानूनी तरीकों को हटा दिया है। यह केवल अवैध है और Google कभी भी प्रति प्रश्न 400 परिणाम नहीं देता है और खोज और परिणाम को अनुकूलित करने के तरीके बहुत ही सीमित हैं। – Lothar

0

संभव लगता है लेकिन दो वास्तविक समस्याएं नेटवर्क कनेक्शन और हार्ड ड्राइव स्थान होंगी। किसी ऐसे व्यक्ति के रूप में बोलना जो वेब क्रॉलिंग के बारे में लगभग कुछ भी नहीं जानता है, मैं कई टेराबाइट स्टोरेज से शुरू करूंगा और अपना रास्ता तैयार करूंगा क्योंकि मैं अधिक जानकारी एकत्र करता हूं, और एक अच्छा ब्रॉडबैंड इंटरनेट कनेक्शन। इसके लिए एक गहरी जेब जरूरी है!

+1

मुझे संदेह है कि जब हम वेब क्रॉलिंग के बारे में बात कर रहे हैं तो टेराबाइट सही इकाइयां हैं। Google हर दिन लगभग 20 पेटबाइट डेटा संसाधित करता है। सार पढ़ें: http://portal.acm.org/citation.cfm?doid=1327452.1327492 –

+1

सच है लेकिन मुझे गंभीरता से संदेह है कि कोई भी ब्रॉडबैंड कनेक्शन के माध्यम से पेटबाइट्स पंप कर सकता है ... – RCIX

+0

पेटा बाइट्स का अर्थ खोज क्वेरी और अधिक है, न केवल पृष्ठों । –

0

मुझे आश्चर्य है कि पूरा इंटरनेट 750 जीबी से बड़ा होना चाहिए। इसके अलावा, वेब को अनुक्रमणित करने के लिए डिज़ाइन की गई डेटा संरचना में बहुत अधिक संग्रहण होता है।

+0

यदि आप अपनी अनुक्रमणिका को अच्छी तरह से स्टोर करते हैं, तो आप अपने 750 जीबी हार्डडिस्क पर बहुत सारी जानकारी जमा कर पाएंगे। कोई भी नहीं कहता है कि क्रॉलर को हर वेब पेज से सभी डेटा स्टोर करना चाहिए। उदाहरण के लिए, यह जांच सकता है कि यह एक सामाजिक साइट है (माइफेस, स्पेसबुक, ट्वीटर, लर्कडेन, फोरम या कोई रूचि नहीं है)। यदि, हालांकि, यह एक पृष्ठ है जिसमें स्रोत-कोड है, यह इसे एक बिट के साथ चिह्नित कर सकता है, और निकाली गई जानकारी को हैशफ्रेड फ़ाइल (स्टार्टर्स के लिए) में संग्रहीत कर सकता है। –

2

कोई वैकल्पिक समाधान के लिए इस देखें, तो आप उस डेटा की मात्रा (भले ही यह संभव थे) से कोई लेना देना विचार करना होता क्या पर निर्भर करता है: http://searchenginewatch.com/2156241

... संपादित करें: इसके अलावा, न भूल जाते हैं, वेब हर समय बदल रहा है, इसलिए अपेक्षाकृत छोटे आकार के क्रॉलिंग ऑपरेशंस (जैसे क्लासिफाईड साइट्स जो बहुत सारे स्रोतों से लिस्टिंग एकत्र करते हैं) 24 घंटों के चक्र की तरह, चक्र पर अपने क्रॉल को ताज़ा करें। वह तब होता है जब वेबसाइट मालिक आपके क्रॉलर को अपने सर्वर पर रखे लोड से असुविधाजनक होने लगते हैं या नहीं। और उसके बाद आप क्रॉल की गई सामग्री का उपयोग करने के तरीके के आधार पर, आपको इस बारे में सोचने के लिए डी-डुप्लींग मिल गई है क्योंकि आपको अपने सिस्टम को यह पहचानने की आवश्यकता है कि कल से क्रॉल परिणाम आज के आदि से अलग हैं या नहीं ... बहुत "अस्पष्ट हो जाता है ", आवश्यक कंप्यूटिंग शक्ति का उल्लेख नहीं है।

7

मेरा मानना ​​है कि जिस पेपर का आप उल्लेख कर रहे हैं वह है "आईआरएलबॉट: स्केलिंग टू 6 बिलियन पेजेस एंड बियॉन्ड"। यह टेक्सास ए & एम

बैंडविड्थ, डिस्क स्पेस, क्रॉलिंग रणनीतियों, robots.txt/विनम्रता के मुद्दों को छोड़कर - मुख्य प्रश्न जो मुझे मिला है वह है "क्यों?" पूरे वेब को क्रॉल करना मतलब है कि आप कई लाखों वेब सर्वरों से साझा संसाधनों का उपयोग कर रहे हैं। वर्तमान में अधिकांश वेबमास्टर्स बॉट को क्रॉल करने की अनुमति देते हैं, बशर्ते वे अच्छे खेलें और विनम्र क्रॉलिंग के लिए निहित और स्पष्ट नियमों का पालन करें।

लेकिन प्रत्येक उच्च-मात्रा वाले बॉट जो स्पष्ट लाभ के बिना साइट को हथियार देता है, कुछ अन्य साइटों में बड़े लड़कों (Google, याहू, बिंग, आदि) के अलावा सब कुछ के लिए दरवाजा बंद करने में कुछ और साइटें होती हैं। तो आप वास्तव में पूछना चाहते हैं कि कैसे सवाल पर बहुत अधिक समय खर्च करने से पहले सवाल।

मान लीजिए कि आपको वास्तव में एक सर्वर पर वेब के एक बड़े हिस्से को क्रॉल करने की आवश्यकता है, तो आपको एक फ़ैटर पाइप, बहुत अधिक संग्रहण स्थान प्राप्त करना होगा (उदाहरण के लिए प्रति पृष्ठ 2K संपीड़ित टेक्स्ट मानें, इसलिए 1 बी के लिए 2TB पेज), बहुत अधिक रैम, कम से कम 4 असली कोर इत्यादि। आईआरएलबॉट पेपर आपकी सबसे अच्छी मार्गदर्शिका होगी। आप जावा कोड के पुन: प्रयोज्य हिस्सों के लिए क्रॉलर-कॉमन्स प्रोजेक्ट को भी देखना चाहेंगे।

और सावधानी के अंतिम शब्द। एक निर्दोष गलती के लिए एक वेब साइट के लिए समस्याओं को ट्रिगर करना आसान है, उस समय आप एक गुस्सा वेबमास्टर लौ के प्राप्त होने पर होंगे। तो सुनिश्चित करें कि आपको मोटी त्वचा मिली है :)

3

ब्लूम फ़िल्टर यह पता लगाने के लिए कि आप कहां गए हैं।

झूठी सकारात्मकताएं होंगी लेकिन आप कई ब्लूम फ़िल्टर को लागू करके और ब्लूम फ़िल्टर को जोड़ने और प्रभावशाली लंबाई का फ़िल्टर बनाने के द्वारा घूमते हुए इसे प्राप्त कर सकते हैं।

http://en.wikipedia.org/wiki/Bloom_filter

4

इतने लंबे समय के बाद इस सूत्र को पुनर्जीवित करने क्षमा करें, लेकिन मैं सिर्फ बाहर बात करने के लिए अगर आप सिर्फ एक बहुत बड़े वेब डाटासेट की जरूरत होती हैं, वहाँ की तुलना में इसे पाने के लिए एक बहुत ही आसान तरीका है कि चाहता था पूरे वेब को एक सर्वर के साथ क्रॉल करने का प्रयास करें: Common Crawl project द्वारा प्रदान किए गए मुफ्त क्रॉल डेटाबेस को डाउनलोड करें। उनके शब्दों में:

हम वेब क्रॉल डेटा के खुले भंडार का निर्माण और रखरखाव करते हैं जिसे किसी भी द्वारा एक्सेस और विश्लेषण किया जा सकता है।

आज के रूप में उनका डेटाबेस आकार में पेटबाइट्स है, और इसमें अरबों पेज (लिंक के ट्रिलियन) शामिल हैं। बस इसे डाउनलोड करें, और उसमें जो भी विश्लेषण आप रुचि रखते हैं उसे करें।

+0

हां यह अमेज़ॅन ईसी 2 पर है और यह सामान्य क्रॉल को संसाधित करने के लिए पागल कीमतों को पूर्ण बेकार बनाता है। इसे स्वयं करना बहुत सस्ता है। इसके अलावा यह पुराना नहीं है और इसमें सभी संभावित डेटा का विशाल मिश्रण शामिल है। – Lothar

संबंधित मुद्दे