[संगीत बजाना] रॉबर्ट KRABEK: हैलो, दोस्तों। मेरा नाम रॉबर्ट Krabek, और है मैं तुम लोगों को अध्यापन किया जाएगा साथ वेब परिमार्जन करने के लिए कैसे एक रूबी पुस्तकालय है जो Nokogiri, और एक क्रोम एक्सटेंशन है जो किमोनो,। तो पहले वहाँ एक कुछ बातें आपको लगता है कि आप से किया गया है हो सकता है अगर ऐसा कर सकते हैं अब तक सभी psets कर रही है और अपने कार्यक्षेत्र है एक छोटे से पूर्ण हो रही है। हम वास्तव में बस जाओ और कर सकते हैं आप के लिए एक नया कार्यक्षेत्र बनाने बस में एक ब्रांड के नए प्रोजेक्ट करने के लिए। क्या आप जारी रखना चाहते हैं तो अगर CS50 खाका आईडी में काम आप वर्तमान में है कि, स्वतंत्र लग रहा है, और तुम सिर्फ कर सकते हैं CFLAGS साथ Nokogiri स्थापित बराबर होती मणि nokogiri स्थापित करें। लेकिन अन्यथा मैं आपको दिखाता हूँ एक नया एक स्थापित करने के लिए कैसे। और फिर यह अनिवार्य है अधिक प्रशिक्षण के पहियों छोड़ने। अगर तुम थे और जैसा कि आप कोडिंग कर रहे हैं सिर्फ उदात्त या कुछ में कोडिंग। हम इस पर बदलाव तो अगर। तो यह आपके वर्तमान सीएस 50 आईडी है कहना। तुम बस यहाँ Cloud9 करने के लिए जा सकते हैं। आप अपने डैशबोर्ड पर जा सकते हैं। यह कार्यस्थान टैब को लाना चाहिए। और फिर आप बस क्लिक कर सकते हैं इधर, एक नया कार्यक्षेत्र बनाएँ। अपने नए कार्यक्षेत्र नाम, शायद परीक्षण, या स्क्रैप। और फिर यहाँ इस कस्टम टैब पर क्लिक करें बजाय CS50 टेम्पलेट्स टैब की। और फिर आप बस जा सकते हैं और एक नया कार्यक्षेत्र बनाने के लिए। मैं पहले से ही यहाँ एक कार्यक्षेत्र बना लिया है। इसलिए हम इस के साथ काम करना होगा। और आप एक नया बनाया है कार्यक्षेत्र कस्टम टैब के साथ तो, तुम सिर्फ मणि स्थापित टाइप कर सकते हैं यहाँ नहीं जा रहा है, जो nokogiri। ठीक है, यह एक छोटे से जमे हुए है। लेकिन अगर आप nokogiri स्थापित मणि टाइप कर सकते हैं। और यह सब होना चाहिए कि स्थापना करने के लिए नहीं है। जैसा कि मैंने कहा, इससे पहले कि आप अभी भी कर रहे हैं अपने CS50 खाका आईडी में काम कर रहे, तुम सिर्फ CFLAGS टाइप करने की जरूरत मणि nokogiri स्थापित बराबर होती है। और मैं पहले से ही स्थापित किया है यह यहां इसलिए मुझे लगता है कि ऐसा नहीं होगा। लेकिन उन लोगों के लिए निम्नलिखित साथ में, ऐसा करने के लिए स्वतंत्र महसूस। आप अपने Nokogiri मिल गया है तो एक बार कार्यक्षेत्र या पुस्तकालय स्थापित है, मैं आप एक छोटा सा देने के लिए जा रहा हूँ रूबी वाक्य रचना में एक क्रैश कोर्स की Nokogiri एक रूबी पुस्तकालय है। तो अगर आप कुछ बुनियादी पता करना होगा Nokogiri के साथ काम करने के लिए रूबी सिंटेक्स। तो कुछ बुनियादी मतभेद आप के लिए इस्तेमाल कर रहे हैं से शायद आप काम कर रहा है, तो अब तक सिर्फ सी और पीएचपी में, आप कोई प्रकार के साथ चर घोषणा। आप अर्धविराम का उपयोग नहीं करते, जो एक राहत की तरह है। अब आसपास कोई कोष्ठकों नहीं है के लिए या छोरों जबकि, उदाहरण के लिए। तुम बस कोड का एक ब्लॉक है, और तो आप उस के अंत में समाप्त कर दिया। कोई प्लस वहाँ प्लस शून्य या शून्य, बस इतना जब के लिए जानते हैं कि आप छोरों के लिए कर रहे हैं, सिर्फ प्लस बराबर होती है और शून्य के बराबर होती है। और बदले हैश के शामिल तुम तो आवश्यकता का उपयोग करेंगे और कोशिश कर रहा है जो कुछ भी पुस्तकालय अपने कार्यक्रम में लोड करने के लिए। रूबी एक संकलित भाषा नहीं है। तो यह है कि एक और राहत की बात है। यह पीएचपी, जहां के लिए और अधिक समान है यह एक व्याख्या की भाषा है। आप किसी भी रूबी स्क्रिप्ट चला सकते हैं रूबी पीछा के साथ आप लिखना अपनी स्क्रिप्ट या प्रोग्राम के नाम से। यह एक रूबी कार्यक्रम है दर्शाता है कि, तुम सिर्फ .rb बजाय ग के साथ इसे खत्म होता है। और चर देखते हैं रूबी में आकार सरणियों, जो आप कर रहे हैं जब सुपर सुविधाजनक है स्क्रैप और शायद संलग्न करना चाहते हैं आप एक सरणी में scraped है कि डेटा। आप एक नई सरणी malloc के लिए नहीं है और नई सरणी में पुराने सरणी कॉपी। तुम बस के साथ संलग्न कर सकते हैं दो तीर के संकेत हैं। और कोई घर का काम देखते, देखते हैं सिर्फ एक पत्र तार। तो यह है कि एक छोटे से आसान होना चाहिए। तो हम बस आप कुछ दे दूँगा कुछ बुनियादी रूबी वाक्य रचना के उदाहरण हैं। यहाँ तो आप के बजाय देख सकते हैं कि स्लैश स्लैश, रूबी में टिप्पणी करने के लिए आप सिर्फ पाउंड चिह्न का उपयोग करें। और चर घोषणा, आप सिर्फ चर बराबरी टाइप जो कुछ भी आप चर होना चाहते हैं। वे तार हो सकता है। आप सरणी, जो हो सकता है आप मूल्यों के साथ आबाद। पुट और प्रिंट के समान हैं। हमारे उद्देश्यों के लिए, फर्क सिर्फ इतना सच है उस के लिए खड़ा है, जो कहते हैं कहते हैं, बस एक नई लाइन कहते हैं चरित्र जो कुछ भी आप मुद्रण कर रहे हैं। हम एक छोटे से देते हैं तो यहां प्रदर्शन, हम इस with-- चला सकते हैं एक नए टर्मिनल खुला। आप इन सब को देख सकते हैं अपने टर्मिनल में फ़ाइलों। और मैं सिर्फ चलाते हैं रूबी, रूबी intro.rb, यह हैलो पाँच बाहर डालता है माथर, क्विंसी, कैरियर। एडम्स। वह सब है तो वहाँ है घोषित करने सरणियों के लिए। दर्शकों: रॉबर्ट, आप कर सकते हैं अपने फॉन्ट एक छोटे से बड़ा? रॉबर्ट KRABEK: हाँ। तुम नहीं कर सकते, क्योंकि मैं ज़ूम कर सकते हैं जाहिरा तौर पर टर्मिनल फोंट में ज़ूम। तो यह है कि आप प्रिंट कैसे है अपने टर्मिनल के लिए चर। आप भी उपयोग कर सकते हैं एक स्ट्रिंग के अंदर चर। तो हाल ही में पीएचपी में, आप सीखा है हो सकता है स्ट्रिंग प्रक्षेप है कि वहाँ। तो तुम यहाँ एक नज़र रखना है, तो मैं यदि , तीन चर, नाम, पुस्तकालय की घोषणा और भाषा, और मैं कहते हैं, मैं एक स्ट्रिंग लिखने, नमस्ते मेरा नाम है। और फिर बजाय पीएचपी स्ट्रिंग प्रक्षेप के संस्करण जो इस तरह एक छोटे से अधिक लग रहा है, आप तो एक पाउंड पर हस्ताक्षर किया है, और एक घुंघराले गले लगा, और उसके बाद चर का नाम। और कहा कि आप प्रिंट होता है, कैसे कहना है, जो कुछ भी चर नाम है। और फिर आप भी कर सकते हैं तार जुटना। रूबी यह सुपर बनाता है प्लस पर हस्ताक्षर के साथ आसान। तुम सिर्फ एक स्ट्रिंग है बाएं प्लस एक चर पर एक और स्ट्रिंग के साथ साथ एक स्ट्रिंग या। मैं इस बाहर प्रिंट, तो यह चाहिए ताकि बस अपना नाम रॉबर्ट है, हैलो कहते हैं। मैं आप रूबी में nokogiri शिक्षण जाएगा। और चलो बस यह है कि इस बात की पुष्टि करते हैं वास्तव में case-- माणिक परिचय है। नमस्कार, मेरा नाम रॉबर्ट है। मैं आप रूबी में nokogiri शिक्षण जाएगा। पर चल रहा है, और बयानों हैं, यह थोड़ा अलग है आप के लिए इस्तेमाल किया जा सकता है क्या से आप सी में काम कर रहा है, तो आप कोष्ठकों जरूरत नहीं है। आप सर्पाकार जरूरत नहीं है। और इसके बजाय यदि किसी और की, यह एक concatenated elsif है। यहाँ में तो, मैं घोषित किया है, तो ऊपर x हम देख सकते हैं, यहाँ, एक्स अभी भी 5 है। एक्स 3 की तुलना में कम है, तो यह छोटा सा डाल देता हूँ। यह 7, मध्यम, और कुछ बड़े की तुलना में कम है तो। तो 5 एक मध्यम संख्या है। और मैं अंत के साथ कोड के इस ब्लॉक खत्म होता है। यहाँ पाश के लिए मेरी है। और इस वाक्य रचना भी है थोड़ा अलग। 0 से पांच सिर्फ अनिवार्य 0-5 की सरणियों की घोषणा की है। तो सरणी में पांच स्लॉट नहीं है। और फिर उस में प्रत्येक स्लॉट के लिए सरणी, मैं मैं incrementing हो जाएगा। तो यह 4 से 0-5, या 0 प्रिंट चाहिए। और इस माध्यम प्रिंट चाहिए। और मैं सिर्फ माध्यम से आग करेंगे। तुम लोग उपयोग होगा पर बाद में इस कोड को। तो तुम लोग इस अपने आप चला सकते हैं। तो यह अपने बुनियादी जबकि पाश है। यह सिर्फ जम्मू मुद्रण होगा, हम 5 मारा जब तक 1 से incrementing। सुपर त्वरित रूबी क्रैश कोर्स एक समारोह में लिखने के लिए पर। इसके बजाय, का कहना है, पूर्णांक भाज्य नंबर, हम सिर्फ डेफ है। और अनिवार्य रूप से आप कर रहे हैं यहां एक समारोह को परिभाषित। यह होने जा रहा है समारोह के नाम पर, और यह किसी भी चर है कि आप समारोह में पारित करने के लिए चाहते हैं। आप के भीतर यदि बयानों हो सकता है। आप वापसी कर सकते हैं। इस मामले में, हम कर रहे हैं एक बारी बारी से परिभाषित कार्यान्वित भाज्य समारोह। तो हम बस कार्यों फोन इस तरह रूबी में। मैं यह है कि मैं, परिभाषित किया है तो अगर 3 में से गुजरती हैं, भाज्य कॉल कर सकते हैं, और फिर 3 नंबर चर हो जाएगा मैं समारोह के भीतर उपयोग कर सकते हैं। और इस to_s सिर्फ तब्दील हो रही है एक स्ट्रिंग में भाज्य के मूल्य वापसी। अन्यथा इस फेंक देंगे एक त्रुटि मैं, ओह कह एक string-- मुद्रित नहीं कर सकते तुम्हें याद के रूप में है, क्योंकि इस वजह से string-- डाल दिया जाता है डालता भाज्य एक नंबर वापस आ गया है। तो हम उस परिवर्तित कर सकते हैं इस तरह की तरह एक स्ट्रिंग के लिए। और इसके विपरीत, आप भी परिवर्तित कर सकते हैं to_i साथ एक पूर्णांक के लिए एक स्ट्रिंग। इतना सब कुछ सुपर सरल बनाने, मैं सिर्फ यह पता टिप्पणी करते हैं, तो बचा और भाज्य समारोह चलाते हैं। हम यह देखने के लिए सक्षम होना चाहिए 3 की कि भाज्य 6 है। और कहा कि वास्तव में सच है। तो यह है कि रूबी में क्रैश कोर्स है। और अब आप रूबी पता है, हम पर जा सकते हैं बुनियादी Nokogiri करने के लिए स्थापित scraping। अनिवार्य रूप से आप है सभी के लिए है, रूबी में, पुस्तकालयों की आवश्यकता होती है। और हमारे उद्देश्यों के लिए हम उपयोग कर सकता हूँ पुस्तकालय OpenURI के साथ-साथ Nokogiri। और फिर क्या आप do-- और यह हूँ आप है- वाक्य विन्यास को देना क्या आप में होगा के रूप में ज्यादा यूआरएल को खोलने के लिए है सी यूआरएल के लिए खड़ा है, जो एक कर्ल अनुरोध,। तो आप का यूआरएल ले सवाल में वेबसाइट। आप एक चर में यह दुकान। और फिर आप उस के माध्यम से खोज सकते हैं का उपयोग करते हुए अनूठा एचटीएमएल टैग के लिए चर सीएसएस आदेश। और फिर तुम उत्पादन कर सकते हैं जहाँ आप चाहते हैं के लिए सामग्री। आप एक डेटाबेस में शुरू कर सकते हैं। आप कर सकते हैं एक फ़ाइल में उत्पादन, या यहां तक ​​कि सिर्फ स्क्रीन करने के लिए इसे प्रिंट। तो हम आपको एक बुनियादी खुरचनी दिखाएंगे। यहां तक ​​कि आप हम देख सकते हैं तो nokogiri की आवश्यकता होती है, खुले उड़ी आवश्यकता होती है। आपका बुनियादी सेट अप, चलो , दस्तावेज़ या डॉक्टर इसे कहते हैं Nokogiri :: HTML है, जो खुले बराबर होती है OpenURI द्वारा हमें प्रदान की कमान पुस्तकालय। और हम में से उन लोगों के लिए, खोज करेंगे ट्रैक्टर में रहने वाले हो सकते हैं, जो आप, बोस्टन में सूचीबद्ध हैं कि बाइक के लिए बोस्टन क्रेगलिस्ट बाइक खंड पर साइट। आप अपरिचित हैं तो अगर कर्ल के साथ, मैं तो बस हूँ असली जल्दी कर्ल क्या करेंगे आप दिखा। मैं से यूआरएल के सभी प्राप्त करना चाहता था क्रेगलिस्ट साइट, मैं कर्ल टाइप करते हैं, यह सिर्फ यूआरएल के सभी उदासीनता क्रेगलिस्ट साइकिल साइट से अपने टर्मिनल पर। यही कारण है कि विशेष रूप से नहीं है उपयोगी मैं नहीं जानता, क्योंकि मैन्युअल के माध्यम से जाना चाहते हैं और मेरी चाहत बात लगता है। लेकिन अभी तो आप कर सकते हैं मैं वास्तव में हूँ कि वहाँ अगर तुम देखो, सही कोड का उपयोग bikes-- में Craigslist के लिए URL पर किसी कारण के लिए यह नहीं मिला है। आप इस पेज पर नजर डालें तो और आप यूआरएल को देखो, इस के लिए समान होना चाहिए मैं सिर्फ भेज कि कर्ल अनुरोध। और वास्तव में, जा रहा है कि क्या है डॉक्टर चर में संग्रहीत। तो अगर आप हमारे कोड के लिए वापस जाना है, जब हम तो इस डॉक्टर चर पर काम कर सकते हैं सीएसएस का उपयोग करके। इसलिए मुझे लगता है की सब प्राप्त करना चाहता था कहना span.txt हैं कि टैग, और कहा कि टैग के भीतर सभी एक टैग। और हम क्यों चाहते हो सकता है इस करते हैं, मैं तुम्हें रोते सुना? हम निरीक्षण तत्व हैं, तो यह आप एक देता है यूआरएल संरचित है कैसे के टूटने। मैं के माध्यम से नीचे स्क्रॉल यहाँ आप देख सकते हैं क्या इन अलग से प्रत्येक तत्व का प्रतिनिधित्व करता है। इसलिए हो सकता है कि मैं का उपयोग करना चाहते हैं इस विशेष तत्व। तो मैं क्रोम डेवलपर उपयोग कर रहा हूँ उपकरण तत्व का निरीक्षण किया। मैं यहाँ नीचे देखना यह है कि कर सकते हैं एक अंतराल के भीतर एक टैग है TXT के एक वर्ग के साथ टैग। तो यह करने के लिए हो जाता है हमारी पहला ऑपरेशन है, जो टैग है जो doc.css अवधि, है कि मैं यह सब यूआरएल के भीतर के लिए देख रहा हूँ। और फिर .txt सीएसएस की तरह ज्यादा संचालित तुम सिर्फ सीएसएस लिख रहे हैं जब करता है द्वारा अपने HTML फ़ाइलों में एक वर्ग को निर्दिष्ट। इसलिए इस विशेष ऑपरेटर होगा TXT के वर्ग के साथ एक अवधि टैग निर्दिष्ट करें। और फिर मैं एक जगह छोड़ दें, तो यह तो है कि टैग के भीतर जाना होगा और फिर एक है कि भीतर एक टैग पाते हैं। तो मैं बस को यह डाल टर्मिनल, मुझे ऐसा करना चाहिए अनिवार्य रूप से सब कुछ देखने के लिए सक्षम होना उस वर्ग TXT की इस अवधि के भीतर है। इसलिए हम एक जाने दे दूँगा। माणिक Craigslist खुरचनी। और वास्तव में लगता है कि हमें इन सभी को देता है विभिन्न लिस्टिंग के टैग कि क्रेगलिस्ट पृष्ठ पर हैं। हम वापस जाने के लिए तो, अगर हम इस बारी कर सकते हैं कुछ में एक छोटे से अधिक उपयोगी है। शायद हम सिर्फ लिंक चाहते हैं। इस टैग के भीतर, मैं भी हूँ क्योंकि पथ का हाइपरलिंक है कि इस पेज को जाता है। तो तुम यहाँ इस कोड को देखो, मैं क्या करूंगा, बजाय सीएसएस की है मैं at_css जा सकते हैं। और यह सिर्फ पहली बार मिल जाएगा उन चीजों में से सभी के तत्व। अगर मैं थे में है कि ऊपर ऐसा करने के लिए कोड मैं सिर्फ पहले से प्रदर्शन, बजाय सभी लौटने की इस कारण, यह सिर्फ होगा उन लोगों में से पहले एक वापसी। At_css ऑपरेटर कैसे काम करता है तो वह है। इसलिए हम संग्रहीत करना चाहते हैं पथ पहले एक टैग के सभी। और एक अमेरिकी एक-- दे देंगे क्योंकि इसलिए हम अभी भी सीएसएस का उपयोग करने के लिए जा रहे हैं। लेकिन इस वजह से देने जा रहा है हमें वापस टैग की एक पूरी सरणी, हम उपयोग करने के लिए जा रहे हैं पहला तत्व। तो यह एक और तरीका है कि आप कर सकते है अगर आप किसी विशेष तत्व का उपयोग तत्वों की एक सरणी है कि वापस आ रहा है, आप कुछ भी इलाज कर सकते हैं कि क्योंकि अनिवार्य रूप से एक सरणी के रूप में सीएसएस रिटर्न,। और फिर हम उपयोग करने के लिए जा रहे हैं इस के हाइपरटेक्स्ट संदर्भ विशेषता। तो आप एक बार देख ले, यदि आप यहां बहुत करीब से देखा सिर्फ अनिवार्य रूप से आप यदि यूआरएल बार देखो, इस रास्ते पर है कि आप स्क्रैप हो जा रहे हैं। हम तो बस फिर इस चलाते हैं तो, और हम इसे बचा लिया सुनिश्चित करें। तुम घर पर जांच कर सकते हैं। यह वास्तव में इस लिंक के साथ मेल खाता है। तो क्यों न हम इस का उपयोग करने के लिए चाहते हो सकता है? आप परिमार्जन करने के लिए चाहते हैं यह और है पेज जैसे लिंक का एक पेज क्रेगलिस्ट करता है, आप तो जाने के लिए चाहते हो सकता है उन कड़ियों में से प्रत्येक में और फिर परिमार्जन कि की सामग्री, जो हम क्या करने जा रहे हैं कि वास्तव में क्या है। आप एक के रूप में पथ है तो एक बार चर, मैं अब वास्तव में इसे बाहर प्रिंट करने के बारे में परवाह है। मैं सिर्फ एक चर के रूप में यह स्टोर करने की जरूरत है। और फिर मैं एक और उपयोग कर सकते हैं मैं का उपयोग एक ही रास्ता पेज पहली जगह में डॉक्टर। यूआरएल के साथ छोड़कर, हम जा रहे हैं स्ट्रिंग प्रक्षेप का उपयोग करने के लिए जैसे मैं में वर्णन किया गया है रूबी पर पहले संलग्न करने के लिए जड़ से समाप्त करने के लिए पथ। तो क्या यह करने के लिए जा रहा है इस रास्ते पर डाल दिया जा रहा है मैं पहले से scraped कि और फिर उस बारी एक नए आइटम में, आप करना चाहते हैं जो कुछ भी it-- उदाहरण के लिए, first_listing कहते हैं। लेकिन मुझे छोड़ने के लिए जा रहा हूँ अब के लिए आइटम पर यह कि मैं यहाँ का उपयोग कर रहा है, क्योंकि। तो मैं विवरण प्राप्त करना चाहता था कहना Craigslist में पहली पोस्टिंग की। तो मैं यहाँ नीचे जाना होगा। मैं निरीक्षण तत्व पर क्लिक करेंगे फिर, यह वर्णन है। मैं यहाँ नीचे जाने के लिए और देखना चाहते हैं मुझे मिल सकता है तो मैं कैसे हो सकता है इस अनूठी टैग के लिए खोज करने के लिए सक्षम हो। और इस मामले में, यह है हमें होता है, जो एक आईडी, के लिए खोज की हमारी अगली तरह से करने के लिए टैग, जो एक हैशटैग के साथ है। कक्षाओं के लिए, आप कर सकते हैं तो डॉट ऑपरेटर का उपयोग करें। तो .txt, TXT के एक वर्ग को निर्दिष्ट किया जाता है हैश जबकि एक आईडी निर्दिष्ट करता है। तो इस मामले में, टैग है अनुभाग, और आईडी postingbody है। तो यह हो जाता है और पाता है first-- हम कर रहे हैं, क्योंकि इस जाता at_css-- का प्रयोग और पहला तत्व पाता है कि खंड के टैग के साथ आता है और postingbody की आईडी। और फिर आप पाठ तत्व का उपयोग कर सकते हैं उस आइटम की .text के साथ लौट आए। और फिर हम स्टोर कर सकते हैं विवरण में है। तो अब हम एक है चर विवरण हम कहते हैं, ऐसा करने में सक्षम हो सकता है मैं / हे फ़ाइल। तो रूबी में आई / ओ दाखिल / हे मैं फ़ाइल के समान है सी में हम एक फ़ाइल को खोलने जहां। हम यह करने के लिए लिख सकता है। और फिर हम उस फ़ाइल को बंद कर देंगे। यहाँ तो, हम सिर्फ नामकरण कर रहे हैं , कुछ मनमाने ढंग से चर फ़ाइल। हम भी बस यहाँ इस डाल सकता है। हम भंडारण कर रहे हैं कि एक चर है File.open के साथ खुले रूप में फ़ाइल। और हम इस फाइल करने के लिए लिख रहे हैं इसलिए हम w ऑपरेटर के साथ खुला। और फिर हम में स्ट्रिंग डाल .puts ऑपरेटर के साथ फ़ाइल। और फिर हम चर रखा है कि हम कि भीतर फाइल करने के लिए लिखना चाहते हैं। और फिर हम सिर्फ फ़ाइल बंद करें। इसलिए हम आगे जाना है और इस चलाते हैं, यह एक दस्तावेज प्रस्तुत करना चाहिए description.txt जिसके साथ होगा यह भीतर इस वर्णन किया है। तो अगर मैं कोई it-- चलाते हैं। यह साथ एक पाठ फ़ाइल का उत्पादन किया है उम्मीद है कि, एक ही बात है। तो एक नई पोस्टिंग वहाँ गया हो सकता है मैं बात कर रहा है, जबकि यह मुद्दा उठा रहा है। कर दिया गया है की तरह है और वास्तव में यह लग रहा है। इसलिए हम इस क्लासिक बाइक के लिए जाना है, 1962 1966 के लिए, कि मैच के लिए लगता है। और वहाँ तुम जाओ। तो यह है कि सबसे बुनियादी है स्क्रैप की कार्यक्षमता। हम बजाय हो सकता था सिर्फ इस फाइल करने के लिए लिख रहे हैं, हम एक सरणी के लिए चीजों को जोड़ सकते हैं। मैं तीन सरणियों की घोषणा करते हैं तो, शीर्षक, मूल्य, और विवरण। और हम अब डॉक्टर आइटम पर काम कर रहे हैं। हम के माध्यम से जाने के लिए और कर सकते हैं span.txt के सभी पाते हैं। और यह एक सरणी देता है, याद यह पाता है कि सभी मदों की। और फिर रूबी में, आप बस का उपयोग कर सकते हैं हर आइटम के माध्यम से पुनरावृति .प्रत्येक सरणी की। और फिर प्रत्येक आइटम के लिए, मैं सिर्फ यह कॉल करने के लिए जा रहा हूँ , क्योंकि है कि एक लिंक यह है अनिवार्य रूप से क्या। इसलिए मैं प्रत्येक link.css डॉट a.hdrlnk रखा है, यह वास्तव में कड़ी करने के लिए जा रहा है और उस लिंक पर एक और भीतर की खोज HTML तत्व और इसी वर्ग। तो अगर हम क्या याद यह, span.txt था तुम मुझे अभी वापस जाने दिया see- कर सकते हैं span.txt भीतर वास्तविक quick-- हम अन्य वर्गों की एक बहुत कुछ है। तो span.txt अंदर है, हम देख रहे हैं एक वर्ग hdrlnk के साथ एक एक टैग के लिए। तो मुझे सिर्फ पाते हैं कि चलो तुम लोगों को जल्दी असली के लिए। आप यहाँ देख सकते हैं तो, यह एक एक टैग है उस वर्ग TXT की अवधि के भीतर है उस वर्ग hdrlnk है। और कहा कि वास्तव में क्या हो रहा है हम पाने के लिए कोशिश कर रहे हैं। तो क्या अब हम सभी स्टोर करने के लिए कोशिश कर रहे हैं शीर्षक के अंदर उन कड़ियों की। और फिर हम मुद्रित करने के लिए जा रहे हैं उन कड़ियों में से प्रत्येक के बाहर। कोई खेद नहीं। हम बाहर मुद्रित करने के लिए जा रहे हैं उन में से प्रत्येक की कीमत। तो चलो वास्तव में इस चलाते हैं त्वरित और यह क्या करता है देखते हैं। तो यह सिर्फ मूल रूप से चला गया लिंक के प्रत्येक के माध्यम से बारी में, सवाल में टैग पहुँचा और फिर कीमत बाहर खींच लिया। और यह किया है कि क्योंकि के बाद आप शीर्षक में सब कुछ है, हम सिर्फ वहाँ शीर्षक संग्रहित किया है। हम सिर्फ कड़ी संग्रहित किया है सरणी शीर्षक के भीतर। और लूप ऑपरेशन के लिए इस में, जहां के बजाय a.hdrlnk के पास जाने की, हम एक span.price के लिए देख रहे हैं। मैं सिर्फ सच में जल्दी से मिल सकते हैं तो कीमत, आप तत्व का निरीक्षण किया, तो आप इसे एक अवधि है कि देखेंगे कीमत के वर्ग के साथ। और कहा कि अनिवार्य रूप से कैसे है हम वहाँ कीमत हो रही है। तो यह है कि वास्तव में है स्क्रैप की बुनियादी मामला। यही कारण है कि आप सभी को मिलता है एक पेज पर तत्वों कि, कहते हैं, आप पहले से ही का यूआरएल पता है। हम एक प्राप्त करना चाहते हैं तो गहराई में अधिक थोड़ा हम पृष्ठों के भीतर पन्नों नोच कर सकते हैं। और इस उदाहरण के लिए, मैं हूँ एक सीएसवी फाइल करने के लिए outputting हो। तो मैं यहाँ सीएसवी ऊपर की आवश्यकता होती हूँ रूबी नहीं है, क्योंकि अंदर ही, कार्यक्षमता है सिर्फ उत्पादन सीएसवी फाइल करने के लिए। तो यह है कि सुपर आसान है। मुझे बस अगले करने के लिए चलते हैं। हम फ़ाइल आई / ओ कवर किया। इसलिए इस यह सी में है कि कैसे करने के लिए इसी तरह की है और हम किमोनो के लिए आगे बढ़ने से पहले, मैं बस आप कैसे सच में जल्दी दिखाता हूँ जगहें भीतर साइटों परिमार्जन करने के लिए। इसलिए हम पहले से ही कैसे सीखा रूबी में सरणियों घोषित करने के लिए। तो मैं बस एक घोषणा कर रहा हूँ मनमाना सरणियों का गुच्छा कि मैं भीतर डेटा भंडारण किया जाएगा। डॉक्टर उसी तरह से काम कर रहा है यह पिछले फ़ाइल में किया था। हम पता लगा, में जा रहे हैं span.txt के प्रत्येक। हम पहले से ही पता है। यही कारण है कि कंटेनर है जो प्रत्येक के भीतर लिंक हम चाहते हैं कि डेटा की गई है। यहाँ तो हम क्या कर रहे प्रत्येक के लिए है काल वर्ग TXT की कड़ी है, हम में जा रहे हैं और हम, एक टैग लगा रहे हैं इस बात का पहला तत्व की खोज। , सीएसएस सरणी देता है, याद रखें के रूप में है तो आप सिर्फ यह नहीं पहुँच सकते हैं। हम पहला तत्व खोजने के लिए जा रहे हैं। यह एक की एक सरणी यहां तक ​​कि अगर आइटम आप इस वाक्य रचना का उपयोग किया है, और फिर href गुण बाहर खींच। इसलिए हम यह पहले किया था। इसलिए इस परिचित दिखना चाहिए। और इसलिए अब हम एक सरणी है हमारे लिंक के सभी के बुलाया रास्तों हम प्रयोग करना चाहते करने के लिए जा रहे हैं। इसलिए हम सभी का यह सरणी है हम उपयोग करना चाहते हैं कि रास्तों की, हम तो प्रत्येक के लिए एक आइटम बना सकते हैं उन पृष्ठों की है कि हम उस पेज खोलते हैं। हम भी पर देखा तो इससे पहले, जहां वाक्य रचना पथ के साथ स्ट्रिंग प्रक्षेप कर रही है यहाँ, इसलिए वाक्य रचना सिर्फ पथ के लिए है। और मैं इस नाम सकता है चर किसी भी मनमाने ढंग नाम। इस महत्वपूर्ण एक है। मतलब यह है कि आप हूँ सरणी है प्रत्येक तत्व तक पहुँचने की। लेकिन अगर आप रास्ते में पथ के लिए कहते हैं, इस पथ में प्रत्येक तत्व के लिए इसका मतलब है, पथ इसे कहते हैं, और उस का उपयोग करें। यह जब आप की तरह अनिवार्य है पाश के लिए एक करते हैं और आप मैं पूर्णांक का उपयोग करें। तो क्या आप के रूप में पथ इलाज कर सकते हैं incrementing है कि चर। और फिर उन लोगों में से प्रत्येक के लिए, उन कड़ियों में से प्रत्येक में जाना। हम आइटम पेज में यह भंडारण कर रहे हैं, क्योंकि इसलिए हम हर बार एक नया पेज बना रहे हैं हम इसे उपयोग। और फिर उस नए पेज के भीतर मिल span.postingtitletext, span.price, और फिर अनुभाग # postingbody। हम पहले से ही अनुभाग # postingbody कवर हम विवरण को देखा है। इसलिए हम क्रेगलिस्ट पोस्ट में देख जा सकते हैं, आप सिर्फ शीर्षक पर देख रहे हैं, आप इसे यहाँ देख सकते हैं काल postingtitletext। यह वहाँ है और यही कारण है। और फिर कीमत के लिए, आप कर सकते हैं कीमत की अवधि वर्ग के साथ इसे उपयोग। इसलिए हम भी शायद हो सकता है यूआरएल संग्रहीत करना चाहते हैं। तो हम बस यह चलने देंगे फिर, एक सरणी में स्टोर, आप देख रहे हैं, क्योंकि Craigslist पर, आप कर रहे हैं शायद, तो एक तरह से करना चाहते करने जा आप कुछ है कि हितों को देखने वापस उस साइट पर जाना है। तो तुम सिर्फ संग्रहीत करना चाहते हैं संदर्भों खातिर यूआरएल। यह सिर्फ अनिवार्य है पाश के लिए के लिए एक और सिंटेक्स। मैं बस के बजाय paths.each कर सकता है के सूचकांक के साथ रास्ते में पथ के लिए। और इस वाक्य रचना रूबी है for-- पथ, हम यहाँ तक क्या किया है प्रत्येक आइटम के लिए एक चर घोषित। और सूचकांक की तरह बर्ताव छोरों के लिए सी में मैं। तो अगर आप ट्रैक रख सकते हैं सूचकांक क्या है की। यहाँ तो सिर्फ एक है थोड़ा सुविधाजनक बात आप खुरचनी चल रहे हैं के लिए। आप पृष्ठों की सैकड़ों स्क्रैप कर रहे हैं, यह फांसी नहीं कर रहा है कि यह सुनिश्चित करना, यह सिर्फ उत्पादन होगा मैं इस पेज तक पहुँचने हूँ, और यह सुनिश्चित करने कि यह अभी भी जारी है। लेकिन हमारे उद्देश्यों के लिए है, क्योंकि एक सौ आइटम नहीं है, मैं उनमें से सिर्फ तीन का उपयोग करने के लिए जा रहा हूँ हम यहाँ समय से बाहर चलाने के लिए नहीं है कि इतनी। हम उस के लिए मिलता है लेकिन इससे पहले कि मैं अभी कर रहा हूँ आप बहुत जल्दी दिखाने के लिए जा रहा है, मैं शीर्षक outputting किया जाएगा, मूल्य, विवरण, और यूआरएल मैं scraped है कि लिंक के प्रत्येक की। और फिर यह सिर्फ है सीएसवी पुस्तकालय के लिए सिंटेक्स। आप एक सीएसवी खुला। यह मैं यह कॉल करने के लिए जा रहा हूँ क्या है। लिख सकता हूँ के साथ खुला। और फिर सीएसवी फाइल किया जाएगा कि आप सब कुछ inputting रहे हैं। इस के लिए सिर्फ एक मानसिक स्वास्थ्य की जांच है मुझे यह चल रहा है कि पता है। और यह मेरा मानसिक स्वास्थ्य की जांच है यह पूरा हो गया है कि पता करने के लिए। इसलिए मैं में एक पंक्ति में खिताब डाल रहा हूँ सीएसवी, मूल्य, यूआरएल, विवरण, सभी सीएसवी में पंक्तियों में। हम चलते हैं और चलाते हैं तो इस now-- और मैं बस मैं it-- बजाय बचाया है कि यह सुनिश्चित कर लें की बस टर्मिनल के लिए यह outputting, हम एक सीएसवी होना चाहिए उत्पादन किया है कि फ़ाइल। यहाँ तो हम सीएसवी देख सकते हैं उत्पादन किया गया है कि फ़ाइल। इस का उत्पादन होता है मैं सिर्फ भाग गया है कि पलायन। आप यहां देख सकते हैं, पहुँचने पेज 0, 1, 2, 3। ये खिताब कर रहे हैं, कीमतों, विवरण। और हम इस सीएसवी पर नजर डालें तो हम उत्पन्न किया है कि फ़ाइल, आप अपने यहाँ outputted देख सकते हैं। यह Excel नहीं है, इसलिए यह नहीं है पंक्तियों और स्तंभों में स्वरूपित। लेकिन अगर आप सोच भी कैसे सकते हैं यह प्रारूपित किया जा सकता है। सीएसवी अल्पविराम से अलग मूल्यों के लिए खड़ा है। तो अगर आप इस एक पंक्ति हो सकता है कल्पना कर सकते हैं। और प्रत्येक अल्पविराम होगा एक अलग कॉलम संकेत मिलता है। सिर्फ चेतावनी का एक शब्द-- कभी कभी आप कर रहे हैं अल्पविराम के साथ एक बहुत बातें scraping। आप outputting रहे हैं तो अगर एक सीएसवी फाइल करने के लिए यह, यह नहीं हो सकता है उत्पादन आप सोच सकते हैं जिस तरह से। तो यह है कि अनिवार्य रूप से सभी के लिए है मूल HTML स्क्रैप करने के लिए नहीं है Nokogiri के साथ पृष्ठों। इंटरनेट जा रहा है तो अभिनव यह ऊपर आ गया है के रूप में एक और स्वचालित और जीयूआई के साथ कम मजबूत यद्यपि संस्करण, विभिन्न वेबसाइटों स्क्रैप का संस्करण। और हमारे उद्देश्यों के लिए मैं का प्रदर्शन किया जाएगा किमोनो नामक एक क्रोम एक्सटेंशन। और तुम सब करना है आप नेविगेट है आप परिमार्जन करने के लिए चाहते हैं कि पेज के लिए। आप ब्याज की एक क्षेत्र पर क्लिक करें। तुम क्षेत्रों जांचना, यह स्वचालित रूप से होगा क्योंकि यह सोचता है कि क्या पता लगा आप स्क्रैप होना चाहता हूँ, और फिर आप बस एक एपीआई पैदा करते हैं। अगर हम थे तो उस पर प्रदर्शित करने के लिए क्रेगलिस्ट, यह वास्तव में काम नहीं करेगा। और यह मैं करने के लिए वापस जा रहा था क्या है यह के रूप में मजबूत नहीं किया जा रहा बारे में कह रही। यह मुसीबत एपीआई बनाने की है। लेकिन एक प्रदर्शन के रूप में यह क्या करना होगा, आप क्रोम एक्सटेंशन स्थापित करते हैं तो, तुम सब करना है तो आप उस पर क्लिक करें। यह पेज Kimonofies, और फिर आप आप स्क्रिप्ट करना चाहते बात पर क्लिक करें। इसलिए मुझे लगता है पर क्लिक करने के लिए गए थे कि, यह प्रकाश डाला जाएगा क्या यह सोचता है कि मैं चाहता हूँ उस पृष्ठ बंद scraping किया। इसलिए हो सकता है कि मैं इस लिस्टिंग कहते हैं। यह मैं का चयन किया है कि कितने आइटम है। और मैं सिर्फ इस बात की पुष्टि या कुछ इनकार नहीं कर सकता अन्य सुझाव लिस्टिंग के इसे जोड़ने के लिए पाने के लिए क्या scraped किया जाएगा। तो अब हम वहाँ देख सकते हैं एक सौ आइटम का चयन किया। मैं एक और क्षेत्र है चाहता हूँ कि मैं भी इस से संबंधित है जो परिमार्जन, मैं कीमत परिमार्जन करने के लिए कहना चाहते हैं के रूप में अच्छी तरह से है, तो मैं वही कर सकता है। यहाँ तो यह है कि कैसे एक प्रदर्शन है बहुत कम मजबूत है, अब यह है, क्योंकि बजाय शहर उठा मैं चाहता हूँ कि की सिर्फ कीमत। और अब यह 200 चीजों को उठाया है। तुम वापस जाओ और हटा सकते हैं। आप फिर से कोशिश कर सकते हैं। लेकिन कोई गारंटी। यह इस कभी कभी यह कैसे काम करता है। आप यहां देख सकते हैं, यह अब यहां 96 तक कहते हैं। यह लिंक का सबसे उठाया है आप चाहते हैं कि परिमार्जन, लेकिन नहीं करने के लिए जरूरी उन सभी को। किमोनो की एक और उपयोगी उपकरण है, हालांकि आप उन्नत सुविधाओं के लिए जा सकते है यहाँ, उन्नत करने के लिए जाना है, और यह आपको दिखाई देगा अनूठा का टूटना एचटीएमएल उपयोग करने का तरीका आप परिमार्जन करना चाहते हैं कि टैग। तो लिस्टिंग के लिए, आप यहाँ पर नजर डालें तो, आप div पी सी अवधि के अंतराल का उपयोग करते हैं, आप वास्तव में बस का उपयोग कर सकते हैं अपने Nokogiri कोड में यह, जहां हम span.txt था पहले लिस्टिंग के प्रत्येक पहुँचने के लिए। मैं सिर्फ पाठ चाहते हैं लिस्टिंग के भीतर, मैं कर सकता इनपुट div अंतरिक्ष पी अंतरिक्ष काल अंतरिक्ष काल अंतरिक्ष एक, और यह एक ही प्रभाव को प्राप्त होता है। और अगर आप उन लोगों के लिए रुचि रखते हैं नियमित अभिव्यक्ति का उपयोग करने में, यह भी है कि आप नियमित रूप से देने के लिए होता है निवेश करने के लिए स्ट्रिंग की अभिव्यक्ति के प्रकार चीजों को खोजने के लिए आप को खोजने की कोशिश कर रहे हैं। तो एक और शांत सुविधा नहीं है आप पृष्ठ पर अंक लगाना कर सकते हैं जहां किमोनो की, जो केवल मैं नोच कर सकते हैं नहीं है इस पेज के परिणाम, मैं इस छोटे पर क्लिक कर सकते हैं यहां बटन, अंक लगाना, बटन कि होता निर्दिष्ट अगले पृष्ठ पर मुझे लेने, और फिर यह सिर्फ इतना है कि पता चल जाएगा यह अगले पृष्ठ पर पुनरावृति कर सकते हैं, और फिर the-- रूप में लंबे समय के सभी परिमार्जन यह कोर्स की एक ही प्रारूप के रूप में साथ ही उन लिंक के सभी पलायन। किमोनो नहीं चाहता है क्योंकि ऐसा करने के लिए हम क्या किया है, Craigslist के साथ काम मैं हार्वर्ड क्रिमसन Kimonofied दिया है। मैं की तरह के कुछ बाहर खींच लिया है शीर्ष लेख, यहां इस बात की पुष्टि चित्रित किया। इनमें से सब कहते हैं। मैं इस एपीआई संकलित किया है समय से आगे तुम्हारे लिए। लेकिन आप क्या करेंगे अन्यथा क्या आप बस क्लिक करें ठीक होता है। अपने एपीआई विवरण में दर्ज करें। इसे स्थापित करने के लिए या तो स्वचालित या मैनुअल क्रॉल। तो अगर आप अद्यतन सकता आपके डेटा हर 15 मिनट, साप्ताहिक, दैनिक, जो आप चाहते हैं। अपने एपीआई का नाम। एपीआई बनाएँ। अपने लाभ के लिए, मैं बना लिया है पहले से ही सामने पृष्ठ एपीआई क्रिमसन। तो तुम सिर्फ एक बनाने किमोनो पर खाता है, और यह आप के लिए अपने सभी एपीआई की दुकान है। तो अनिवार्य रूप से वह सब है आपके अलग अलग scrapes। हम यहाँ देखो तो, अगर यह है मैं एकत्र किया है कि राय लिंक। ये विशेष रुप से प्रदर्शित कर रहे हैं मैं एकत्र किया है कि लिंक। और इन सबसे अधिक पढ़ा रहे हैं मैं एकत्र किया है कि लिंक इस सबसे हाल ही एपीआई भगदड़ से। आप यहाँ देख सकते हैं तो, इन, विशेष रुप से होगा इन विचारों होगा, इस उदाहरण में, जो मैं उन सभी को संयुक्त है एक संग्रह में। लेकिन तुम सिर्फ यह आसपास के साथ खेलते हैं एक छोटा सा है, आप इसे विभाजित कर सकते हैं और फिर भी इसे विभाजित आप जब तक करना चाहते हैं स्वरूपण के रूप में थोड़ा अलग है। बस इस के साथ चारों ओर खेलने के लिए, क्रॉल, downsides की एक स्थापित आप केवल ऊपर क्रॉल कर सकते है एक समय में 25 पृष्ठों के लिए। यही कारण है कि सीमित कारकों में से एक है। लेकिन यहाँ, आप यह निर्धारित करता है, तो मैनुअल क्रॉल करने के लिए, इस आप यह कैसे कह सकते है अपने डेटा को अद्यतन करने के लिए। और यहाँ आप अपने क्रॉल इतिहास देख सकते हैं सब कुछ के आप रेंगा किया है। और तुम लोग वापस जा सकते हैं, साइन अप, सब अलग अलग तरीकों के साथ खेलने के आसपास कि आप संशोधित करने और अपने डेटा का उपयोग कर सकते हैं। किमोनो को स्थापित किया जा सकता लिंक के अंदर लिंक परिमार्जन। और अगर आप पहले से ऐसा ही करेंगे, लिंक की सूची स्क्रैप, और फिर एक के रूप में है कि एपीआई का उपयोग एक और एपीआई के लिए बिंदु से कूद आप स्क्रिप्ट बना है। लेकिन यह है कि अधिक से अधिक जटिल है क्या हम आज में शामिल होने के लिए जा रहे हैं। तो यह है कि किमोनो है। हम पेशेवरों के बारे में बात करेंगे और Nokogiri और किमोनो की विपक्ष। Nokogiri, यह वास्तव में तेजी है। यह परीक्षण करने के लिए आसान है। तुम बस के लिए कुछ भी कर सकते हैं डालता कंसोल, आसान विन्यस्त करने के लिए। आप वास्तव में क्या तय कर सकते हैं आप परिमार्जन और स्टोर करने के लिए चाहते हैं। कोई पेज सीमा नहीं है। मैं वास्तव में ऐसा परिमार्जन करने के लिए इसका इस्तेमाल किया 1800 में दक्षिण अफ्रीका के स्कूल वेबसाइटों मैंने किया था कि एक इंटर्नशिप के लिए ईमेल के लिए। तो यह है कि संभव है, सबसे अच्छा अभ्यास यद्यपि स्क्रिप्ट को विभाजित करने के लिए किया जाएगा। यह तो विफल रहता है, क्योंकि अगर आप कुछ भी नहीं मिलता है। लेकिन अगर आप एक सौ करते हैं, शायद एक समय में 200 पृष्ठों, तो आप में से कुछ का मौका दिया है, कम से कम विशेष रूप से, टुकड़ों में यह हो रही है अगर आप बुरा इंटरनेट है। दुर्भाग्य से यह केवल HTML नोच कर सकते हैं। इसलिए यदि आप गतिशील रूप से लोड pages-- और मैं आपको एक उदाहरण दिखाता हूँ एक second-- में नाव की तरह Nokogiri दुर्भाग्य से कि परिमार्जन नहीं कर सकते हैं। लेकिन किमोनो भी प्रयोग करने में आसान है। तुम्हें देखा था के रूप में, यह अनिवार्य है एक बिंदु पर क्लिक करें। यह जावास्क्रिप्ट नोच कर सकते हैं। दुर्भाग्य से, एक अधिकतम वहाँ आप नोच कर सकते हैं कि कितने पृष्ठों के लिए। कभी कभी यह एक छोटी सी है विन्यस्त करने के लिए मेहनत की है। यह भ्रमित हो जाता है। लेकिन यह निश्चित रूप से है कुछ विचार करने के लिए आप एक करने की कोशिश नहीं कर रहे हैं सुपर मजबूत पोषणीय परिमार्जन। आप सिर्फ प्राप्त करना चाहते हैं जल्दी से एक पेज के बंद सब कुछ, तो किमोनो एक सच है अच्छा उपकरण का उपयोग करने के लिए। जैसा कि मैंने पहले उल्लेख किया है, वहाँ किमोनो की उन्नत सुविधा कि कैसे करने के लिए आपको पता चलता है अनूठा एचटीएमएल का उपयोग यहां तक ​​कि सुपर उपयोगी है जो तत्व है, आप Nokogiri में काम कर रहे हैं। तो अगर हम के लिए, कश्ती साइट पर जाना उदाहरण के लिए, आप वहाँ देख सकते है- या हो सकता है आप नहीं देख सकते हैं। लेकिन मैं कश्ती के लिए आप URL दिखाने के लिए, यह वास्तव में सिर्फ स्रोत यूआरएल है। यह जा रहा है के लिए URL पहले है जो कुछ जावास्क्रिप्ट लिपियों द्वारा संशोधित कि वे पर जा रहा है। और यह अलग लग रहा है तत्व का निरीक्षण से। तो क्या आप के माध्यम से जाने के लिए और अगर आप निरीक्षण तत्व मैच स्रोत कोड के लिए कोड है, यह वास्तव में अलग होने जा रहा। और ऐसा क्यों Nokogiri अनिवार्य है गतिशील रूप से लोड साइटों परिमार्जन नहीं कर सकते हैं। Nokogiri है क्योंकि स्रोत यूआरएल स्क्रैप, किमोनो वास्तव में है, जबकि आप अनिवार्य रूप से क्या कर रहे हैं स्क्रैप चुनें तत्व में देखकर। इसलिए मुझे लगता है के माध्यम से और मैं जाने के लिए अगर कोशिश करते हैं और Kimonofy कश्ती, मैं वास्तव में के माध्यम से जा सकते हैं और कीमत का चयन करें। यह थोड़ा कठिन है और इस मामले में, यह है वास्तव में इस कीमत को देखकर इन से अलग। आप configure-- सकते हैं, जबकि तो या इस गतिशील रूप से लोड नहीं कर रहे थे, आप Nokogiri विन्यस्त कर इन सभी को पाने के लिए। स्वरूपण थोड़ा है, क्योंकि इस लिस्टिंग के लिए अलग-अलग यह बाकी की तुलना में है के रूप में उनमें से हैं, और आप यहाँ देख सकते हैं यह वास्तव में चला गया है और चयनित सभी उड़ान कीमतों। हो सकता है कि मैं चयन करना चाहते हैं के रूप में अच्छी तरह से उड़ान का समय है। और मुझे लगता है के माध्यम से जाना जा सकता है और एक तरह से है कि विन्यस्त करें। मैं नहीं चाहता कि। मैं सिर्फ अगली उड़ान के लिए समय चाहते हैं। और फिर इनमें से एक जोड़े के बाद के माध्यम से जा रहे हैं, यह चित्र हो जाता है। तो किमोनो बहुत चालाक। यह बस के रूप में काफी मजबूत नहीं है। कुछ अन्य कर रहे हैं आप उपयोग कर सकते हैं कि विकल्प। और मैं यहाँ आप उन्हें दिखा देंगे। आप में और अधिक आराम कर रहे हैं बजाय शायद रूबी का अजगर, एक पुस्तकालय है ब्यूटीफुल सूप बुलाया। आप उसका इस्तेमाल कर सकते हैं। यह Nokogiri के समान है। यह कुछ अधिक सुविधाएँ है। आप एचटीएमएल टैग मिल सकता है और तो ऊपर ले जाएँ या बग़ल में ले जाते हैं। PyQt है। यह वास्तव में गतिशील नोच कर सकते हैं साइटों, यह एक तरह से है, क्योंकि होने का दिखावा करता है कि एक वेबकिट है वहाँ वास्तव में बिना एक ब्राउज़र एक ब्राउज़र की जा रही है। इसलिए यह सभी के लिए इंतजार करना होगा जावास्क्रिप्ट तो पहले से लोड है, और करने के लिए में जाने के लिए और कोशिश करते हैं और साइट परिमार्जन। आप रूबी के साथ रहना चाहते हैं, तो आप Nokogiri से एक स्तर तक जा सकता है। आप के साथ Capybara उपयोग कर सकते हैं एक Poltergeist आवरण। और यह वास्तव में कर सकते हैं अनिवार्य रूप से एक ही बात करना PyQt, जो के रूप में यह एक वेबकिट है। इसके लिए इंतजार कर रहा है जावास्क्रिप्ट पहले लोड करने के लिए। यदि आपके पास पर्याप्त इसके साथ बेला के आसपास हैं, आप भी इसे चीजों पर क्लिक करने के लिए मिल सकता है। एक लिंक है कि अगर वहाँ तो यह है कि एक क्लासिक href जहां नहीं है पथ आसानी से सुलभ है, और यह पता लगाता है कि कुछ जावास्क्रिप्ट बात है एक क्लिक, आप वास्तव में ऐसा कर सकते हैं। और अधिक लोकप्रिय पुस्तकालय एक उपयोगकर्ता अनुकरण करने के लिए PhantomJS है जो जावास्क्रिप्ट में है। यह स्पष्ट रूप से गतिशील नोच कर सकते हैं साइटों यह अनिवार्य है क्योंकि क्रोम होने का नाटक यूजर इंटरफेस के बिना। और फिर, बेशक सबसे मजबूत, लेकिन धीमी विकल्प, एक सेलेनियम ब्राउज़र स्वचालन है। और दुर्भाग्य से, आप होना नहीं जा रहे हैं अपने CS50 आईडीई के भीतर ऐसा करने में सक्षम। अनिवार्य रूप से क्या क्योंकि यह करता है, यह आपके क्रोम जूते है फ़ायरफ़ॉक्स, जो कुछ ब्राउज़र आप उपयोग करना चाहते हैं, और यह अपने माउस शायद पटरियों आप में टाइप जो कुछ भी आंदोलन, और यह बस की तरह इस प्रक्रिया को स्वचालित। तो यह एक तरह के रूप में विकसित किया गया वेबसाइट स्वचालन परीक्षण उपकरण। लेकिन बहुत से लोगों का उपयोग वेबसाइटों परिमार्जन करने के लिए सेलेनियम वे अन्यथा एक है कठिनाई का बहुत scraping इन अन्य, तेजी से उपकरणों में से कुछ के साथ। तो यह है कि मैं वेब scraping के लिए मिल गया है। मज़े करो। दर्शकों: प्रश्न। रॉबर्ट KRABEK: हाँ। दर्शकों: हैश करने के लिए एक तंत्र है वेबसाइट इतनी है कि आप मूल रूप से कर सकता है पर बाद में यह माध्यम से जाना। रॉबर्ट KRABEK: हाँ। तो हम में रखा, हमारे उदाहरण के लिए, उन दोनों के लिए, हम डॉक्टर में पूरी वेबसाइट डाल दिया। और तो आप वास्तव में सिर्फ ले सकता है चर डॉक्टर एक फाइल करने के लिए इसे लिखने और। मैं चाहता था तो, अगर मैं कर सकता एक HTML फ़ाइल के रूप में इसे बाहर लिखते हैं, और का उपयोग कर तो बजाय OpenURI और एक कर्ल अनुरोध, तो मैं सिर्फ डॉक्टर खोल सकता है एचटीएमएल और फिर उस के लिए खोज करते हैं। दर्शकों: लेकिन आप की रक्षा कर सकते हैं ऑनलाइन अनुभव की तरह आप ऑफ़लाइन करना है। उदाहरण के लिए। आप कब कई घंटे के लिए उड़ान, मैं मूल रूप से संग्रह करना चाहते हैं पूरी वेबसाइट। [अश्राव्य] रॉबर्ट KRABEK: हाँ, यह exactly-- है तो सचमुच क्या कर रहा है यह यह सब कुछ ले जा रहा है है कि इस URL पर होगा। हम कर्ल भागा तो, अगर यह बात है इस HTML के सभी लेने, और यह यह भंडारण है चर डॉक्टर के अंदर। तो फिर आप क्या कर सकते हैं जो कुछ भी आप डॉक्टर के साथ क्या करना चाहते हैं। आप एक फाइल करने के लिए उत्पादन में यह कर सकते हैं। दर्शकों: लेकिन यह जुड़ा हुआ नहीं है। यह गतिशील नहीं है। यह ठीक है, नहीं पुनरावर्ती है? तुम्हे समझ में आया मैंने जो कहा? मैं मूल रूप से एक तरह से एक हैश करने के लिए कोशिश कर रहा हूँ अपने हार्ड ड्राइव पर पूरी वेबसाइट इसलिए मैं मूल रूप से यह कर सकता है कि इंटरनेट के बिना कई घंटे के लिए। रॉबर्ट KRABEK: ठीक है। मैं had-- तो यदि ऐसा है तो, जहां मेरी फाइल आई / ओ है? इसलिए इस फाइल को मैं / हे है। तो बजाय कहना इस कारण, मैं इस craigslist.html कहते हैं। मुझे लगता है कि ऊपर खुला था। मैं इस बारे में कहते हैं डॉक्टर था। मैं फाइल को बंद करें। और फिर सिर्फ इसलिए CS50 आईडीई कि, बादल पर जो भी है। मैं यहां जा सकते हैं। मैं फाइल को डाउनलोड कर सकते हैं। और फिर उस मेरे हार्ड ड्राइव पर होगा। तो आप इसे इस तरह से कर सकते हैं। आप घर पर हैं या, यदि का उपयोग नहीं CS50 आईडीई, उदात्त या कुछ और की तरह, इस वजह से, और भी आसान है इस स्थानीय स्तर पर सभी उपलब्ध है इंटरनेट से जुड़ा हुआ नहीं। दर्शकों: मैं देख रहा हूँ। यह एक विशेष समस्या के लिए है। इतना है कि आप बारी बारी से यह कर सकते हैं आप कई परतों गहरी तरह बात की जाना है? रॉबर्ट KRABEK: मैं फ़ोल्डरों डाउनलोड कर सकते हैं अगर है कि के रूप में अच्छी तरह से, आप क्या कह रहे हैं। दर्शकों: हाँ। रॉबर्ट KRABEK: कूल।