एक्सेल में वेब स्क्रैपिंग: पावर क्वेरी, VBA, और API विधियाँ
Advanced Data Extraction Specialist
TL;DR:
- जब कोई पृष्ठ एक स्थिर HTML तालिका या JSON अंत बिंदु को प्रदर्शित करता है, तो Power Query का उपयोग करें; यह Excel को एक पुनः भरने योग्य, प्रलेखित रूपांतरण देता है।
- जब कार्यपुस्तिका उपयोगकर्ताओं को बटन-चालित आयात या नियंत्रित CSV हैंडऑफ की आवश्यकता हो, तो VBA का उपयोग करें। बदलते पृष्ठ मार्कअप को पार्स करने के लिए VBA का उपयोग करने से बचें।
- JavaScript-निर्मित या ट्रैफ़िक-मान्यित पृष्ठों के लिए, सबसे पहले एक API के साथ सामग्री प्राप्त करें, फिर Excel को लौटाए गए डेटा को रूपांतरित करने दें।
- सबसे बनाए रखने योग्य डिज़ाइन अधिग्रहण को विश्लेषण से अलग करता है: स्रोत सेवा एक स्थिर स्कीमा लौटाती है, और Excel फ़िल्टरिंग, जॉइन, पिवट और चार्ट का मालिक होता है।
Excel में वेब स्क्रैपिंग का अर्थ चार बहुत अलग कार्य हो सकता है: एक बार एक तालिका की प्रति बनाना, एक सार्वजनिक तालिका को ताज़ा करना, एक JSON API को कॉल करना, या एक पृष्ठ से कार्यपुस्तिका को फीड करना जिसे ब्राउज़र रेंडरिंग की आवश्यकता होती है। पृष्ठ के व्यवहार द्वारा उपकरण चुनना परिचितता द्वारा चुनने से अधिक विश्वसनीय है।
यह गाइड Power Query, VBA, और एक API-प्राथमिक मार्ग को शामिल करती है। उदाहरण केवल सार्वजनिक डेटा तक सीमित हैं जो परियोजना को एकत्र करने की अनुमति है। बिना स्पष्ट अनुमति के निजी, प्रामाणिक, व्यक्तिगत, या प्रतिबंधित जानकारी तक पहुंचने के लिए उनका उपयोग न करें।
कार्यपुस्तिका बनाने से पहले विधि चुनें
| स्रोत व्यवहार | सबसे अच्छा Excel पथ | पुनः भरने योग्य | कोडिंग स्तर | मुख्य सीमाएं |
|---|---|---|---|---|
| छोटा, एक बार दिखाई देने वाला तालिका | कॉपी और पेस्ट | नहीं | कोई नहीं | मैन्युअल और पुन: उत्पन्न करने में कठिन |
| स्थिर HTML तालिका | Power Query: वेब से | हाँ | कम | ग्राहक-निर्मित सामग्री नहीं देख सकता है |
| सार्वजनिक JSON या CSV अंत बिंदु | Power Query या VBA | हाँ | मध्यम | स्थिर प्रतिक्रिया अनुबंध की आवश्यकता है |
| JavaScript-निर्मित सार्वजनिक पृष्ठ | अधिग्रहण API, फिर Power Query | हाँ | मध्यम | एक बाहरी सेवा की आवश्यकता है |
| बटन-चालित कार्यपुस्तिका वर्कफ़्लो | VBA एक CSV या JSON अंत बिंदु को कॉल कर रहा है | हाँ | मध्यम | मैक्रो सुरक्षा और रखरखाव |
व्यावहारिक नियम सरल है: Excel को टेबलर रूपांतरण के लिए जिम्मेदार रखें, न कि ब्राउज़र अनुकरण के लिए। जब एक वेब पृष्ठ प्रस्तुति परत होता है न कि डेटा स्रोत, तो किसी प्रलेखित अंत बिंदु की तलाश करें या कार्यपुस्तिका के सामने एक अधिग्रहण सेवा रखें।
विधि 1: Power Query के साथ एक दृश्य तालिका आयात करें
Microsoft का समर्थित प्रवाह है डेटा > वेब से, जिसके बाद नेविगेटर में एक पता की गई तालिका का चयन करना और इसे कार्यपुस्तिका में लोड करना है। पूरा अनुक्रम Microsoft के वेब आयात गाइड में दिखाई देता है।
चरण-दर-चरण
- एक कार्यपुस्तिका खोलें और डेटा चुनें।
- डेटा प्राप्त करें और इसे ट्रांसफॉर्म करें समूह में वेब से चुनें।
- अनुमति प्राप्त सार्वजनिक पृष्ठ का URL चिपकाएँ।
- नेविगेटर में तालिका का चयन करें।
- यदि कॉलम को साफ करने की आवश्यकता है, तो डेटा को रूपांतरित करें चुनें, या इसे सीधे एक शीट में लिखने के लिए लोड चुनें।
- क्वेरी और तालिका का नाम बदलें ताकि उनका उद्देश्य स्पष्ट हो।
- जब स्रोत को फिर से लाने की आवश्यकता हो, तो रीफ्रेश चुनें।
Power Query रूपांतरण चरणों को संग्रहीत करता है। यह महत्वपूर्ण है क्योंकि एक पुनरुत्पाद्य क्वेरी कॉलम हटा सकती है, प्रकार सेट कर सकती है, पाठ को विभाजित कर सकती है, और हर फिर से भरने पर संदर्भ डेटा को जोड़ सकती है। Microsoft यह भी प्रलेखित करता है कि एक लोड की गई वेब तालिका को उसी Excel रिफ्रेश वर्कफ्लो में Query Refresh के साथ अपडेट किया जा सकता है।
जब वेब से कोई उपयोगी तालिका नहीं लौटाई जाती
पृष्ठ अपने डेटा को प्रारंभिक HTML आने के बाद JavaScript के साथ रेंडर कर सकता है। यह एक HTML तालिका के बजाय एक XHR या fetch अनुरोध के माध्यम से भी मानों को उजागर कर सकता है। उन मामलों में, नेविगेटर परिणाम खाली हो सकता है, भले ही ब्राउज़र पंक्तियाँ प्रदर्शित करता हो।
Browser developer tools का उपयोग केवल एक अनुमति प्राप्त, प्रलेखित डेटा अंत बिंदु की पहचान करने के लिए करें—न कि पहुंच नियंत्रण को हराने के लिए। यदि एक स्थिर JSON अंत बिंदु मौजूद है, तो Power Query इसे सीधे कॉल कर सकता है। यदि ट्रैफ़िक मान्यकरण या ब्राउज़र रेंडरिंग की आवश्यकता है, तो इस गाइड में बाद में API-प्राथमिक विधि का उपयोग करें।
विधि 2: Power Query M के साथ JSON को कॉल करें
Power Query का Web.Contents फ़ंक्शन HTTP अनुरोध करता है और एक बाइनरी प्रतिक्रिया लौटाता है जिसे Json.Document में पास किया जा सकता है। Microsoft अपने अनुरोध विकल्पों को प्रलेखित करता है, जिसमें Headers, Content, RelativePath, Query, और ApiKeyName शामिल हैं, Web.Contents संदर्भ में।
पूर्वापेक्षाएँ
- Power Query के साथ Excel
- कार्यपुस्तिका के वेब API क्रेडेंशियल डायलॉग के माध्यम से दर्ज किया गया Scrapeless API टोकन
- अनुमति प्राप्त सार्वजनिक लक्ष्य URL
- एक ज्ञात JSON प्रतिक्रिया लिफाफा
निम्न Power Query M ब्लॉक एक पूर्वापेक्षा-खाई का उदाहरण है क्योंकि इसे पाठक के टोकन और लक्ष्य की आवश्यकता है। यह यूनिवर्सल स्क्रैपिंग API को कॉल करता है, data से लौटाए गए HTML को पढ़ता है, और एक-लाइन तालिका उत्पन्न करता है जिसे बाद में एक पार्सर या ऑडिट शीट में फीड किया जा सकता है।
powerquery
let
Endpoint = "https://api.scrapeless.com",
TargetUrl = Excel.CurrentWorkbook(){[Name="AuthorizedTargetUrl"]}[Content]{0}[Column1],
Payload = Json.FromValue([
actor = "unlocker.webunlocker",
proxy = [country = "ANY"],
input = [
url = TargetUrl,
jsRender = [
enabled = true,
response = [type = "html", options = []]
]
]
]),
Raw = Web.Contents(
Endpoint,
[
RelativePath = "api/v2/unlocker/request",
Headers = [
#"Content-Type" = "application/json"
],
Content = Payload,
ApiKeyName = "x-api-token"
]
),
Envelope = Json.Document(Raw),
Checked = if Envelope[code] = 200 and Envelope[data] <> null
then Envelope[data]
else error "The acquisition response did not contain page data",
Output = #table(
{"source_url", "html"},
{{TargetUrl, Checked}}
)
in
Output
क्वेरी बनाने के बाद, जब एक्सेल क्रेडेंशियल्स के लिए पूछता है, तो वेब एपीआई चुनें और वहां टोकन चिपकाएं। ApiKeyName उस पैरामीटर नाम को निर्दिष्ट करता है जबकि M स्रोत से रहस्य को बाहर रखता है। क्रेडेंशियल व्यवहार का उदाहरण माइक्रोसॉफ्ट के सुरक्षित API-की उदाहरण में प्रदर्शित किया गया है।
वर्तमान API अनुरोध रूप और जावास्क्रिप्ट विकल्प भी Scrapeless JS Render दस्तावेज़ीकरण में उपलब्ध हैं।
लौटाई गई HTML को स्थिर एक्सेल कॉलम में बदलें
एक पूरा HTML दस्तावेज़ एक सेल में लोड करना एक निदान पुल है, अंतिम डेटा सेट नहीं। उत्पादन वर्कबुक को एक सघन स्कीमा मिलना चाहिए।
उदाहरण के लिए:
| कॉलम | प्रकार | अर्थ |
|---|---|---|
स्रोत_यूआरएल |
पाठ | एकत्रित किया गया मानक पृष्ठ |
एकत्रित_at |
दिनांक/समय | अधिग्रहण का समय |
नाम |
पाठ | सामान्यीकृत इकाई का नाम |
मूल्य |
दशमलव | मुद्रा प्रतीकों के बिना संख्यात्मक मूल्य |
मुद्रा |
पाठ | ISO मुद्रा कोड |
उपलब्धता |
पाठ | सामान्यीकृत उपलब्धता स्थिति |
दो साफ़ तरीके हैं जिन्हें इस अनुबंध तक पहुँचने के लिए उपयोग किया जा सकता है:
- अधिग्रहण परत से संरचित फ़ील्ड वापस करने के लिए कहें।
- लौटाई गई HTML को एक्सेल से बाहर पार्स करें, फिर Power Query के लिए JSON या CSV को उजागर करें।
दोनों वर्कबुक की निर्भरता को पृष्ठ मार्कअप पर कम करते हैं। एक वर्कबुक जो छह नामांकित फ़ील्ड की अपेक्षा करती है, उन दर्जनों चयनकर्ताओं और पाठ-साफ़ करने के कदमों वाली वर्कबुक की तुलना में परीक्षण करना आसान है।
यदि पृष्ठ को उन फ़ील्ड्स के अस्तित्व से पहले जावास्क्रिप्ट रेंडरिंग की आवश्यकता है, तो वर्कबुक को फिर से डिजाइन करने से पहले यूनिवर्सल स्क्रैपिंग API का एक अधिकृत यूआरएल के साथ परीक्षण करें।
विधि 3: नियंत्रित CSV हेंडऑफ के लिए VBA का उपयोग करें
VBA तब उपयोगी होता है जब एक विश्लेषक को एक बटन की आवश्यकता होती है जो एक ज्ञात शीट में फ़ाइल आयात करता है। वेब अधिग्रहण को मैक्रो के बाहर रखें और मैक्रो को एक स्थिर CSV यूआरएल का उपभोग करने दें। यह किसी वर्कबुक को बदलती HTML से जोड़ने से बचाता है।
आवश्यकताएँ
- कार्यालय की नीति के तहत मैक्रो सक्षम के साथ डेस्कटॉप एक्सेल
- एक अनुमत HTTPS अंत बिंदु जो UTF-8 CSV लौटाता है
ImportedDataनामक एक कार्यपत्रक- एक नामित रेंज
CsvEndpointजिसमें अंत बिंदु यूआरएल होता है
ब्लॉक आवश्यकताएँ-खाई है क्योंकि अंत बिंदु और वर्कबुक नीति पाठक के वातावरण के लिए विशिष्ट हैं।
vb
वैकल्पिक स्पष्ट
सार्वजनिक उप आयातCsv()
Dim endpoint As String
Dim लक्ष्य As Worksheet
Dim क्वेरी As QueryTable
endpoint = ThisWorkbook.Names("CsvEndpoint").RefersToRange.Value
Set लक्ष्य = ThisWorkbook.Worksheets("ImportedData")
लक्ष्य.Cells.ClearContents
सेट क्वेरी = लक्ष्य.QueryTables.Add( _
कनेक्शन:="TEXT;" & endpoint, _
गंतव्य:=लक्ष्य.Range("A1"))
के साथ क्वेरी
.TextFileParseType = xlDelimited
.TextFileCommaDelimiter = सत्य
.TextFilePlatform = 65001
.RefreshStyle = xlOverwriteCells
.Refresh BackgroundQuery:=False
समाप्त
End Sub
यह मैक्रो जानबूझकर संकीर्ण है: यह CSV अनुबंध को आयात करता है और अधिग्रहण, रेंडरिंग और पहुंच तर्क को उन सेवाओं पर छोड़ देता है जो उनके मालिक हैं। यदि अंत बिंदु को कस्टम प्रमाणीकरण की आवश्यकता होती है, तो Power Query का क्रेडेंशियल स्टोर अक्सर VBA में टोकन को एम्बेड करने की तुलना में बेहतर फिट होता है।
माइक्रोसॉफ्ट का दस्तावेज है कि Workbook.RefreshAll बाहरी डेटा रेंज और पिवटटेबल रिपोर्ट को ताज़ा करता है Excel VBA RefreshAll संदर्भ में। यह एक वर्कबुक-स्तरीय ताज़ा बटन का समर्थन कर सकता है जब प्रत्येक प्रश्न को कॉन्फ़िगर और परीक्षण किया गया हो।
API-प्रथम वेब स्क्रैपिंग एक्सेल में
API-प्रथम डिज़ाइन में दो चरण होते हैं:
- पृष्ठ को अधिग्रहित और मान्य करें: जहां आवश्यक हो जावास्क्रिप्ट को रेंडर करें, ट्रैफ़िक मान्यता को संभालें, और पुष्टि करें कि अपेक्षित सामग्री लौटाई गई थी।
2. **एक्सेल में रूपांतरित और विश्लेषण करें:** उत्तर को कॉलम में आकार दें, लुकअप तालिकाओं को जोड़ें, पिवोट बनाएं, और चार्ट प्रकाशित करें।
[यूनिवर्सल स्क्रैपिंग एपीआई](https://www.scrapeless.com/hi/product/universal-scraping-api?utm_source=website&utm_medium=blog&utm_campaign=universalscrapingapi&utm_term=web-scraping-in-excel) पहले चरण के लिए बनाया गया है। पावर क्वेरी वर्कबुक-फेसिंग कनेक्टर के रूप में बनी रहती है। यह सीमा टीमों को अधिग्रहण विधि को बदलने की अनुमति देती है बिना हर सूत्र और चार्ट को फिर से बनाए।
[स्क्रैपलेस प्राइसिंग पृष्ठ](https://www.scrapeless.com/hi/pricing?utm_source=website&utm_medium=blog&utm_campaign=universalscrapingapi&utm_term=web-scraping-in-excel) का उपयोग करें सेवा की लागत की तुलना करने के लिए उस इंजीनियरिंग समय के साथ जो ब्राउज़र बुनियादी ढांचे को संचालित करने के लिए आवश्यक है। एक्सेल पाइपलाइनों के लिए उपयुक्त प्रतिक्रिया प्रारूपों का सामान्य दृश्य देखने के लिए, [यूनिवर्सल स्क्रैपिंग एपीआई प्रतिक्रिया-फॉर्मेट अपडेट](https://www.scrapeless.com/hi/blog/response-formats-update?utm_source=website&utm_medium=blog&utm_campaign=universalscrapingapi&utm_term=web-scraping-in-excel) देखें।
## सामान्य समस्याएँ और समाधान
### नेविगेटर में कोई तालिका नहीं दिखाई देती
पृष्ठ संभवतः प्रारंभिक प्रतिक्रिया में एक स्थिर HTML तालिका को पहले से ही प्रकट नहीं कर रहा है। एक अनुमत JSON या CSV स्रोत की तलाश करें। यदि मान केवल जावास्क्रिप्ट के बाद दिखाई देते हैं, तो एक अधिग्रहण परत का उपयोग करें जो पूरा सामग्री लौटाए।
### रिफ्रेश करते समय प्राइवेसी-लेवल त्रुटि लौटती है
पावर क्वेरी गोपनीयता सेटिंग के अनुसार डेटा स्रोतों को अलग करती है। वर्कबुक के स्रोत कॉन्फ़िगरेशन की समीक्षा करें और सार्वजनिक स्रोत के साथ निजी संगठनात्मक डेटा को मिलाने से बचें जब तक कि नीति इसकी अनुमति न दे।
### एक क्वेरी एक कंप्यूटर पर काम करती है लेकिन दूसरे पर नहीं
Excel संस्करण, प्रमाणीकरण सेटिंग, नामित रेंज, मैक्रो नीति, और गेटवे आवश्यकताओं की जांच करें। क्रेडेंशियल्स पर्यावरण-विशिष्ट होते हैं और इन्हें वर्कबुक फ़ाइल के अंदर नहीं ले जाना चाहिए।
### वर्कबुक एक चुनौती पृष्ठ में लोड होता है
रूपांतरण से पहले सामग्री स्तर का प्रमाणीकरण जोड़ें। अपेक्षित JSON फ़ील्ड, CSV हेडर, या पृष्ठ संकेतक की आवश्यकता करें। किसी भी प्रतिक्रिया को अस्वीकृत करें जो उस अनुबंध को पूरा नहीं करती है।
### रिफ्रेश के बाद कॉलम प्रकार बदल जाते हैं
स्रोत चरण के बाद पावर क्वेरी में स्पष्ट डेटा प्रकार लागू करें। मुद्रा प्रतीकों, क्षेत्र-स्पष्ट विभाजकों, और अनुपस्थित मानों को संख्यात्मक कॉलम से बाहर रखें।
### रिफ्रेश बहुत समय लेता है
Excel तक पहुँचने से पहले डेटा को कम करें। स्रोत पर दिनांक या पहचानकर्ता द्वारा फ़िल्टर करें, केवल आवश्यक फ़ील्ड मांगें, और जब कार्यपत्रकों को उनकी आवश्यकता न हो तो मध्यवर्ती क्वेरियों को केवल कनेक्शन-केवल के रूप में लोड करें।
## एक वर्कबुक प्रोटोटाइप से उत्पादन फ़ीड तक
एक उपयोगी प्रगति है:
1. एक URL और एक पंक्ति को मैन्युअल रूप से साबित करें।
2. स्पष्ट कॉलम नाम और प्रकार के साथ एक पावर क्वेरी बनाएँ।
3. सामग्री प्रमाणीकरण और एक त्रुटि शीट जोड़ें।
4. अधिग्रहण सेवा में रेंडरिंग और HTML पार्सिंग करें।
5. एक संस्करणित स्कीमा के साथ JSON या CSV प्रकाशित करें।
6. Excel के बाहर संग्रहण शेड्यूल करें और वर्कबुक रिफ्रेश को विश्लेषण पर केंद्रित रखें।
यह तालिका को बिना अनियंत्रित वेब ब्राउज़र में बदले, उपयोगी रखता है। वर्कबुक साफ डेटा का एक उपभोक्ता बन जाती है, जिसे Excel अच्छी तरह से संभालता है।
## निष्कर्ष: Excel को विश्लेषण करने दें, न कि ब्राउज़र का अनुकरण करने दें
पावर क्वेरी रिफ्रेशेबल HTML तालिकाओं और JSON एपीआई के लिए डिफ़ॉल्ट पसंद है। VBA नियंत्रित, उपयोगकर्ता-प्रेरित आयात के लिए मूल्यवान है। जब एक अनुमत स्रोत जावास्क्रिप्ट या ट्रैफ़िक प्रमाणीकरण पर निर्भर करता है, तो एक अधिग्रहण एपीआई का उपयोग करें और Excel को एक स्थिर डेटा अनुबंध दें।
उस सीमा को बनाने के लिए, [एक स्क्रैपलेस खाता बनाएं](https://app.scrapeless.com/passport/login?utm_source=website&utm_medium=blog&utm_campaign=universalscrapingapi&utm_term=web-scraping-in-excel), एक सार्वजनिक URL के साथ यूनिवर्सल स्क्रैपिंग एपीआई का परीक्षण करें, उन फ़ील्ड को परिभाषित करें जिनकी वर्कबुक को आवश्यकता है, और उन फ़ील्ड को रिफ्रेश अनुबंध बनाएं।
## अक्सर पूछे जाने वाले प्रश्न
### क्या Excel बिना कोड के किसी वेबसाइट को स्क्रैप कर सकता है?
हाँ। पावर क्वेरी का फ्रॉम वेब कनेक्टर कई दृश्यमान HTML तालिकाओं को ग्राफिकल वर्कफ़्लो के माध्यम से आयात कर सकता है। यह स्थिर सार्वजनिक पृष्ठों के लिए सबसे उपयुक्त है जो अपनी प्रारंभिक HTML में तालिका को प्रकट करते हैं।
### पावर क्वेरी एक खाली पृष्ठ क्यों दिखाता है?
मान संभवतः प्रारंभिक प्रतिक्रिया के बाद जावास्क्रिप्ट द्वारा प्रस्तुत किए जाते हैं, एक अलग एंडपॉइंट से लोड किए जाते हैं, या ट्रैफिक-प्रमाणीकरण पृष्ठ द्वारा प्रतिस्थापित होते हैं। स्रोत व्यवहार का निरीक्षण करें और अधिग्रहण विधि का चुनाव करें।
### क्या Power Query वेब स्क्रैपिंग के लिए VBA से बेहतर है?
पावर क्वेरी आमतौर पर रिफ्रेश करने योग्य डेटा परिवर्तन और प्रमाणन प्रबंधन के लिए बेहतर होती है। VBA वर्कबुक बटन और नियंत्रित फ़ाइल आयात के लिए उपयोगी है, लेकिन यह HTML पार्सिंग को बनाए रखने के लिए एक नाजुक स्थान है।
### क्या Power Query एक JSON एपीआई को कॉल कर सकता है?
हाँ। `Web.Contents` एक प्रतिक्रिया को प्राप्त कर सकता है, और `Json.Document` इसे रिकॉर्ड, सूचियों, और तालिकाओं में पार्स कर सकता है। M कोड में API रहस्यों को स्टोर करने के बजाय क्रेडेंशियल संवाद का उपयोग करें।
### एक वर्कबुक जावास्क्रिप्ट-रेंडर्ड पृष्ठों को कैसे संभाल सकती है?
HTML, JSON, या CSV लौटाने के लिए एक रेंडरिंग-योग्य अधिग्रहण सेवा का उपयोग करें, फिर पावर क्वेरी को उस आउटपुट से कनेक्ट करें। यह ब्राउज़र व्यवहार को तालिका से बाहर रखता है।
### Excel को स्क्रैप किए गए डेटा को कितनी बार रिफ्रेश करना चाहिए?
व्यापार की आवश्यकता, स्रोत अनुमति, और सेवा क्षमता के अनुसार मिलान ताज़ा करने की आवृत्ति को निर्धारित करें। निर्धारित या उच्च मात्रा में संग्रह के लिए, एक्विजिशन को Excel के बाहर चलाएं और वर्कबुक को तैयार किए गए डेटासेट से ताज़ा होने दें।
स्क्रैपलेस में, हम केवल सार्वजनिक रूप से उपलब्ध डेटा का उपयोग करते हैं, जबकि लागू कानूनों, विनियमों और वेबसाइट गोपनीयता नीतियों का सख्ती से अनुपालन करते हैं। इस ब्लॉग में सामग्री केवल प्रदर्शन उद्देश्यों के लिए है और इसमें कोई अवैध या उल्लंघन करने वाली गतिविधियों को शामिल नहीं किया गया है। हम इस ब्लॉग या तृतीय-पक्ष लिंक से जानकारी के उपयोग के लिए सभी देयता को कोई गारंटी नहीं देते हैं और सभी देयता का खुलासा करते हैं। किसी भी स्क्रैपिंग गतिविधियों में संलग्न होने से पहले, अपने कानूनी सलाहकार से परामर्श करें और लक्ष्य वेबसाइट की सेवा की शर्तों की समीक्षा करें या आवश्यक अनुमतियाँ प्राप्त करें।



