विषयसूची:

ESP8266/ESP32 के साथ डेटा स्क्रैप करना: 7 कदम
ESP8266/ESP32 के साथ डेटा स्क्रैप करना: 7 कदम

वीडियो: ESP8266/ESP32 के साथ डेटा स्क्रैप करना: 7 कदम

वीडियो: ESP8266/ESP32 के साथ डेटा स्क्रैप करना: 7 कदम
वीडियो: Install ChatGPT on Nodemcu ESP8266!! Passable? #shortvideos #electrical #nodemcu #soelectronics 2024, जुलाई
Anonim
ESP8266/ESP32 के साथ डेटा स्क्रैप करना
ESP8266/ESP32 के साथ डेटा स्क्रैप करना
ESP8266/ESP32. के साथ डेटा स्क्रैप करना
ESP8266/ESP32. के साथ डेटा स्क्रैप करना

क्या आप कभी भी अपने Arduino प्रोजेक्ट्स के लिए डेटा प्राप्त करना चाहते हैं, लेकिन इसके लिए कोई सार्वजनिक API नहीं है? या इंस्टाग्राम एपीआई जैसे मामलों में जहां के लिए सेटअप प्रक्रिया बहुत सुविधाजनक नहीं है?

इस निर्देश में हम आपके ESP8266 या ESP32 प्रोजेक्ट्स के लिए किसी वेबसाइट से डेटा स्क्रैप करने के 2 अलग-अलग विकल्पों को देखने जा रहे हैं।

चरण 1: वीडियो देखें

Image
Image

मैंने एक वीडियो बनाया है जो इस निर्देश के समान ही कवर करता है, इसलिए यदि आप रुचि रखते हैं, तो कृपया इसे देखें!

चरण 2: शुरू करने से पहले

हमारे शुरू करने से पहले
हमारे शुरू करने से पहले
हमारे शुरू करने से पहले
हमारे शुरू करने से पहले

बस एक सिर ऊपर है कि जिस डेटा को मैं स्क्रैप करने के बारे में बात कर रहा हूं वह सार्वजनिक सामना करने वाला डेटा है और इसके लिए किसी प्रमाणीकरण की आवश्यकता नहीं है। तो उदाहरण के लिए कहें, मेरी सटीक YouTube ग्राहक संख्या केवल निर्माता स्टूडियो के अंदर मेरे लिए उपलब्ध है, इसलिए डिवाइस को एक अनुरोध करना होगा जो इसे लोड करने के लिए मेरे रूप में प्रमाणित हो। इस प्रकार के अनुरोध इस वीडियो के दायरे से बाहर होंगे। यह जांचने के लिए एक त्वरित परीक्षण है कि पृष्ठ को एक गुप्त विंडो में लोड करने का प्रयास करना है क्योंकि यह स्वचालित रूप से आपको किसी भी साइट पर लॉग इन नहीं करेगा।

इस निर्देश में शामिल तकनीकों के लिए हमें कुछ डेवलपर टूल का उपयोग करना होगा जो ब्राउज़र में उपलब्ध हैं। मैं उन्हें फ़ायरफ़ॉक्स के साथ प्रदर्शित कर रहा हूँ, लेकिन मुझे पता है कि कुछ क्रोम के समान उपकरण हैं और मुझे यकीन है कि अन्य ब्राउज़रों के पास भी हैं।

चरण 3: गैर सार्वजनिक एपीआई (स्पॉयलर: इंस्ट्रक्शंस में एक है!)

गैर सार्वजनिक एपीआई (स्पॉयलर: इंस्ट्रक्शंस में एक है!)
गैर सार्वजनिक एपीआई (स्पॉयलर: इंस्ट्रक्शंस में एक है!)
गैर सार्वजनिक एपीआई (स्पॉयलर: इंस्ट्रक्शंस में एक है!)
गैर सार्वजनिक एपीआई (स्पॉयलर: इंस्ट्रक्शंस में एक है!)
गैर सार्वजनिक एपीआई (स्पॉयलर: इंस्ट्रक्शंस में एक है!)
गैर सार्वजनिक एपीआई (स्पॉयलर: इंस्ट्रक्शंस में एक है!)

