XPath क्या है?
Scrapeless Scraping Browser नेविगेट करने के लिए XPath एक्सप्रेशनों के साथ निष्कर्षण कार्यप्रवाहों का उपयोग करके प्रदर्शित सार्वजनिक पृष्ठ DOM सामग्री प्रदान करता है।
TL;DR
- XPath एक अभिव्यक्तिशील भाषा है जिसका उपयोग वृक्ष-संरचित डेटा में मूल्यों और नोड्स का चयन करने के लिए किया जाता है। इसका पथ वाक्यविन्यास बच्चों, वंशजों, माता-पिता, पूर्वजों, भाई-बहनों, और विशेषताओं को नेविगेट कर सकता है।
- XPath एक संदर्भ नोड से काम करता है। पूर्ण पथ दस्तावेज़ रूट से शुरू होते हैं; सापेक्ष पथ वर्तमान संदर्भ से शुरू होते हैं।
- पूर्वविचार संभावित नोड्स को फ़िल्टर करते हैं। विशेषता के मान, स्थितियाँ, पाठ परीक्षण, और कार्य एक पथ को संकीर्ण कर सकते हैं।
- XPath तब उपयोगी है जब चयन रिश्तों पर निर्भर करता है। माता-पिता या पूर्वज की यात्रा और पाठ-आधारित स्थितियाँ इसे चुनने के सामान्य कारण हैं।
XPath, XML पथ भाषा के लिए छोटा, नोड्स और मूल्यों को एक पेड़ में संबोधित करने के लिए उपयोग की जाने वाली एक अभिव्यक्तिशील भाषा है। हालाँकि इसका नाम XML से आता है, ब्राउज़र और स्वचालन API XPath को HTML दस्तावेजों के खिलाफ भी मूल्यांकित कर सकते हैं।
यह W3C XPath 3.1 सिफारिश XPath को एक अभिव्यक्तिशील भाषा के रूप में परिभाषित करता है जिसके पथ अभिव्यक्तियाँ डेटा मॉडल पर स्तरित पते प्रदान करती हैं।
XPath काम कैसे करता है?
XPath एक संदर्भ के खिलाफ एक अभिव्यक्ति का मूल्यांकन करता है और मेल खाने वाले नोड्स या गणितीय मूल्यों को लौटाता है।
एक पथ चरणों से बना होता है। प्रत्येक चरण एक अक्ष चुनता है, एक नोड परीक्षण लागू करता है, और पूर्वविचार जोड़ सकता है। अभिव्यक्ति //article[@data-id] एक डेटा-id विशेषता वाले लेख वंशजों का चयन करती है। अभिव्यक्ति .//h2 वर्तमान संदर्भ नोड के H2 वंशजों की खोज करती है।
एक XPath अभिव्यक्ति के मुख्य भाग क्या हैं?
XPath स्थान चरणों, अक्षों, नोड परीक्षणों, पूर्वविचारों, और कार्यों को मिलाता है।
| सिंटैक्स | उद्देश्य | उदाहरण |
|---|---|---|
/ | पूर्ण पथ शुरू करता है या बाल चरणों को अलग करता है | /html/body |
// | वर्तमान बिंदु से वंशजों का चयन करता है | //main//a |
. | वर्तमान संदर्भ का संदर्भ देता है | .//span |
.. | माता-पिता की ओर बढ़ता है | //span/.. |
@ | एक विशेषता का चयन या परीक्षण करता है | //a/@href |
[ ] | संभावित नोड्स को फ़िल्टर करता है | //li[@data-id] |
XPath एसेस क्या हैं?
XPath अक्ष संदर्भ नोड और संभावित नोड्स के बीच संबंध का वर्णन करते हैं।
- बच्चा और वंशज। एक स्तर नीचे जाएं या गहरे वंशजों के माध्यम से खोजें।
- माता-पिता और पूर्वज। एक ज्ञात नोड से एक समाहित तत्व की ओर ऊपर बढ़ें।
- अनुसरण करने वाला-भाई और पूर्ववर्ती-भाई। संदर्भ नोड के बगल में नोड्स का चयन करें।
- विशेषता। तत्व नोड्स के बजाय विशेषताओं का चयन करें।
- अपने। वर्तमान संदर्भ नोड का परीक्षण या बनाए रखें।
XPath का वेब स्क्रैपिंग में उपयोग कैसे किया जाता है?
वेब स्क्रैपर्स तत्वों, विशेषताओं, और पाठ को दस्तावेज़ संरचना और संबंधों के आधार पर स्थान खोजने के लिए XPath का उपयोग करते हैं।
पाठ-निर्भर चयन
पाठ द्वारा एक लेबल या शीर्षक खोजें, फिर एक निकटवर्ती मान का चयन करें।
पूर्वज यात्रा
एक स्थिर बच्चे के नोड पर शुरू करें और उस रिकॉर्ड कंटेनर पर जाएं जो इसे स्वामित्व में रखता है।
भाई-बहन संबंध
जब पृष्ठ में उपयोगी विशेषताएँ न हों, तो एक ज्ञात लेबल का अनुसरण करने वाला मान चुनें।
XML स्रोत
namespace और दस्तावेज़ विशेष संरचनाओं के साथ फ़ीड या अन्य XML दस्तावेज़ों नेविगेट करें।
ब्राउजर Document.evaluate() विधि एक संदर्भ नोड के खिलाफ XPath अभिव्यक्ति का मूल्यांकन करती है और एक XPathResult लौटाती है।
यह MDN XPath और CSS तुलना दिखाती है कि ऑक्सिस कैसे CSS संयोजक या नए मनोभावों के साथ मेल खाते हैं और जहां XPath विभिन्न क्षमताओं को बनाए रखता है।
आप स्थिर XPath कैसे लिखते हैं?
स्थिर XPath स्थिर विशेषताओं और स्थानीय संबंधों का उपयोग करता है, न कि दस्तावेज़ की मूल से एक पूर्ण पथ को कॉपी करने के लिए।
- एक स्थिर संदर्भ नोड चुनें जैसे कि एक रिकॉर्ड कंटेनर।
- ऐसे विशेषताओं या लेबल का उपयोग करें जो अर्थ व्यक्त करते हैं।
- जब एक छोटा संदर्भ उपलब्ध हो तो व्यापक वंशज खोजों को सीमित करें।
- वर्तमान लेआउट से बंधे लंबे स्थिति पथों से बचें।
- कई पृष्ठ प्रकारों पर अभिव्यक्ति का परीक्षण करें और परिणामों की गिनती करें।
XPath अभिव्यक्ति का मूल्यांकन कैसे किया जाता है?
XPath एक संदर्भ नोड के खिलाफ एक अभिव्यक्ति का मूल्यांकन करता है। एक स्थान कदम एक धुरी के साथ नोड चुनता है, एक नोड परीक्षण लागू करता है, और फिर परिणामी अनुक्रम को पूर्वानुमान के साथ फ़िल्टर करता है। संदर्भ मायने रखता है: एक अभिव्यक्ति जो शुरू होती है // एक व्यापक मूल से वंशजों की खोज करती है, जबकि एक सापेक्ष अभिव्यक्ति जो शुरू होती है . वर्तमान रिकॉर्ड कंटेनर के लिए स्थिर रहती है।
यह मूल्यांकन मॉडल समझाता है कि एक ही अभिव्यक्ति ब्राउजर कंसोल और एक पार्सर लूप के अंदर अलग-अलग परिणाम क्यों लौटा सकती है। यदि लूप में पहले से एक उत्पाद कार्ड है, तो एक सापेक्ष पथ उस कार्ड से शुरू होना चाहिए। एक अनस्कोप्ड वंशज खोज इच्छित रिकॉर्ड से बच सकती है और पृष्ठ पर पहले मिलान मान को बार-बार लौटा सकती है।
नोड क्रम और परिणाम प्रकार भी मायने रखते हैं। एक अभिव्यक्ति एक नोड अनुक्रम, स्ट्रिंग, संख्या, या बूलियन उत्पन्न कर सकती है, जो इंजन और कॉलिंग एपीआई पर निर्भर करती है। पुस्तकालय अनुबंध पढ़ें ताकि निकासी कोड गलती से गलत नोड को स्ट्रिंगफाई न करे या कई परिणामों की अनदेखी न करे।
वेब निकासी के लिए कौन सा XPath ऑक्सिस मायने रखता है?
बच्चे और वंशज धुरी सबसे अधिक नीचे की ओर नेविगेशन कवर करते हैं। विशेषताएँ तत्व से जुड़ी मूल्य चुनती हैं। माता-पिता और पूर्वज उस समय ऊपर की ओर बढ़ते हैं जब एक क्षेत्र को लेबल किए गए अनुभाग या घेरने वाले रिकॉर्ड से संबंधित होना चाहिए। फॉलोइंग-सिब्लिंग और प्रेसीडिंग-सिब्लिंग निकटतम तत्वों को जोड़ते हैं जो एक माता-पिता को साझा करते हैं।
आक्सिज़ उपयोगी हैं क्योंकि वे रिश्तों का वर्णन करते हैं न कि पूर्ण स्थितियों। एक मूल्य को उसी कार्ड से चुना जा सकता है जैसा कि एक उत्पाद शीर्षक है, भले ही अप्रासंगिक कार्ड समान वर्गों का उपयोग करते हों। एक तालिका का मान एक हेडर सेल के साथ जोड़ा जा सकता है जब कोई समर्पित कॉलम वर्ग मौजूद नहीं होता है।
व्यापक एक्सिस भी छिपे हुए मेल बना सकते हैं। एक पूर्वज खोज जो बहुत दूर चढ़ती है वह पृष्ठ के शरीर तक पहुंच सकती है, और एक फ़ॉलोइंग खोज किसी अन्य रिकॉर्ड में पार कर सकती है। एक विशिष्ट नोड परीक्षण और पूर्वानुमान के साथ धुरी को सीमित करें, फिर यह जांचें कि यह हर प्रतिनिधि टेम्पलेट पर कितने नोड लौटाता है।
XPath पूर्वानुमान कैसे काम करते हैं?
पूर्वानुमान चरण द्वारा चुने गए नोड्स को फ़िल्टर करते हैं। वे विशेषताएँ, बच्चे के तत्व, सामान्यीकृत पाठ, स्थिति, या शर्तों के संयोजन का परीक्षण कर सकते हैं। चूंकि पूर्वानुमान एक संदर्भ में चलते हैं, इसलिए स्थिति वर्तमान नोड अनुक्रम के सापेक्ष होती है न कि मूल मार्कअप में एक सार्वभौमिक सूची में।
जब पृष्ठ एक अर्थपूर्ण पहचानकर्ता को प्रकट करता है, तो विशेषता समानता आमतौर पर स्थिति से स्पष्ट होती है। जब एक लेबल रिश्ते को परिभाषित करता है, तो पाठ की शर्तें उपयोगी होती हैं, लेकिन दृश्य भाषा स्थानीय या संपादकीय संशोधितियों के बीच बदल सकती है। उपयुक्त होने पर सफेद स्थान को सामान्यीकृत करें और आंशिक पाठ मेल से बचें जो कई अप्रासंगिक लेबल को स्वीकार कर सकता है।
पूर्वानुमानों को छोटे रखें ताकि वे स्पष्ट हों। यदि एक अभिव्यक्ति कई वैकल्पिक लेबल, गहरी पूर्वजता, और संख्या की स्थितियों को मिलाती है, तो पृष्ठ वर्गीकरण को क्षेत्र चयन से अलग करें। प्रत्येक ज्ञात टेम्पलेट के लिए एक छोटा XPath आमतौर पर परीक्षण करने के लिए सरल होता है, बजाय एक अभिव्यक्ति के जो हर संभव पृष्ठ को सहने के लिए इरादा रखती है।
XPath मेंNamespaces क्या हैं?
Namespaces उन तत्वों को अलग करते हैं जो एक स्थानीय नाम साझा करते हैं लेकिन विभिन्न शब्दावली में शामिल होते हैं। वे विशेष रूप से XML, SVG, और मिश्रित दस्तावेज़ों के लिए प्रासंगिक हैं। एक XPath अभिव्यक्ति में namespace उपसर्ग को उस सही namespace URI से संबंधित होना चाहिए जो ब्राउज़र या पार्सर द्वारा उपयोग किए गए एपीआई के माध्यम से है।
HTML दस्तावेज़ जो HTML के रूप में पार्सित होते हैं, अक्सर XHTML या XML दस्तावेज़ों की तुलना में भिन्न namespace व्यवहार होता है। एक अभिव्यक्ति जो HTML DOM पर काम करती है वह तब विफल हो सकती है जब वही दिखने वाला मार्कअप XML पार्सर के माध्यम से संसाधित किया जाता है। पथ को समायोजित करने से पहले प्रतिक्रिया सामग्री प्रकार और पार्सिंग मोड की पुष्टि करें।
यदि समाहित SVG या अन्य namespace लक्ष्य का हिस्सा है, तो इसे चुने हुए इंजन में सीधे परीक्षण करें। कुछ सुविधा एपीआई namespace-निर्धारण सहायक प्रदान करते हैं, जबकि अन्य स्पष्ट मानचित्रण की आवश्यकता होती है। किसी अभिव्यक्ति को मेल करने के लिए namespace जाँच को हटा न दें; यह एक अप्रत्याशित तत्व का चयन कर सकता है जिसमें समान स्थानीय नाम हो।
आप XPath का डिबग और रखरखाव कैसे करते हैं?
एक समय में एक कदम डिबग करें। एक स्थिर कंटेनर से शुरू करें, नियंत्रित नोड्स का निरीक्षण करें, और केवल तभी अगली धुरी या पूर्वानुमान जोड़ें जब वर्तमान परिणाम सही हो। उस संदर्भ नोड से सापेक्ष पथों का परीक्षण करें जो उत्पादन कोड उपयोग करेगा।
सूची पृष्ठों, विवरण, खाली राज्यों, स्थानीयकृत प्रकारों, और वैकल्पिक मॉड्यूल के लिए प्रतिनिधि दस्तावेज़ स्टोर करें। पूर्वानुमान को मान, नोड की गिनती, और रिकॉर्ड सीमाओं को कवर करना चाहिए। एक पथ जो अभी भी एक स्ट्रिंग लौटाता है वह गलत हो सकता है यदि वह अब एक ब्रेडक्रंब या छिपी हुई डुप्लिकेट की ओर इशारा करता है।
निकासी स्कीमा और पृष्ठ वर्गीकरण के साथ संस्करण अभिव्यक्तियों। जब एक स्रोत एक नया टेम्पलेट पेश करता है, तो उसे स्पष्ट रूप से पहचानें और उपस्थिति को मापें। यह XPath रखरखाव को पारदर्शी रखता है और यह सुनिश्चित करता है कि एक अभिव्यक्ति में जो व्यवहार पहले से ही समझना कठिन है उसे चुपचाप जोड़ने से बचा जाता है।
निष्कर्ष
XPath एक पेड़-प्रश्न भाषा है जिसमें नेविगेशन, फ़िल्टरिंग, और संकलित मानों के लिए मजबूत समर्थन है। यह डेटा निकासी कार्यों में उपयोगी एंकर और इच्छित नोड के बीच माता-पिता, पूर्वज, भाई-बहन, विशेषता, या पाठ स्थितियों द्वारा संबंधित होता है।
क्या आप अपने वेब डेटा वर्कफ़्लो बनाने के लिए तैयार हैं?
सार्वजनिक वेब सामग्री पुनः प्राप्त करने के लिए Scrapeless का उपयोग करें, फिर उस पैटर्न को लागू करें जो आपके डेटा सेट के लिए उपयुक्त हो।
मुफ्त शुरू करें →सामान्य प्रश्न
क्या XPath HTML के साथ काम करता है?
हाँ। ब्राउज़र और ऑटोमेशन एपीआई पैक किए गए HTML दस्तावेज़ों के खिलाफ XPath का मूल्यांकन कर सकते हैं, XPath संस्करण और सुविधाओं के लिए इनका कार्यान्वयन किया जाता है।
XPath में / और // के बीच का अंतर क्या है?
एकल स्ट्रोक सीधे बाल कदमों को अलग करता है, जबकि डबल स्ट्रोक वर्तमान बिंदु से वंशजों को खोजता है।
क्या XPath विशेषताओं का चयन कर सकता है?
हाँ। विशेषता धुरी @ उपसर्ग का उपयोग करती है, जैसे //a/@href लिंक तत्वों पर href विशेषताओं के लिए।
चौड़े // खोजों को स्कोप क्यों करना चाहिए?
एक छोटी संदर्भ अनावश्यक यात्रा को कम करती है और अभिव्यक्ति के इच्छित रिकॉर्ड सीमा को स्पष्ट करती है।