CSS चयनकर्ता क्या है?
Scrapeless एजेंट ब्राउज़र वेब डेटा एक्सट्रैक्शन के लिए CSS चयनकर्ताओं को लागू करने से पहले प्रदर्शित तत्वों की जांच करने के लिए क्लाउड ब्राउज़र सत्र प्रदान करता है।
एक CSS चयनकर्ता एक पैटर्न है जो दस्तावेज़ वृक्ष में तत्वों से मेल खाता है। स्टाइलशीट चयनकर्ताओं का उपयोग यह चुनने के लिए करती हैं कि कौन से तत्व नियम प्राप्त करते हैं, और ब्राउज़र क्वेरी एपीआई उसी सामान्य पैटर्न भाषा का उपयोग तत्वों को निरीक्षण या निष्कर्षण के लिए स्थानांतरित करने के लिए करते हैं।
एक चयनकर्ता एक तत्व की पहचान करता है; यह यह निर्धारित नहीं करता कि उस तत्व का क्या अर्थ है। वेब स्क्रैपिंग में, आपको अभी भी एक रिकॉर्ड सीमा और एक फील्ड अनुबंध की आवश्यकता होती है। चयनकर्ता को इस सीमा को इस हद तक स्पष्ट रूप से व्यक्त करना चाहिए कि लेआउट परिवर्तन का निदान किया जा सके, बजाय इसके कि चुपचाप असंबंधित डेटा उत्पन्न किया जाए।
TL;DR
- CSS चयनकर्ता तत्वों से मेल खाते हैं। पाठ या गुणों को पढ़ना एक अलग क्रिया है।
- संबंध सूत्र वृक्ष संबंधों को व्यक्त करते हैं। एक वंशज और एक प्रत्यक्ष संतान विभिन्न चयन हैं।
- रिकॉर्ड दायरा अनायास जोड़ी बनाने से रोकता है। मानचित्र में उन फ़ील्ड्स का चयन करें जिनका संबंध संबंधित ईकाई से है।
- रनटाइम समर्थन और एक्सटेंशन भिन्न होते हैं। एक पुस्तकालय-विशिष्ट चयनकर्ता एक ब्राउज़र एपीआई में विफल हो सकता है।
कैसे चयनकर्ता दस्तावेज़ वृक्ष से संबंधित हैं
CSS चयनकर्ता तत्वों को नामों, विशेषताओं, संबंधों और समर्थित स्थितियों के अनुसार मिलाते हैं। Selectors भाषा विनिर्देश मानक पैटर्न भाषा का वर्णन करता है।
एक स्टाइलशीट में, एक मेल खाता तत्व नियम से संबंधित घोषणाएँ प्राप्त करता है। एक निष्कर्षण स्क्रिप्ट में, एक ब्राउज़र चयनकर्ता API मेल खाते तत्वों को लौटाता है। समान चयन भाषा विभिन्न संचालन का समर्थन करती है क्योंकि मिलान करना और मेल का उपयोग करना अलग-अलग चरण हैं।
The DOM क्वेरी मॉडल वे ब्राउज़र ट्री और क्वेरी इंटरफेस को परिभाषित करते हैं। एक चयनकर्ता प्रदान की गई ट्री को क्वेरी करता है। यह उस मार्कअप की खोज नहीं कर सकता जो कभी प्राप्त नहीं हुआ या उस एप्लिकेशन को निष्पादित नहीं कर सकता जो गायब तत्वों को बनाएगा।
उस इनपुट सीमा का स्क्रैपिंग के लिए महत्वपूर्ण है। एक दृश्यमान ब्राउज़र पृष्ठ से कॉपी किया गया एक चयनकर्ता प्रारंभिक HTTP प्रतिक्रिया में कुछ नहीं पा सकता है क्योंकि ब्राउज़र ने रिकॉर्ड बाद में बनाया। एक खाली मिलान को सिंटैक्स त्रुटि मानने से पहले अपने रनटाइम द्वारा उपयोग किए जाने वाले दस्तावेज़ का निरीक्षण करें।
चुनें पाठकों को वास्तविक स्रोत संरचना से। वर्णनात्मक दिखने वाले वर्ग स्वचालित रूप से स्थिर नहीं होते, और एक संक्षिप्त चयनकर्ता आपके द्वारा आवश्यक क्षेत्र के लिए स्वचालित रूप से सही नहीं होता है।
तत्व, श्रेणी, आईडी, और विशेषता चयनकर्ताओं
बेसिक CSS चयनकर्ता तत्व प्रकार, वर्ग टोकन, ID या विशेषताओं से मेल खाते हैं। ये पैटर्न तब उपयोगी होते हैं जब स्रोत किसी इकाई या फ़ील्ड के लिए एक विश्वसनीय पहचानकर्ता प्रस्तुत करता है।
चुनने वाला a एक सामान्य HTML दस्तावेज़ में एंकर तत्वों से मेल खाता है। एक क्लास चयनकर्ता जैसे .product किसी तत्व को उस वर्ग टोकन के साथ मिलाता है; इसका मतलब यह नहीं है कि तत्व का संपूर्ण वर्ग विशेषता उस शब्द के बराबर होनी चाहिए। एक आईडी चयनकर्ता जैसे #catalog संबंधित आईडी मान से मेल खाता है।
एक गुण चयनकर्ता जैसे a[href] मिलान लंगर जो href गुण को ले जाते हैं। एक मान परीक्षण चयन को और संकुचित कर सकता है। ये व्याकरण उदाहरण हैं, न कि किसी विशेष गंतव्य वेबसाइट के खिलाफ सत्यापित चयनकर्ता।
प्रमुख विशेषताओं का उपयोग करते समय सुनिश्चित करें कि वे उस क्षेत्र के लिए उपयुक्त हैं जब स्रोत उन्हें प्रदान करता है। एक उत्पाद पहचान विशेषता रिकॉर्ड को एक जनरेटेड लेआउट वर्ग की तुलना में बेहतर तरीके से व्यक्त कर सकती है। फिर भी, प्रतिनिधि पृष्ठों के बीच उस विशेषता को सत्यापित करें; ऐसा नाम जो सेमांटिक प्रतीत होता है, असंगत रूप से उपयोग किया जा सकता है।
एक ID एक फ़ील्ड को सही बनाने की गारंटी नहीं है। एक पृष्ठ में सामान्य लेखन अपेक्षाओं के बावजूद डुप्लिकेट या अप्रत्याशित मार्कअप हो सकता है। स्ट्रिंग की स्पष्ट अद्वितीयता पर निर्भर रहने के बजाय निष्कर्षण रनटाइम में मैच संख्या और पृष्ठ की पहचान की जांच करें।
संयोजनकर्ता और रिकॉर्ड-स्कोप क्वेरी
संयोजक मिलान किए गए तत्वों के बीच संबंधों का वर्णन करते हैं। एक स्पेस वंशजों का चयन करता है, जबकि > प्रत्यक्ष-पुत्र संबंध की आवश्यकता होती है। भाई-बहन संयोजक उन तत्वों के बीच संबंध व्यक्त करते हैं जो एक माता-पिता साझा करते हैं।
एक चित्रात्मक उत्पाद-कार्ड पेड़ के लिए, .product a کسی بھی کارڈ کے نیچے کہیں بھی اینکرز کو ملا سکتا ہے، جبکہ .product > a इसके ठीक नीचे एक एंकर की आवश्यकता है। एक नया लपेटन दूसरे चयनकर्ता को उस रिकॉर्ड के दृश्य अर्थ को बदले बिना प्रभावित कर सकता है।
इरादे से संबंध चुनें। एक व्यापक वंशज क्वेरी में सिफारिश लिंक शामिल हो सकते हैं, जबकि एक अत्यधिक सटीक बच्चा पथ उन प्रस्तुति विवरणों को एन्कोड कर सकता है जो क्षेत्र के लिए अप्रासंगिक हैं। लक्ष्य तत्व की पहचान करने के लिए स्रोत की जांच करें।
नियम: 1. केवल अनुवादित पाठ आउटपुट करें - कोई स्पष्टीकरण नहीं, कोई अतिरिक्त रैपिंग कोड फ़ेंस नहीं। 2. मार्कडाउन/HTML संरचना (शीर्षक, सूचियाँ, लिंक, तालिकाएँ) को ठीक वैसा ही बनाए रखें। 3. किसी भी प्लेसहोल्डर टोकन जैसे @@CODEBLOCK_0@@ या @@INLINECODE_0@@ को EXACTLY जैसा है वैसा ही रखें; कभी भी अनुवादित, पुनर्व्यवस्थित, जोड़ा या पुनः प्रारूपित न करें। 4. किसी भी सामान्य पाठ को कोड ब्लॉक में लपेटें नहीं, और ``` कोड फ़ेंस को जोड़ें या हटाएँ नहीं। दोहराए गए रिकॉर्ड के लिए, पहले प्रत्येक रिकॉर्ड कंटेनर का स्थान खोजें और उस संदर्भ में उसके क्षेत्रों का प्रश्न करें। उन सूचियों को संयोजित करने के लिए सभी शीर्षकों और सभी कीमतों को स्वतंत्र रूप से एकत्रित न करें। गायब क्षेत्रों या डाली गई मॉड्यूल उनकी सूचियों को असहमत कर सकती हैं।
स्कोप किए गए ब्राउज़र प्रश्नों का भी परीक्षण किया जाना चाहिए जहां पूर्वज संबंध या अधिक जटिल चयनकर्ता शामिल हैं। उपयोग करें :scope जहाँ इच्छित संबंध को क्वेरी रूट का स्पष्ट संदर्भ चाहिए। हर पार्सर एक समान व्यवहार लागू करता है, यह मानने के बजाय वास्तविक रनटाइम में अभिव्यक्ति को सत्यापित करें।
प्सूडो-क्लासेस और संरचनात्मक शर्तें
नकली-क्लास तत्व मिलान के लिए स्थितियाँ जोड़ते हैं, जिसमें संरचना का स्थान या संबंध शामिल होता है। उनका मूल्य इस पर निर्भर करता है कि क्या स्थिति स्थिर डेटा अर्थ या अस्थायी लेआउट स्थिति का वर्णन करती है।
एक चयनकर्ता जो :nth-child() को एक तत्व की स्थिति पर भाई-बहनों के बीच निर्भर करता है। एक नया भाई जोड़ने से उस स्थिति में बदलाव हो सकता है। एक स्थिति चयन एक स्थिर दस्तावेज़ के लिए मान्य हो सकता है, लेकिन इसे एक स्थायी क्षेत्र नियम बनने से पहले सबूत की आवश्यकता होती है।
आधुनिक संबंध चयनकर्ता जैसे :has() एक तत्व को एक सापेक्ष चयनकर्ता स्थिति के आधार पर मिलाकर देख सकता है। इसका अर्थ यह है कि यह एक सामान्य कथन है कि CSS कभी भी एक-पैरेंट-संबंधित पैटर्न का चयन नहीं कर सकता है, यह गलत है। रनटाइम में जहां क्वेरी चलेगी, वहां समर्थन की जांच की आवश्यकता है।
मानक CSS चयनकर्ता तत्व पाठ का सामान्य उपस्ट्रिंग खोज प्रदान नहीं करते हैं। कुछ स्क्रैपिंग पुस्तकालय एक जोड़ते हैं :contains() विस्तार या विशेष पाठ स्थानिक। ये इंटरफेस मानक ब्राउज़र चयनकर्ता भाषा से अलग हैं।
अपने कार्यान्वयन नोट्स में विस्तार विन्यास को स्पष्ट रखें। एक पुस्तकालय द्वारा स्वीकार किया गया चयनकर्ता ब्राउज़र क्वेरी API में एक त्रुटि पैदा कर सकता है। पार्सर संगतता को एक वास्तविक बाधा के रूप में मानें, खासकर जब एक स्क्रैपिंग वर्कफ़्लो को वातावरण के बीच स्थानांतरित किया जा रहा हो।
तत्वों का चयन और फ़ील्ड मान पढ़ना
CSS चयन ब्राउज़र क्वेरी API में तत्वों को लौटाता है, जबकि फ़ील्ड निष्कर्षण उन तत्वों से डेटा पढ़ता है। पाठ, विशेषताएँ और DOM गुण विभिन्न मानों का प्रतिनिधित्व कर सकते हैं।
एक लिंक के लिए, href विशेषता में एक सापेक्ष संदर्भ हो सकता है, जबकि ब्राउज़र की संबंधित विशेषता एक समाधानित URL को उजागर कर सकती है। तय करें कि फ़ील्ड अनुबंध किस मान की आवश्यकता है और जब यह परिणाम को समझाने में मदद करता है तो स्रोत संदर्भ को संरक्षित करें।
पाठ के लिए, कच्ची वंशज सामग्री को प्रस्तुत पाठ व्यवहार से अलग करें। छिपे हुए तत्व, इनलाइन मार्कअप, और श्वेत स्थान चयनित विशेषता द्वारा प्राप्त मान को प्रभावित कर सकते हैं। जानबूझकर सामान्य बनाएं और कार्य के लिए महत्वपूर्ण गुणों को बनाए रखें।
द querySelectorAll परिणाम व्यवहार मेल खाए गए तत्वों का एक स्थैतिक संग्रह लौटाता है। यह बाद में पृष्ठ परिवर्तनों के होने पर उस संग्रह को निरंतर अपडेट नहीं करता है। यदि पृष्ठ अधिक रिकॉर्ड प्रस्तुत करता है, तो अपडेटेड पेड़ की जांच के लिए एक नया क्वेरी आवश्यक हो सकता है।
एक फ़ील्ड को स्वीकार करने से पहले मेल खाने की संख्या की जांच करें। एक एकल-परिणाम API चुपचाप कई मेलों में से पहले को चुन सकती है, और एक खाली परिणाम या तो सामग्री के गायब होने या एक गलत दस्तावेज़ का मतलब हो सकता है। मान्यता को यह निर्धारित करना चाहिए कि वास्तव में कौन-सी स्थिति लागू होती है।
CSS चयनकर्ताओं की तुलना XPath से
CSS चयनकर्ता और XPath दोनों एक दस्तावेज़ वृक्ष में सामग्री को संग мест करते हैं, लेकिन ये विभिन्न अभिव्यक्ति मॉडल और लौटाने के व्यवहार की पेशकश करते हैं। उस रूप का उपयोग करें जो इच्छित फ़ील्ड का स्पष्ट रूप से वर्णन करता है और आपके निष्कर्षण वातावरण में कार्य करता है।
| प्रश्न | CSS चयनकर्ता दृष्टिकोण | XPath दृष्टिकोण |
|---|---|---|
| साधारण तत्वों का मिलान करें | तत्व और विशेषता पैटर्न संक्षिप्त होते हैं। | पथ और पूर्ववर्ती मेल खाने वाले नोड्स की पहचान करते हैं। |
| संबंधों का वर्णन करें | संयोग और समर्थित संबंध स्थितियाँ। | नामित धुरी और पथ चरण। |
| पाठ सामग्री द्वारा फ़िल्टर करें | कोई सामान्य मानक पाठ-उपस्ट्रिंग चयनकर्ता नहीं। | पाठ कार्य पूर्ववर्ती में आ सकते हैं। |
| विशेषता मान पढ़ें | तत्व का चयन करें, फिर विशेषता पढ़ें। | एक अभिव्यक्ति समर्थन में मौजूद विशेषताओं का चयन कर सकती है। |
कोई भी भाषा स्थिर निष्कर्षण की गारंटी नहीं देती। एक क्वेरी जो उत्पन्न किए गए.wrapper पथ से जुड़ी है, दोनों सिंटैक्स में टूट सकती है। रनटाइम प्रदर्शन भी कार्यान्वयन और कार्यभार पर निर्भर करता है, इसलिए यदि गति डिज़ाइन को प्रभावित करती है तो वास्तविक निष्कर्षण कार्य को बेंचमार्क करें।
द CSS और XPath तुलना व्यावहारिक संदर्भ प्रदान करती है। वर्तमान समर्थन की जांच करें और बिना जांच के किसी पुस्तकालय का विस्तार ब्राउज़र चयनकर्ता में स्थानांतरित करने से बचें।
सहायक चयनकर्ता डिज़ाइन करना
एक रखरखाव योग्य चयनकर्ता एक पहचाने गए रिकॉर्ड के भीतर एक ज्ञात फ़ील्ड को व्यक्त करता है और गायब या अस्पष्ट मेलों के लिए एक स्पष्ट नियम होता है। यह स्पष्ट करना संभव होना चाहिए कि चयनकर्ता डेटा क्यों पहचानता है।
प्रतिनिधि रूपों का निरीक्षण करें: छूट वाले उत्पाद, अनुपलब्ध आइटम, वैकल्पिक पृष्ठ टेम्पलेट, और प्रासंगिक होने पर खाली सूची। यदि एक चयनकर्ता एक पृष्ठ पर एक बिक्री मूल्य और दूसरे पर एक इकाई मूल्य का मेल करता है, तो क्वेरी को एक अधिक सटीक अनुबंध की आवश्यकता है।
रद्द किए गए रिकॉर्ड के लिए साक्ष्य बनाए रखें। गायब मेलों में अचानक वृद्धि एक लेआउट परिवर्तन का संकेत दे सकती है; एक रिकॉर्ड में कई मेल एक नए संबंधित सामग्री मॉड्यूल का संकेत दे सकते हैं। उन परिणामों को अलग करें ताकि एक ऑपरेटर सही नियम को अपडेट कर सके।
JavaScript पर निर्भर पृष्ठों के लिए, Scrapeless एजन्ट ब्राउज़र वह क्लाउड निष्पादन प्रदान करता है जो कि एजन्ट ब्राउज़र दस्तावेज़ीकरण में वर्णित है।ब्राउज़र दस्तावेज़ वातावरण बनाता है; आपका चयनकर्ता और मान्यता नियम स्वीकार्य फ़ील्ड की पहचान करते हैं।
उपयोग करें Scrapeless मूल्य निर्धारण वर्तमान निष्पादन लागतों के लिए। संचालन योजना में पृष्ठ पहचान और क्षेत्र चयन बनाए रखने के कार्य को शामिल करें, क्योंकि एक रेंडरिंग सेवा यह तय नहीं कर सकती है कि आपकी व्यावसायिक कार्य का क्या अर्थ है।
निष्कर्ष
एक CSS चयनकर्ता तत्वों को उनके गुणों और संबंधों के माध्यम से मेल खाता है। विश्वसनीय स्क्रैपिंग उस चयन को एक रिकॉर्ड सीमा, स्पष्ट मान निकासी, और अनुपस्थित या कई मेल के प्रमाणीकरण के साथ जोड़ती है।
वास्तविक दस्तावेज़ और क्षेत्र के अर्थ के साथ शुरू करें। एक स्पष्ट चयनकर्ता पसंद करें जिसे स्रोत परिवर्तनों में परीक्षण किया जा सके, और किसी भी रनटाइम-विशिष्ट सिंटैक्स का रिकॉर्ड बनाएं। वह दृष्टिकोण आपको एक निकासी नियम देता है जो पृष्ठ बदलने पर भी समझने योग्य बना रहता है।
पृष्ठ को रेंडर करें और मेल को मान्य करें
अनुमत गतिशील सामग्री के लिए Scrapeless एजेंट ब्राउज़र का उपयोग करें, फिर उन रिकॉर्ड के भीतर चयन करें जो आपका कार्य परिभाषित करता है।
आज ही साइन अप करें और प्राप्त करें $5 का फ्री क्रेडिट — कोई क्रेडिट कार्ड की आवश्यकता नहीं है.
अपने $5 क्रेडिट का दावा करें →अक्सर पूछे जाने वाले प्रश्न
क्या CSS चयनकर्ता अपने-आप टेक्स्ट निकालते हैं?
एक CSS चयनकर्ता तत्वों से मेल खाता है; फिर एक ब्राउज़र स्क्रिप्ट उन तत्वों से टेक्स्ट, विशेषताएँ, या गुण पढ़ती है। परिणाम स्वीकार करने से पहले परिभाषित करें कि कौन सा मान क्षेत्र का प्रतिनिधित्व करता है।
एक कॉपी किया गया चयनकर्ता अविश्वसनीय क्यों है?
एक कॉपी किया गया चयनकर्ता अविश्वसनीय हो सकता है जब यह लपेटने वाली स्थितियों या उत्पन्न प्रस्तुति कक्षाओं को एन्कोड करता है। इच्छित रिकॉर्ड का निरीक्षण करें और उपलब्ध अर्थपूर्ण संरचना के आधार पर चयन नियम चुनें।
क्या :contains() ब्राउज़र querySelectorAll में कार्य करता है?
सामान्य टेक्स्ट-मैचिंग :contains() एक्सटेंशन ब्राउज़र querySelectorAll के लिए मानक CSS चयनकर्ता सिंटैक्स नहीं है। कुछ पुस्तकालय इसे अलग से प्रदान करते हैं। रनटाइम की पुष्टि करें और एक्सटेंशन को मानक चयनकर्ताओं से अलग रखें।
क्या CSS चयनकर्ताओं को हर जगह XPath को बदलना चाहिए?
CSS चयनकर्ताओं को डिफ़ॉल्ट रूप से हर जगह XPath को नहीं बदलना चाहिए। उस भाषा का चयन करें जो रिकॉर्ड के संबंध को स्पष्ट रूप से व्यक्त करती है औरruntime में उपयुक्त समर्थन है। किसी भी मामले में परिणामी क्षेत्रों की पुष्टि करें।