पहला तरीका जो हम देखेंगे वह है एक गैर-सार्वजनिक एपीआई का उपयोग करना। यह हमेशा उपलब्ध नहीं होगा, लेकिन यदि ऐसा है तो निश्चित रूप से आपको इसका उपयोग करने का लक्ष्य रखना चाहिए। जिसे मैं "गैर-सार्वजनिक एपीआई" कह रहा हूं, वह मूल रूप से वह जगह है जहां एक साइट अपनी वेबसाइट पर पर्दे के पीछे एक अनजाने एपीआई का उपयोग कर रही है ताकि हम जो डेटा प्राप्त करना चाहते हैं उसे प्राप्त कर सकें।

इसका उपयोग करने के लिए पसंदीदा विकल्प होने के कुछ कारण हैं।

  1. सबसे बड़ा फायदा यह है कि वेबपेज जितनी बार बदलने की संभावना नहीं है, अगर आप वेब पेज एचटीएमएल से सीधे डेटा स्क्रैप करते हैं, तो हर बार जब वे साइट में बदलाव करते हैं, तो आपकी पार्सिंग टूट सकती है।
  2. यह सामान्य रूप से अधिक डेटा कुशल है। जब आप किसी वेबपेज को स्क्रैप कर रहे होते हैं तो आप मूल रूप से संपूर्ण HTML पृष्ठ को डाउनलोड कर रहे होते हैं ताकि उसमें से जानकारी के टुकड़े निकाले जा सकें, एपीआई केवल डेटा पॉइंट लौटाने जा रहे हैं, इसलिए आम तौर पर बहुत छोटे अनुरोध होंगे।
  3. आमतौर पर पार्स करना आसान होता है। आम तौर पर एपीआई जेएसओएन प्रारूप में डेटा लौटाते हैं जो पार्स करने के लिए सीधा है, यह विशेष रूप से सच है यदि आप डेटा के कई टुकड़े निकाल रहे हैं।

हमें पहले यह पता लगाना होगा कि वेबपेज इस तरह के सेटअप का उपयोग करता है या नहीं। सबसे बड़ा सुराग यह है कि यदि साइट रीयल-टाइम में मान को अपडेट करती है जैसे कि किकस्टार्टर पर करती है, लेकिन भले ही ऐसा न हो, फिर भी उम्मीद है कि यह इस सेटअप का उपयोग कर सकता है। अनुदेशक अपनी साइट के लिए कुछ डेटा लाने के लिए एक गैर-सार्वजनिक एपीआई का उपयोग करते हैं, भले ही यह वास्तविक समय में ताज़ा न हो।

यह जांचने के लिए कि क्या साइट इस सेटअप का उपयोग कर रही है, अपने ब्राउज़र के डेवलपर मोड में प्रवेश करें, मुझे ऐसा करने का सबसे आसान तरीका पृष्ठ पर राइट क्लिक करना है और "तत्व का निरीक्षण करें" का चयन करना है।

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

आप आमतौर पर "json" प्रकार वाले लोगों को देखना चाहते हैं। यहां बहुत सारे अनुरोध हो सकते हैं, इसलिए यह प्रकार के आधार पर छाँटने में मदद कर सकता है। आप देख सकते हैं कि किकस्टार्टर अभियान पृष्ठ पर यह बहुत स्पष्ट है कि यह इस सेटअप का उपयोग कर रहा है क्योंकि आप "stats.json" समापन बिंदु पर लगातार अनुरोध किए जा रहे हैं। इंस्ट्रक्शंस के लेखक पेज पर (उदाहरण के लिए मेरा "https://www.instructables.com/member/witnessmenow/" है), वे लगातार अनुरोध नहीं करते हैं, लेकिन आप दूसरों के बीच "शोऑथरस्टैट्स" एंडपॉइंट के अनुरोध को छिपा हुआ देख सकते हैं।

इस अनुरोध के बारे में अधिक जानकारी प्राप्त करने के लिए, आप इस पर क्लिक कर सकते हैं। अनुरोध को दोहराने के लिए आपको यहां से सभी आवश्यक जानकारी प्राप्त करने में सक्षम होना चाहिए। लेकिन ऐसा करने से पहले आप पहले दोबारा जांचना चाहते हैं कि इसमें वह डेटा है जो आप चाहते हैं। प्रतिक्रिया टैब पर क्लिक करें और देखें कि क्या डेटा है।

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

JSON डेटा को पार्स करने के लिए मैं अधिकांश परिदृश्यों में ArudinoJSON का उपयोग करने की सलाह दूंगा, यदि यह ऐसा कुछ है जिसके बारे में आप एक निर्देश देना चाहते हैं, तो बस मुझे बताएं!

