XPath क्या है?
Scrapeless एजन्ट ब्राउज़र चयन अभिव्यक्तियों जैसे XPath चुनने से पहले रेंडर किए गए पृष्ठ सामग्री का निरीक्षण करने के लिए क्लाउड ब्राउज़र क्रियान्वयन प्रदान करता है।
XPath एक भाषा है जो दस्तावेज़ वृक्ष के भागों का चयन और मूल्यांकन करने के लिए है। वेब स्क्रैपिंग में, एक XPath अभिव्यक्ति तत्वों, विशेषताओं, या एक रिकॉर्ड से संबद्ध पाठ का स्थान निश्चित कर सकती है। यह अभिव्यक्ति उस दस्तावेज़ पर कार्य करती है जो मूल्याकर्ता को प्रदान किया गया है; यह एक पृष्ठ को पुनः प्राप्त नहीं करती है या इसके अनुप्रयोग को निष्पादित नहीं करती है।
XPath तब उपयोगी है जब चयन वृक्ष में संबंधों पर निर्भर करता है। इसका सटीकता संदर्भ नोड, पथ चरण और पूर्वापर को समझने से आती है। डेवलपर उपकरणों से कॉपी किया गया लंबा पथ एक अर्थपूर्ण रिकॉर्ड सीमा से बंधी छोटी अभिव्यक्ति की तुलना में कम विश्वसनीय हो सकता है।
TL;DR
- XPath एक दस्तावेज़ वृक्ष को क्वेरी करता है। प्राप्ति और रेंडरिंग चयन से पहले होती है।
- सापेक्ष पथ संदर्भ पर निर्भर करते हैं। एक रिकॉर्ड-स्कोप्ड अभिव्यक्ति उन फ़ील्ड को बनाए रखने में मदद करती है जो समान इकाई से संबंधित हैं।
- पूर्वापर चयनित नोड्स को फ़िल्टर करते हैं। स्थिति और समुच्चय यह बदल सकते हैं कि एक अभिव्यक्ति कौन सा नोड लौटाती है।
- मूल्यांकनकर्ता समर्थन महत्वपूर्ण है। अपने रनटाइम में XPath संस्करण, परिणाम प्रकार और नामस्थान प्रबंधन की जांच करें।
जिस दस्तावेज़ वृक्ष को XPath देखता है
XPath एक दस्तावेज़ के वृक्ष प्रतिनिधित्व का मूल्यांकन करता है। XPath भाषा विनिर्देश इसके डेटा मॉडल के लिए स्थान पथ, अभिव्यक्तियाँ और कार्यों को परिभाषित करता है। एक पार्सर या ब्राउज़र उस वृक्ष की आपूर्ति करता है जिस पर अभिव्यक्ति चलाई जाती है।
स्रोत मार्कअप और पार्स की गई वृक्ष के बीच का भेद महत्वपूर्ण है। एक ब्राउज़र खराब HTML को ठीक कर सकता है और पृष्ठ स्क्रिप्ट तत्व जोड़ सकते हैं। एक HTTP पार्सर प्रारंभिक प्रतिक्रिया को देख सकता है, जबकि एक ब्राउज़र मूल्यांकनकर्ता वर्तमान दस्तावेज़ को देखता है। इसलिए, वही अभिव्यक्ति भिन्न इनपुट हो सकती है बिना अभिव्यक्ति के गलत होने के।
अपने निष्कर्षण वातावरण द्वारा उपयोग किए जाने वाले वास्तविक वृक्ष का निरीक्षण करें। सुनिश्चित करें कि आवश्यक तत्व मौजूद हैं और मुख्य रिकॉर्ड नेविगेशन और अनुशंसाओं से अलग है। यदि एक अभिव्यक्ति कुछ नहीं लौटाती है, तो शुरू करें यह पूछकर कि क्या इनपुट में अपेक्षित सामग्री है।
XPath उस वृक्ष में सामग्री लोड नहीं करता है। यदि एक उत्पाद की कीमत केवल तब आती है जब JavaScript निष्पादित होता है, तो प्रारंभिक मार्कअप का चयन इसे नहीं बना सकता। उचित दस्तावेज़ डिलीवरी के लिए प्राप्ति या रेंडरिंग चरण को जिम्मेदार रखें।
पथ चरण, अक्ष, और पूर्वापर
एक XPath पथ नोड्स की पहचान चरणों के माध्यम से करता है, और पूर्वापर चयन को संकीर्ण करते हैं। परिचित स्लैश संकेतक संबंधों का वर्णन करता है, लेकिन संदर्भ और समुच्चय सही परिणाम निर्धारित करते हैं।
एक बिल्कुला पथ दस्तावेज़ की जड़ से शुरू होता है। एक सापेक्ष पथ प्रदान की गई संदर्भ नोड से शुरू होता है। उदाहरण के लिए, .//a वर्तमान संदर्भ के अंतर्गत वंशज एंकर तत्वों का वर्णन करता है। यह एक संरचनात्मक उदाहरण है, न कि किसी विशिष्ट उत्पादन वेबसाइट के खिलाफ सत्यापित चयनकर्ता।
एक अक्ष एक संबंध का नाम देता है जैसे कि बच्चा, वंशज, माता-पिता, या अगले भाई। पूर्वापर एक विशेषता या अन्य स्थिति का परीक्षण कर सकते हैं। अभिव्यक्ति .//a[@href] अनुरूप HTML दस्तावेज़ में href विशेषता रखने वाले वंशज एंकरों को संकीर्ण करता है।
स्थिति का ध्यान रखना जरूरी है। (.//p)[1] वर्तमान संदर्भ के अंतर्गत समूहित वंशज परिणाम में पहले पैराग्राफ का चयन करता है, जबकि .//p[1] का स्तर-स्तरीय अर्थ अलग है। कोष्ठक क्वेरी तर्क का हिस्सा हैं, केवल स्वरूपण नहीं।
केवल वही संबंध चुनें जो डेटा की आवश्यकता होती है। प्रत्येक.wrapper तत्व पर आधारित एक पथ तब टूट सकता है जब एक हानिरहित लेआउट कंटेनर डाला जाता है। चुनाव को रिकॉर्ड अर्थ से जोड़ें जहां स्रोत उस अर्थ को प्रदान करता है।
सापेक्ष XPath और रिकॉर्ड सीमाएँ
सापेक्ष XPath मूल्यांकनकर्ता उस रिकॉर्ड को अपने संदर्भ के रूप में उपयोग करने पर ज्ञात रिकॉर्ड के भीतर निष्कर्षण बनाए रखता है। यह उन पृष्ठों पर मूल्यवान है जिनमें दोहराए गए तत्व होते हैं।
मान लें कि एक अनुमत कैनटैग पृष्ठ में उत्पाद कार्ड हैं। सबसे पहले प्रत्येक कार्ड की पहचान करें, फिर उस संदर्भ के भीतर कार्ड का शीर्षक, गंतव्य लिंक और कीमत निकालें। बाहरी लूप इकाई को परिभाषित करता है; आंतरिक अभिव्यक्तियाँ इसके फ़ील्ड को परिभाषित करती हैं।
कार्ड लूप के भीतर एक दस्तावेज़-व्यापी अभिव्यक्ति गलती से अन्य कार्डों से मान लौटाने के लिए तैयार हो सकती है। ऐसे अभिव्यक्तियों की सावधानीपूर्वक समीक्षा की जानी चाहिए जो वैश्विक वंशज खोज से शुरू होती हैं। जब इरादा वर्तमान नोड के नीचे रहने का होता है तो एक स्पष्ट संदर्भ-सापेक्ष रूप का उपयोग करें।
फिर गायब फ़ील्ड सही रिकॉर्ड से जुड़े रहते हैं। बिना मूल्य वाले एक कार्ड यदि मूल्य को कार्ड के अनुसार परिमाणित किया गया है तो यह बाद में प्रत्येक शीर्षक-कीमत जोड़ी को नहीं बदलता है। यह स्वतंत्र रूप से पृष्ठ-व्यापी सूचियों को एकत्रित करने और उन्हें स्थिति के अनुसार जोड़ने की सामान्य समस्या को रोकता है।
यही DOM वृक्ष और XPath मूल्यांकन मॉडल ब्राउज़र-स्तरीय संदर्भ प्रदान करता है उन संचालन के लिए। आपकी एप्लिकेशन को यह निर्णय लेने की आवश्यकता है कि कोई क्षेत्र वैकल्पिक है, अस्पष्ट है, या रिकॉर्ड को स्वीकार करने के लिए आवश्यक है।
पाठ, विशेषताएँ, और लौटाई गई मान
XPath चयन और पाठ निष्कर्षण संबंधित लेकिन भिन्न संचालन हैं। एक मूल्यांकनकर्ता अभिव्यक्ति और अनुरोधित परिणाम प्रकार के आधार पर नोड्स या परिवर्तित मान वापस कर सकता है।
एक विशेषता चयन एक लिंक मान की पहचान कर सकता है, जबकि एक तत्व चयन उस नोड की पहचान करता है जिससे एप्लिकेशन सामग्री पढ़ सकता है। एक टेक्स्ट-नोड अभिव्यक्ति तत्व के पूर्ण वंशज पाठ को पढ़ने से भिन्न व्यवहार कर सकती है। नेस्टेड स्पैन्स और अन्य मार्कअप उस भेद को स्पष्ट बनाते हैं।
इनलाइन तत्वों से भरे लेबल के लिए, केवल एक तात्कालिक टेक्स्ट नोड पढ़ना प्रदर्शित किए गए शब्दों के एक भाग को छोड़ सकता है। तय करें कि क्या क्षेत्र अनुबंध कच्चे नोड्स, संयोजित पाठ, या एक मानकीकृत स्ट्रिंग की आवश्यकता है। सफेद स्थान की सफाई या रूपांतरण जब अर्थ को मिटा सकता है तो स्रोत पाठ को बनाए रखें।
ब्राउज़र Document.evaluate परिणाम प्रबंधन स्पष्ट परिणाम प्रकारों का समर्थन करता है। एक एकल-नोड परिणाम अप्रत्याशित बहुलता छिपा सकता है यदि एप्लिकेशन कभी मेलों की गणना नहीं करता है। एक सूची या स्नैपशॉट को उस प्रकार के लिए उपयुक्त तरीके से संभालने की आवश्यकता है।
संवेदनाओं को सावधानीपूर्वक रखो। कुछ क्षेत्रों के लिए एक स्ट्रिंग परिणाम सुविधाजनक होता है, लेकिन यह एक गायब चयन को एक खाली मान में बदल सकता है। यदि अनुपस्थिति महत्वपूर्ण है, तो इसे बदलने से पहले चयन का सत्यापन करें।
namespaces और XPath रनटाइम संगतता
XPath संगतता मूल्यांकनकर्ता और दस्तावेज़ प्रकार पर निर्भर करती है। ब्राउज़र-नैटिव XPath सामान्यतः XPath 1.0 व्यवहार का पालन करता है; अन्य इंजन बाद के भाषा संस्करणों या एक्सटेंशनों का समर्थन कर सकते हैं।
बिना समर्थित कार्यों और लौटाने की हैंडलिंग की जांच किए बिना रनटाइम के बीच अभिव्यक्तियों को स्थानांतरित न करें। एक बाद के संस्करण के फ़ंक्शन का उपयोग करने वाली एक अभिव्यक्ति एक इंजन में मान्य हो सकती है और दूसरे में अनुपलब्ध हो सकती है। एक विशेषीकृत स्क्रैपर इंटरफ़ेस में कार्यशील क्वेरी का यह प्रमाण नहीं है कि वही वाक्य रचना ब्राउज़र में कार्य करती है।
Namespaces एक और भेदभाव पेश करते हैं, विशेष रूप से XML और नामित सामग्री के लिए। एक बिना उपसर्ग वाला नाम परीक्षण हर namespace में समान स्थानीय नाम के लिए एक सार्वभौमिक मिलान नहीं है। एक नामस्थान समाधानकर्ता आवश्यक हो सकता है ताकि एक क्वेरी उपसर्ग को इच्छित नामस्थान URI के साथ जोड़ा जा सके।
एक व्यापक स्थानीय नाम परीक्षण निदान के लिए उपयोगी हो सकता है, लेकिन यह असंबंधित शब्दावली से भी मेल खा सकता है। जब दस्तावेज़ इसकी आवश्यकता करता है, तो स्पष्ट नामस्थान हैंडलिंग को प्राथमिकता दें। पार्सर मोड को भी रिकॉर्ड करें: HTML के रूप में पार्स करना और XML के रूप में पार्स करना अलग-अलग नामकरण और पेड़ व्यवहार पैदा कर सकते हैं।
वास्तविक रनटाइम में प्रतिनिधि क्वेरी की पुष्टि करें। अभिव्यक्ति और निकासी अनुबंध को एक साथ स्टोर करें ताकि पुस्तकालय या पार्सर में परिवर्तन चुपचाप क्षेत्र का अर्थ न बदलें।
XPath और CSS चयनकर्ता
XPath और CSS चयनकर्ता सामान्य तत्व चयन के लिए ओवरलैप करते हैं, जबकि उनकी वाक्य रचना और मूल्यांकनकर्ता व्यवहार भिन्न होते हैं। उस भाषा को चुनें जो आपके रनटाइम में रिकॉर्ड संबंध को स्पष्ट रूप से व्यक्त करती है।
| चयन की आवश्यकता | XPath पर विचार | CSS पर विचार |
|---|---|---|
| तत्व या विशेषता मिलान | पथ चरण और गुणांक चयन को व्यक्त करते हैं। | तत्व, वर्ग, और विशेषता चयनकर्ता संक्षिप्त होते हैं। |
| पेड़ संबंध | Axes नामित संबंधों का वर्णन करते हैं। | संयोग और समर्थित संबंध चयनकर्ता संबंधों का वर्णन करते हैं। |
| पाठ-आधारित शर्तें | पाठ फ़ंक्शन गुणांक में भाग ले सकते हैं। | मानक चयनकर्ता सामान्य पाठ- सामग्री मिलान प्रदान नहीं करते हैं। |
| वापस किए गए डेटा | अभिव्यक्तियाँ और APIs नोड या मान लौटा सकते हैं। | ब्राउज़र चयनकर्ता APIs मिलान करने वाले तत्व लौटाते हैं। |
यह दावा करने से बचें कि CSS कभी भी पूर्वज से संबंधित शर्तें व्यक्त नहीं कर सकता: आधुनिक संबंध चयनकर्ता कुछ ऐसे संबंधों का वर्णन कर सकते हैं। इसके अलावा एक सार्वभौमिक गति रैंकिंग से बचें। प्रदर्शन मूल्यांकनकर्ता, अभिव्यक्ति, और कार्यभार पर निर्भर करता है।
यह XPath और CSS चयनकर्ता की तुलना परिपालन संदर्भ प्रदान करता है। एक अभिव्यक्ति या पुराने उदाहरण से श्रेणीबद्ध दावे को अपनाने से पहले रनटाइम व्यवहार और वर्तमान मानकों की पुनः जांच करें।
गतिशील पृष्ठों के लिए बनाए रखने योग्य XPath
बनाए रखने योग्य XPath एक स्थिर रिकॉर्ड अनुबंध और एक अवलोकनीय दस्तावेज़ पर निर्भर करता है। उपयुक्त मौजूद विशेषताओं का उपयोग करें, स्थिति संबंधों को सीमित करें, और दोनों गायब और कई मिलानों का सत्यापन करें।
एक ब्राउज़र-जनित पूर्ण पथ आज एक नोड की पहचान कर सकता है जबकि पूरी प्रस्तुति हायरार्की को एन्कोड करता है। यदि एक नया रैपर डाला गया है, तो पथ मेल खाना बंद कर सकता है। अर्थपूर्ण अनुभाग पर आधारित एक छोटा अभिव्यक्ति इच्छित क्षेत्र को बेहतर तरीके से व्यक्त कर सकती है, लेकिन इसे फिर भी स्रोत निरीक्षण की आवश्यकता होती है।
संबंधित भिन्नताओं के बीच अभिव्यक्तियों की जांच करें। एक कीमतों वाली वस्तु में कई मूल्य तत्व हो सकते हैं; एक बिना स्टॉक वाला उत्पाद खरीद नियंत्रण को छोड सकता है। उन भिन्नताओं को एकल खुश पृष्ठ के लिए अप्रत्याशित अपवादों के बजाय क्षेत्र डिजाइन का हिस्सा मानें।
जब रेंडरिंग आवश्यक हो, Scrapeless एजेंट ब्राउज़र उसी के कार्यान्वयन परत प्रदान करता है जैसी कि इसकी ब्राउज़र सत्र दस्तावेज़ में वर्णित है।. XPath क्वेरी परिणाम स्वरूप पेड़; यह यह निर्धारित नहीं कर सकता कि पृष्ठ अधिकृत है या डेटा आपकी व्यावसायिक अनुबंध को पूरा करता है।
समीक्षा करें Scrapeless मूल्य निर्धारण उस ब्राउज़र काम के लिए जिसकी आपकी कार्य की आवश्यकता है। चयन गुणवत्ता संचालन योजना में बनी रहती है, क्योंकि चयन गुणवत्ता आवेदन की जिम्मेदारी है।
निष्कर्ष
XPath एक दस्तावेज़ क्वेरी भाषा है जिसकी सटीकता संदर्भ, गुणांक, और रनटाइम व्यवहार पर निर्भर करती है। ज्ञात रिकॉर्ड के भीतर सापेक्ष चयन का उपयोग करें, मान स्वीकार करने से पहले बहुपरता की जाँच करें, और जानबूझकर नामस्थान को संभालें।
व्यक्तिगत मार्ग के बजाय वास्तविक पेड़ के साथ शुरू करें। प्रत्येक अभिव्यक्ति को एक क्षेत्र का अर्थ बताती है, फिर इसे प्रतिनिधि पृष्ठ भिन्नताओं में सत्यापित करें। परिणाम एक ऐसे क्वेरी है जिसे स्रोत बदलने पर समझाया जा सकता है।
दस्तावेज़ का निरीक्षण करें इससे पहले कि आप निकालें
अनुमत गतिशील-पृष्ठ रेंडरिंग के लिए Scrapeless Agent ब्राउज़र का उपयोग करें, फिर रिकॉर्ड-स्कोप्ड निष्कर्षण नियम लागू करें।
आज ही साइन अप करें और प्राप्त करें $5 मुफ्त क्रेडिट में — कोई क्रेडिट कार्ड की आवश्यकता नहीं है.
अपने $5 क्रेडिट का दावा करें →सामान्य प्रश्न
क्या XPath एक वेबपृष्ठ लाता है?
XPath एक वेबपृष्ठ नहीं लाता है। यह उस दस्तावेज़ वृक्ष का मूल्यांकन करता है जो एक पार्सर या ब्राउज़र द्वारा प्रदान किया गया है। पुनर्प्राप्ति और कोई भी आवश्यक रेंडरिंग तब होती है जब अभिव्यक्ति उपयोगी सामग्री का चयन कर सके।
आधिकारिक और सापेक्ष XPath के बीच क्या अंतर है?
आधिकारिक XPath दस्तावेज़ की जड़ से शुरू होती है, जबकि सापेक्ष XPath प्रदान की गई संदर्भ नोड का उपयोग करती है। रिकॉर्ड-स्कोप्ड सापेक्ष चयन मदद करता है कि क्षेत्र उस इकाई से जुड़े रहें जिसे वर्तमान में प्रोसेस किया जा रहा है।
क्यों एक XPath अभिव्यक्ति कई मेल लौटाती है?
एक XPath अभिव्यक्ति कई मेल लौटाती है जब कई नोड्स इसके पथ और पूर्वाग्रहों को संतुष्ट करते हैं। पहले मान को लेने से पहले यह जांचें कि वह बहुपरकारिता इरादा है या नहीं। अस्पष्टता एक गलत रिकॉर्ड सीमा को प्रकट कर सकती है।
क्या XPath हर स्क्रैपर के लिए CSS से बेहतर है?
XPath हर स्क्रैपर के लिए CSS से बेहतर नहीं है। यह चयनित संबंध और रनटाइम के समर्थन पर निर्भर करता है। स्पष्ट, मान्य अभिव्यक्तियाँ एक सार्वभौमिक वरीयता से अधिक उपयोगी होती हैं।