जबकि कई अन्य लेख डेटा निकालने के तरीके के बारे में बताते हैं, इस लेख में बताया गया है कि कैसे निकाले गए डेटा को परिष्कृत किया जा सकता है ताकि केवल वांछित जानकारी बनी रहे। ऐसा करने के लिए विशेष Criteria
तरीकों का उपयोग किया जाता है, जबकि निम्नलिखित सभी उदाहरणों में डेटा एक HTML तालिका से निकाला जाता है, यह डेटा विभिन्न स्रोतों से निकाला जा सकता है जब तक कि डेटा सामग्री div, spans, चित्र आदि के प्रत्येक स्रोत समान लंबाई के होते हैं।
नीचे दी गई तालिका डेटा इस उदाहरण में तालिका में स्क्रैप किया जा रहा है, जिसमें चार कॉलम हैं शीर्षक, लेखक, पुस्तक की आयु और हैसियत.
शीर्षक | लेखक | पुस्तक की आयु | हैसियत |
---|---|---|---|
गार्डन कैसे करें | जॉन | 5 | प्रकाशित |
कैमरा का उपयोग कैसे करें | सराह | 0 | अधूरा |
कैमरा का उपयोग कैसे करें | सराह | 0 | अधूरा |
खगोल विज्ञान को आसान बना दिया | डोमिनिक | 1 | समीक्षाधीन |
आयरन कैसे करें | पॉल | 1 | समीक्षाधीन |
कैसे आकर्षित करने के लिए | माइक | 3 | प्रकाशित |
पीसी का उपयोग कैसे करें | राहेल | 4 | प्रकाशित |
var titles = Page.getTagValues({"position":1,"tag":{"equals":"td"},"parent":{"tag":{"equals":"tr"}}}); var authors = Page.getTagValues({"position":2,"tag":{"equals":"td"},"parent":{"tag":{"equals":"tr"}}}); var ages = Page.getTagValues({"position":3,"tag":{"equals":"td"},"parent":{"tag":{"equals":"tr"}}}); var statuses = Page.getTagValues({"position":4,"tag":{"equals":"td"},"parent":{"tag":{"equals":"tr"}}});
अक्सर स्क्रैप किए गए डेटा को परिष्कृत करने की आवश्यकता होती है ताकि उनके पास केवल वही जानकारी हो, जिसकी उन्हें आवश्यकता होती है। यहीं पर है Criteria
कार्यों का उपयोग किया जाता है। उदाहरण के लिए यदि केवल प्रकाशित पुस्तकों की आवश्यकता है, तो आपको ऊपर दिए गए स्टेटस कॉलम को प्रकाशित करने के लिए प्रतिबंधित करना होगा और फिर नीचे दिखाए गए अन्य कॉलम डेटा में उन परिवर्तनों को लागू करना होगा।
Criteria.create(); statuses = Criteria.equals(statuses, "Published"); titles = Criteria.apply(titles); authors = Criteria.apply(authors); ages = Criteria.apply(ages);
उपयोग करते समय Criteria
डेटा को कम करने के तरीके सभी परिवर्तनों को एक बार में एक कॉलम पर, से पहले लागू किया जाना चाहिए apply
विधि का उपयोग किसी भी अन्य स्तंभों पर किया जाता है जिनके पास संबंधित रिकॉर्ड को हटाना होता है। एक बार पूरा Criteria.create()
किसी अन्य कॉलम के लिए मापदंड निर्धारित किए जाने से पहले विधि को बुलाया जाना चाहिए। यह इस कारण से है कि यह कॉल करने के लिए सबसे अच्छा अभ्यास है Criteria.create()
किसी भी अन्य मापदंड विधियों से पहले।
उदाहरण में स्टेटस कॉलम को केवल शामिल करने के लिए प्रतिबंधित किया गया है प्रकाशित, तब का उपयोग कर Criteria.apply
विधि तीनों स्तंभों में संगत रिकॉर्ड को भी सभी कॉलमों को सुसंगत रखने के लिए हटा दिया गया है। याद रखें कि लागू विधि केवल तभी उपयोगी है जब विभिन्न कॉलम में समान संख्या में रिकॉर्ड हों।
कई तरीकों से डेटा को प्रतिबंधित करने के लिए क्रिटेरिया को भी एक साथ जोड़ा जा सकता है। नीचे दिया गया उदाहरण पुस्तक की आयु के कॉलम को एक से अधिक लेकिन पांच साल से कम पुरानी किताबों का उपयोग करके प्रतिबंधित करता है Criteria.lessThan()
और Criteria.greaterThan()
तरीकों.
Criteria.create(); ages = Criteria.greaterThan(ages, 1); ages = Criteria.lessThan(ages, 5); titles = Criteria.apply(titles); authors = Criteria.apply(authors); statuses = Criteria.apply(statuses);
कभी-कभी डुप्लिकेट डेटा होता है जिसे हटाने की आवश्यकता होती है, इस जानकारी को निकालने के लिए आप उपयोग कर सकते हैं Criteria.unique
विधि.
Criteria.create(); titles = Criteria.unique(titles); authors = Criteria.apply(authors); ages = Criteria.apply(ages); statuses = Criteria.apply(statuses);
अब शीर्षक के आधार पर किसी भी डुप्लिकेट पंक्तियों को हटा दिया जाएगा। अगली विधि है Criteria.remove
तरीका। यह कॉलम से आइटम निकालता है यदि उन कॉलम मान सरणी पैरामीटर में पाए जाते हैं।
var authorsToRemove = ["Mike","Rachel"]; Criteria.create(); authors = Criteria.remove(authors, authorsToRemove); titles = Criteria.apply(titles); ages = Criteria.apply(ages); statuses = Criteria.apply(statuses);
यहां सभी रिकॉर्ड जो लेखकों के कॉलम में माइक और रेचल के बराबर हैं, उन्हें लागू विधि को हटा दिया जाता है और फिर अन्य कॉलम से संबंधित रिकॉर्ड को हटा दिया जाता है।