चरण 4: डेटा को सीधे स्क्रैप करना

सीधे डेटा स्क्रैप करना
सीधे डेटा स्क्रैप करना
सीधे डेटा स्क्रैप करना
सीधे डेटा स्क्रैप करना
सीधे डेटा स्क्रैप करना
सीधे डेटा स्क्रैप करना

आगे हम सीधे वेबपेज से डेटा को स्क्रैप करने पर विचार करेंगे, यह डिवाइस पर पूर्ण वेबपेज का अनुरोध कर रहा है और उस डेटा को पार्स कर रहा है जिसे हम चाहते हैं। मैंने पहले ही उल्लेख किया है कि इस पद्धति पर गैर-सार्वजनिक एपीआई के फायदे हैं, लेकिन कभी-कभी इसकी आवश्यकता होती है!

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

मूल वेब पेज कोड देखने के लिए आप पेज पर राइट क्लिक कर सकते हैं और "स्रोत देखें" का चयन कर सकते हैं। फिर आप अपने इच्छित विशेष डेटा की खोज करना चाहते हैं, इसलिए टीमट्री उदाहरण में जब हम वर्तमान दान गणना की खोज करते हैं, तो हम देख सकते हैं कि वास्तविक गणना गणना तत्व की डेटा-गिनती संपत्ति में संग्रहीत है, यह वह जगह है जहां हमें इसकी आवश्यकता है से डेटा स्क्रैप करें।

आपको एक खोज स्ट्रिंग ढूंढनी होगी जो आपको आपके डेटा तक ले जाए, डिवाइस के लिए कोडिंग करने से पहले इसका पता लगाना बहुत आसान है। इस उदाहरण के लिए, "डेटा-गणना\" की खोज करने से मुझे वह डेटा मिलता है जो हम चाहते हैं, जो एकदम सही है। हमें चिंता करने की ज़रूरत नहीं है कि यह पृष्ठ के अन्य स्थानों में भी मेल खाता है, क्योंकि यह पहले शीर्ष पर पहुंचेगा। यदि आपको तीसरे को हिट करने की आवश्यकता है, तो आप इसे केवल पहले 2 हिट करने के लिए अनदेखा करने के लिए प्रोग्राम कर सकते हैं।

यदि हम टीमट्रीज़ उदाहरण पर एक नज़र डालते हैं, जैसे पहले हमने प्रतिक्रिया शीर्षलेखों को छोड़ दिया है और अब प्रतिक्रिया के मुख्य भाग को देख रहे हैं (जो कि वेबपेज है)। क्लाइंट से जो वापस आता है वह डेटा की एक धारा है। हम अपनी खोज क्वेरी तक किसी भी चीज़ की परवाह नहीं करते हैं, इसलिए हम एक क्लाइंट करते हैं। ढूँढें। यदि इसे खोज क्वेरी मिलती है तो यह सही हो जाएगी और यह स्ट्रीम को क्वेरी के अंत में ले जाएगी। स्ट्रीम से उपलब्ध अगली चीज़ वह डेटा होगी जिसकी हम तलाश कर रहे हैं, लेकिन इस मामले में हम अनिश्चित हैं कि डेटा कितना लंबा होगा, लेकिन हम जानते हैं कि यह स्ट्रीम में हमारे वर्तमान स्थान और अगले उल्टे अल्पविराम के बीच की सभी जानकारी है।. हम इसे "client.readBytesUntil" का उपयोग करके प्राप्त कर सकते हैं, जो जो कहता है वह करता है, यह बाइट्स को एक बफर में पढ़ता है जब तक कि यह निर्दिष्ट क्वेरी को हिट नहीं करता। बस सुनिश्चित करें कि आप जिस बफर में पढ़ रहे हैं वह सभी डेटा को पकड़ने के लिए काफी बड़ा है, मुझे लगता है कि हम यहां 32 के साथ काफी सुरक्षित हैं!

यदि आपके पास आवश्यक सभी डेटा है, तो आपको अब डेटा पढ़ने की आवश्यकता नहीं है। मैंने यहां कनेक्शन बंद नहीं किया क्योंकि यह ESP8266 पर कोई समस्या पैदा नहीं करता था, ऐसा लगता है कि यह ESP32 के साथ समस्या पैदा करता है, इसलिए मैंने एक क्लाइंट जोड़ा। पूरी तरह से ईमानदार होने के लिए, मुझे यकीन नहीं है कि मैंने इसे विधि के शीर्ष पर क्यों रखा है, मुझे लगता है कि आपके पास वांछित डेटा होने के बाद इसे बंद करने के लिए और अधिक समझदारी होगी।

