यह सर्वविदित है कि वर्ल्ड वाइड वेब में भारी उपयोगी डेटा होता है। हालांकि, किसी भी प्रकार के विश्लेषण करने से पहले हमें डेटा को माइक्रोसॉफ्ट एक्सेल में आयात करना होगा। इस तरह के कार्य को पूरा करने के लिए आप दो विधियों का उपयोग कर सकते हैं।
वेब से बाहरी डेटा मैन्युअल रूप से प्राप्त करें
मान लें कि आप इस वेब पेज से शीर्ष कमाई करने वाली फिल्मों के बारे में राजस्व डाउनलोड करना चाहते हैं, यहां दिखाता है कि इसे आसानी से कैसे करें।
माइक्रोसॉफ्ट एक्सेल खोलें और डेटा टैब पर क्लिक करें, बाहरी डेटा प्राप्त करें समूह में, वेब से पर क्लिक करें। नई वेब क्वेरी संवाद बॉक्स दिखाई देने के बाद, वेब पता (https://www.the-numbers.com/movie/records/All-Time-Worldwide-Box-Office) पता फ़ील्ड में कॉपी करें और जाएं बटन पर क्लिक करें। एक्सेल वेब पेज को डाउनलोड करना शुरू कर देगा जैसा कि चित्र 1.1 में दिखाया गया है। यदि आपको नीचे दिए गए चित्र के समान स्क्रिप्ट त्रुटि चेतावनी बॉक्स मिलता है तो बस नहीं पर क्लिक करें। बॉक्स गायब हो जाएगा और इसका आपके आयात प्रक्रिया पर कोई प्रभाव नहीं पड़ेगा।

चित्र 1.1
नई वेब क्वेरी संवाद बॉक्स के ऊपरी दाएं कोने पर पीले बॉक्स में एक तीर है। उस पर क्लिक करके, आप यह निर्धारित कर सकते हैं कि तालिकाओं से पहले समान आइकन दिखाना है या नहीं। उदाहरण के लिए, चित्र 1.2 के बाएं पैनल में तालिका के बगल में कोई तीर आइकन नहीं है। और आइकन दिखाने के लिए तीर बटन पर क्लिक करने के बाद दाएं पैनल में एक आइकन होगा।

चित्र 1.2 [पूर्ण दृश्य के लिए छवि पर क्लिक करें]
उन तालिकाओं के बगल में तीर आइकन पर क्लिक करें जिन्हें आप चुनना चाहते हैं। आइकन और तालिकाएं बदल जाएंगी और चित्र 1.3 के बाएं पैनल के समान दिखेंगी। आयात पर क्लिक करने के बाद; एक डेटा आयात संवाद बॉक्स संकेत देगा। वह रेंज भरें (हमारे मामले में कॉलम A से कॉलम H तक) जहां आप डेटा डालना चाहते हैं और ओके पर क्लिक करें।
चित्र 1.3 [पूर्ण दृश्य के लिए छवि पर क्लिक करें]
ओके पर क्लिक करने के बाद डेटा एक्सेल में आयात हो जाएगा। यदि आप तालिका के भीतर किसी भी सेल पर राइट-क्लिक करते हैं और ताज़ा करें चुनते हैं, तो एक्सेल बाहर जाएगा और वेब पेज से सबसे हालिया डेटा खींच लेगा।
चित्र 1.4
और आप अपनी क्वेरी डेटा को किसी भी तरह से ताज़ा करने के लिए सेट कर सकते हैं। बस तालिका के भीतर किसी भी सेल पर राइट-क्लिक करें, डेटा रेंज गुण चुनें। संकेतित बाहरी डेटा रेंज गुण संवाद बॉक्स में, आप शैली बदलने के लिए ताज़ा नियंत्रण सेटिंग्स बदल सकते हैं। उदाहरण के लिए, आप क्वेरी को हर 60 मिनट में या जब फ़ाइल खोली जाती है तब ताज़ा करने के लिए निर्दिष्ट कर सकते हैं।

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

चित्र 2.1
निम्नलिखित कोड आपको उपरोक्त अनुरोधित जानकारी निकालने और उन्हें पहली वर्कशीट में डालने में मदद कर सकता है।
| स्रोत कोड | |
Sub Retrieve_Click() 'इंटरनेट एक्सप्लोरर बनाएं Set IE = CreateObject("InternetExplorer.Application") 'ब्राउज़र विंडो न देखें IE.Visible = False 'वेब पेज खोलें IE.Navigate "https://www.austrade.gov.au/SupplierDetails.aspx?ORGID=ORG8160044431&folderid=1736" 'IE के लोड होने तक प्रतीक्षा करें Do While IE.readyState <> 4 Or IE.Busy = True DoEvents Loop 'कंपनी का नाम, ईमेल पता और संपर्क जानकारी प्राप्त करें Set contactobj = IE.document.getElementsByClassName("contact-details block dark") htext = contactobj(0).innerHTML MsgBox htext If InStr(htext, "Company Name: ") Then ThisWorkbook.Worksheets(1).Cells(1, 1) = Split(Split(htext, "
Company Name: ")(1), "
Name: ") Then ThisWorkbook.Worksheets(1).Cells(3, 1) = Split(Split(htext, "
Name: ")(1), "
"IE.document.getElementsByClassName("contact-details block dark")" आपको क्लास नाम - contact-details block dark वाले सभी तत्व प्राप्त करने में सक्षम बनाता है। यह वेब पेज लगभग सभी गुणों और विधियों को सूचीबद्ध करता है जिनका उपयोग HTML तत्वों पर किया जा सकता है। आप अपनी समस्या के लिए उपयुक्त चुन सकते हैं।
innerHTML गुण आपको HTML तत्व की सामग्री सेट करने या वापस करने की अनुमति देता है। हमारे मामले में, इसने क्लास नाम "contact-details block dark" वाले तत्व की सामग्री वापस की और इसे htext वेरिएबल में सेट किया। सामग्री (चित्र 2.2) को 'Msgbox htext' द्वारा संकेतित किया जा सकता है।

चित्र 2.2
आप देख सकते हैं कि टेक्स्ट अच्छी तरह से संरचित है। इसलिए हम जो निकालने की आवश्यकता है उसे निकालने के लिए SPLIT फ़ंक्शन का उपयोग कर सकते हैं। उदाहरण के लिए, यदि हम "
Company Name:" को डिलीमीटर के रूप में लेते हैं और सूत्र "Split(htext, "
Company Name: ")(1)" "
Company Name:" के बाद का पूरा टेक्स्ट वापस कर सकता है। इस नए वापस किए गए टेक्स्ट के लिए, हम "
चित्र 2.2 में ओके पर क्लिक करने के बाद, अनुरोधित डेटा वेब से एक्सेल वर्कशीट में आयात किया जा सकता है। उदाहरण के लिए, सेल A1 में कंपनी का नाम है जबकि सेल A4 में कंपनी का वेब पेज पता है।

चित्र 2.3
नीचे दिए गए कोड को वर्कबुक सहेजने से पहले जोड़कर, आप सेल A4 में एक हाइपरलिंक जोड़ सकते हैं।
| स्रोत कोड | |
'हाइपरलिंक जोड़ें ThisWorkbook.Worksheets(1).Hyperlinks.Add ThisWorkbook.Worksheets(1).Cells(4, 1), ThisWorkbook.Worksheets(1).Cells(4, 1)
यदि आप सेल A4 पर क्लिक करते हैं, तो आप वेब पेज पर फिर से जा सकते हैं। यह विशेष रूप से उपयोगी है जब आपको बहुत सारी कंपनियों के लिए डेटा पुनः प्राप्त करना होता है। चूंकि आप किसी भी हाइपरलिंक पर क्लिक करके संबंधित वेब पेज पर फिर से जा सकते हैं और समीक्षा के दौरान मैन्युअल रूप से जानकारी जोड़ या अपडेट कर सकते हैं।

चित्र 2.4
समान पठन
- एक्सेल VBA के साथ दूसरी वर्कबुक खोलें और डेटा कॉपी करें
- [ठीक!] वर्कबुक ऑब्जेक्ट की ओपन विधि विफल (4 समाधान)
- एक्सेल VBA सेल मानों के साथ सरणी भरें (4 उपयुक्त उदाहरण)
- VBA का उपयोग करके वर्कबुक खोलें और मैक्रो चलाएं (4 उदाहरण)
वेब पेज के साथ इंटरैक्ट करें
उपरोक्त उदाहरण केवल एक स्थिर वेब पेज से डेटा पुनः प्राप्त करने के तरीके को दर्शाता है। लेकिन अक्सर, हमें बड़ी मात्रा में डेटा पुनः प्राप्त करने के लिए वेब पेज के साथ इंटरैक्ट करने की आवश्यकता होती है। चित्र 3.1 देखें। यह आपको दिखाता है कि उपरोक्त उदाहरण के वेब पेज तक कैसे पहुंचा जाए। आप देख सकते हैं कि बहुत सारे उद्योग हैं और प्रत्येक उद्योग के लिए, बहुत सारी कंपनियां हैं। उदाहरण के लिए, कृषि व्यवसाय उद्योग में 651 कंपनियां हैं। यदि हम सभी उद्योगों से सभी कंपनियों की संपर्क जानकारी निकालना चाहते हैं तो हमें क्या करना चाहिए?

चित्र 3.1 [पूर्ण दृश्य के लिए छवि पर क्लिक करें]
खैर, मुख्य बिंदु यह है कि VBA को वेब पेज के साथ इंटरैक्ट कैसे कराया जाए जैसे हम मैन्युअल रूप से करते हैं। आइए S.W.I.S एडवांटेज को एक उदाहरण के रूप में लें। आम तौर पर, हम आशा करते हैं कि एक्सेल कृषि व्यवसाय (चित्र 3.1 के शीर्ष पैनल) पर क्लिक कर सके और इस प्रकार IE को दूसरी वेब पेज पर निर्देशित करे। दूसरी वेब पेज (चित्र 3.1 के निचले पैनल) पर, एक्सेल S.W.I.S एडवांटेज पर क्लिक कर सकता है, और फिर IE हमें चित्र 2.1 में दिखाए गए पेज पर निर्देशित करता है ताकि हम S.W.I.S एडवांटेज की संपर्क जानकारी प्राप्त कर सकें।विजुअल बेसिक एडिटर में निम्नलिखित कोड दर्ज करके और कोड सबमिट करके, आप देखेंगे कि आपका IE खुल गया है। पहली वेब पेज दिखाई देती है जिसके बाद दूसरी वेब पेज आती है। यहां आप सीखेंगे कि ड्रॉप-डाउन सूची तत्व कैसे प्राप्त करें, एक विकल्प चुनें, और विकल्प चुनने के बाद एक घटना ट्रिगर करें। "m = IE.document.getElementsByTagName("option").Length - 1" आपको विकल्पों की कुल संख्या देगा। इसका उपयोग अगले लूप के लिए किया जा सकता है।
| स्रोत कोड | |
Sub retrieve() 'इंटरनेट एक्सप्लोरर बनाएं Set IE = CreateObject("InternetExplorer.Application") 'ब्राउज़र विंडो देखें IE.Visible = True 'वेब पेज खोलें IE.Navigate "https://www.austrade.gov.au/international/buy#" 'IE के लोड होने तक प्रतीक्षा करें Do While IE.Busy Application.Wait DateAdd("s", 1, Now) Loop Application.Wait (Now + TimeValue("00:00:10")) 'भाग 1 - ड्रॉपडाउन सूची चुनें और विकल्प चुनने के बाद घटना ट्रिगर करें Set selectobj = IE.document.getElementsByTagName("select") m = IE.document.getElementsByTagName("option").Length - 1 selectobj(0).selectedIndex = 1 selectobj(0).FireEvent ("onchange") 'IE के लोड होने तक प्रतीक्षा करें Do While IE.readyState <> 4 Or IE.Busy = True Application.Wait DateAdd("s", 1, Now) Loop Application.Wait (Now + TimeValue("00:00:10")) End Sub
कोड का यह भाग आपको चित्र 2.1 में दिखाए गए वेब पेज पर निर्देशित कर सकता है जब एक्सेल पहले नाम पर क्लिक करता है। सभी कंपनियों के नाम "Name" क्लास नाम वाले तत्व में शामिल हैं। Searchobj एक संग्रह है और searchobj(i) (i+1)वां ऑब्जेक्ट वापस कर सकता है। उदाहरण के लिए, searchobj(1).Click आपको RIDLEY CORPORATION (मेलबर्न) के वेब पेज पर जाने में सक्षम बनाता है।
| स्रोत कोड | |
'भाग 2 - कंपनी का नाम चुनें Set searchobj = IE.document.getElementsByClassName("Name") searchobj(0).Click 'IE के लोड होने तक प्रतीक्षा करें Do While IE.readyState <> 4 Or IE.Busy = True DoEvents Loop
अंत में, यहां पूरा कोड है जो आपको IE खोलने, वेब पेज ब्राउज़ करने, और डेटा निकालने की प्रक्रिया दिखा सकता है। निकाला गया डेटा वही होगा जो चित्र 2.4 में है।
| स्रोत कोड | |
Sub Retrieve() 'इंटरनेट एक्सप्लोरर बनाएं Set IE = CreateObject("InternetExplorer.Application") 'ब्राउज़र विंडो देखें IE.Visible = True 'वेब पेज खोलें IE.Navigate "https://www.austrade.gov.au/international/buy#" 'IE के लोड होने तक प्रतीक्षा करें Do While IE.Busy Application.Wait DateAdd("s", 1, Now) Loop Application.Wait (Now + TimeValue("00:00:10")) 'भाग 1 - ड्रॉपडाउन सूची चुनें और विकल्प चुनने के बाद घटना ट्रिगर करें Set selectobj = IE.document.getElementsByTagName("select") m = IE.document.getElementsByTagName("option").Length - 1 selectobj(0).selectedIndex = 1 selectobj(0).FireEvent ("onchange") 'IE के लोड होने तक प्रतीक्षा करें Do While IE.readyState <> 4 Or IE.Busy = True Application.Wait DateAdd("s", 1, Now) Loop Application.Wait (Now + TimeValue("00:00:10")) 'भाग 2 - कंपनी का नाम चुनें Set searchobj = IE.document.getElementsByClassName("Name") searchobj(0).Click 'IE के लोड होने तक प्रतीक्षा करें Do While IE.readyState <> 4 Or IE.Busy = True DoEvents Loop 'भाग 3 - कंपनी का नाम, ईमेल पता और संपर्क जानकारी प्राप्त करें Set contactobj = IE.document.getElementsByClassName("contact-details block dark") htext = contactobj(0).innerHTML If InStr(htext, "Company Name: ") Then ThisWorkbook.Worksheets(1).Cells(1, 1) = Split(Split(htext, "
Company Name: ")(1), "
Name: ") Then ThisWorkbook.Worksheets(1).Cells(3, 1) = Split(Split(htext, "
Name: ")(1), "
वास्तव में, हमें सभी उद्योगों से सभी कंपनियों के लिए संपर्क जानकारी निकालने की आवश्यकता है, इसलिए, हमें इस कार्य को पूरा करने के लिए फॉर लूप स्टेटमेंट का उपयोग करने की आवश्यकता है। निम्नलिखित पूरा कोड है। और आप इस लेख के अंत में Retrieve contact information for all companies.xlsm से कोड भी ढूंढ सकते हैं।
| स्रोत कोड | |
Sub Retrieve() For idex = 2 To 18 'इंटरनेट एक्सप्लोरर बनाएं Set IE = CreateObject("InternetExplorer.Application") 'ब्राउज़र विंडो न देखें IE.Visible = False 'वेब पेज खोलें IE.Navigate "https://www.austrade.gov.au/international/buy#" 'IE के लोड होने तक प्रतीक्षा करें Do While IE.Busy Application.Wait DateAdd("s", 1, Now) Loop Application.Wait (Now + TimeValue("00:00:10")) idexn = idex - 1 'भाग 1 - ड्रॉपडाउन चुनें Set selectobj = IE.document.getElementsByTagName("select") m = IE.document.getElementsByTagName("option").Length - 1 selectobj(0).selectedIndex = idexn selectobj(0).FireEvent ("onchange") 'IE के लोड होने तक प्रतीक्षा करें Do While IE.readyState <> 4 Or IE.Busy = True Application.Wait DateAdd("s", 1, Now) Loop Application.Wait (Now + TimeValue("00:00:10")) wurl = IE.LocationURL tot = IE.document.getElementsByClassName("SearchTotal")(0).innerHTML pg = Int(tot / 25) + 1 Max = (tot Mod 25) - 1 'भाग 2 - क्लास = "Name" चुनें a = 2 For j = 1 To pg If j = 1 Then IE.Navigate (wurl) Else IE.Navigate (wurl & "&pg=" & j) End If Do While IE.Busy Application.Wait DateAdd("s", 1, Now) Loop If j <> pg Then For i = 1 To 24 Set searchobj = IE.document.getElementsByClassName("Name") searchobj(i).Click 'IE के लोड होने तक प्रतीक्षा करें Do While IE.readyState <> 4 Or IE.Busy = True DoEvents Loop 'भाग 3 - कंपनी का नाम, ईमेल पता और संपर्क जानकारी प्राप्त करें Set contactobj = IE.document.getElementsByClassName("contact-details block dark") htext = contactobj(0).innerHTML ThisWorkbook.Worksheets(idex).Cells(a, 1) = j ThisWorkbook.Worksheets(idex).Cells(a, 2) = a - 1 If InStr(htext, "Company Name: ") Then ThisWorkbook.Worksheets(idex).Cells(a, 3) = Split(Split(htext, "
Company Name: ")(1), "
Name: ") Then ThisWorkbook.Worksheets(idex).Cells(a, 5) = Split(Split(htext, "
Name: ")(1), "
Company Name: ") Then ThisWorkbook.Worksheets(idex).Cells(a, 3) = Split(Split(htext, "
Company Name: ")(1), "
Name: ") Then ThisWorkbook.Worksheets(idex).Cells(a, 5) = Split(Split(htext, "
Name: ")(1), "
एकमात्र बिंदु जिसे मुझे समझाने की आवश्यकता है वह चित्र 3.2 में दर्शाया गया है। एक वेब पेज केवल 25 कंपनियों को सूचीबद्ध कर सकता है। जब कंपनियों की कुल संख्या 25 से अधिक होती है, तो एक से अधिक पेज होंगे। चित्र 3.2 दिखाता है कि पहले पेज के बाद के पेज का पता प्राप्त करने का एक नियम है। यह पहले पेज के पते, "&pg=" और वास्तविक पेज नंबर को जोड़ने का परिणाम है। और अंतिम पेज से पहले के सभी पेज के लिए, कुल ऑब्जेक्ट संख्या 25 है। "IE.document.getElementsByClassName("SearchTotal")(0).innerHTML" एक उद्योग के भीतर कंपनियों की कुल संख्या वापस कर सकता है। हमारे मामले में, यह 651 होगा। "Int(tot / 25) + 1" आपको पेज की कुल संख्या दे सकता है। और "Max = (tot Mod 25) - 1" अंतिम पेज पर कंपनियों की अधिकतम संख्या वापस कर सकता है। मैं यहां रुकूंगा और आपको यह पता लगाने के लिए छोड़ दूंगा कि इस विचार को कोड पर कैसे लागू किया जाए। कोड को समझने के लिए यह एक बेहतर दृष्टिकोण है। यदि आपके कोई प्रश्न हैं तो आप टिप्पणी छोड़ सकते हैं।

चित्र 3.2
यहां अंतिम एक्सेल का हिस्सा दिखाता है। एक उद्योग के भीतर सभी कंपनियों की संपर्क जानकारी एक वर्कशीट में एक साथ रखी गई है।

चित्र 3.3 [पूर्ण दृश्य के लिए छवि पर क्लिक करें]
कार्य फ़ाइल डाउनलोड करें
नीचे दिए गए लिंक से कार्य फ़ाइल डाउनलोड करें।
Pull-Data-from-Web-to-Excel.rar
संबंधित लेख
- वेबसाइट से एक्सेल में डेटा स्वचालित रूप से कैसे निकालें?
- वर्ड से एक्सेल में डेटा आयात करें (वाक्य, पैराग्राफ, तालिकाएं, टिप्पणियां)
- 6 सर्वश्रेष्ठ एक्सेल VBA प्रोग्रामिंग पुस्तकें (शुरुआती और उन्नत उपयोगकर्ताओं के लिए)
- एक्सेल VBA प्रोग्रामिंग और मैक्रो सीखें (मुफ्त ट्यूटोरियल - चरण दर चरण)
- एक्सेल VBA कोडिंग टिप्स
- VBA के साथ आप क्या कर सकते हैं
- VBA मैक्रो का परिचय