चरण 5: बाहरी सर्वर का उपयोग करके डेटा को स्क्रैप करना:

बाहरी सर्वर का उपयोग करके डेटा को स्क्रैप करना
बाहरी सर्वर का उपयोग करके डेटा को स्क्रैप करना
बाहरी सर्वर का उपयोग करके डेटा को स्क्रैप करना
बाहरी सर्वर का उपयोग करके डेटा को स्क्रैप करना

स्पर्श करने के लिए सिर्फ एक अन्य विषय, माइक्रो नियंत्रक की तुलना में NodeJS जैसे नियमित कंप्यूटर आधारित वातावरण पर पार्स करने के लिए बहुत बेहतर उपकरण हैं, इसलिए कभी-कभी यह एक ऐसी सेवा बनाने के लिए समझ में आता है जो एक वेबपेज से डेटा प्राप्त करती है और एक सरल प्रदान करती है आपके ESP8266 या ESP32 के लिए समापन बिंदु। इसका एक उदाहरण क्राउडसप्लाई पेज को स्क्रैप कर रहा था ताकि यह पता लगाया जा सके कि कितने TinyPICO बेचे गए थे। इसे सीधे ESP8266 या ESP32 पर प्राप्त करना संभव हो सकता है, लेकिन चूंकि यह कई अलग-अलग तत्वों पर कई अलग-अलग डेटा बिंदुओं को पार्स कर रहा था, इसलिए यह जटिल होता।

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

चरण 6: उपयोग की सीमाएं

उपयोग की सीमाएं
उपयोग की सीमाएं

एक चीज जो इन सभी दृष्टिकोणों को संभावित रूप से प्रभावित कर सकती है, वह है साइटों की उपयोग की सीमा का उल्लंघन। नियमित एपीआई में यह आमतौर पर बहुत अच्छी तरह से प्रलेखित होता है कि आप प्रति मिनट या प्रति दिन कितने अनुरोध कर सकते हैं और आप इसके आधार पर अपने प्रोजेक्ट अनुरोधों को सीमित कर सकते हैं। जब आप स्क्रैप कर रहे होते हैं, तो आप नहीं जानते कि ये सीमाएं क्या हैं, इसलिए आप उन्हें मारने और संभावित रूप से अवरुद्ध होने का जोखिम उठाते हैं। मैं इसे सीमित करने के बारे में कोई सटीक सलाह नहीं दे सकता, इसलिए आप उनकी अच्छी किताबों में बने रहें, लेकिन मुझे लगता है कि किकस्टार्टर जैसे मामलों के अलावा, हर मिनट के तहत कुछ भी अक्सर होगा, जहां वे हर कुछ सेकंड में अनुरोध करते हैं।

चरण 7: पढ़ने के लिए धन्यवाद

उम्मीद है कि अगर आप अपने ESP8266 या ESP32 पर वेबपेजों से सीधे डेटा पार्स करने में रुचि रखते हैं तो इस वीडियो ने मदद की है। क्या आपके पास उस विषय पर कोई अन्य प्रश्न हैं जिसे मैंने कवर नहीं किया है? कृपया मुझे नीचे दी गई टिप्पणियों में बताएं, या मेरे साथ और मेरे डिस्कॉर्ड सर्वर पर अन्य निर्माताओं के एक समूह में शामिल हों, जहां हम इस विषय या आपके किसी अन्य निर्माता से संबंधित चर्चा कर सकते हैं, लोग वास्तव में वहां मददगार हैं इसलिए यह हैंग होने के लिए एक शानदार जगह है बाहर

मैं अपने जीथब प्रायोजकों को भी बहुत-बहुत धन्यवाद देना चाहता हूं जो मैं जो करता हूं उसका समर्थन करने में मदद करता हूं, मैं वास्तव में इसकी सराहना करता हूं। यदि आप नहीं जानते हैं, तो जीथब पहले वर्ष के लिए प्रायोजन का मिलान कर रहा है, इसलिए यदि आप प्रायोजन बनाते हैं तो वे अगले कुछ महीनों के लिए इसका 100% मिलान करेंगे।

पढ़ने के लिए धन्यवाद!

सिफारिश की: