गो के लिए ब्यूटिफुल सॉप के विकल्प
एचटीएमएल से डेटा निकालने के विषय को आगे बढ़ाते रहें
- जावा में ब्यूटिफल सॉप के एनालॉग के लिए, सॉप का उपयोग करें।
- CSS चयनकर्ता समर्थन के लिए, गोक्वेरी को विचार करें।
- XPath क्वेरी के लिए, एचटीएमएलक्वेरी का उपयोग करें।
- ब्यूटिफल सॉप के अन्य प्रेरणा के विकल्प के लिए, नोड पर नजर रखें।
यदि आप जावा में ब्यूटिफल सॉप के समकक्ष ढूंढ रहे हैं, तो कई पुस्तकालय एक जैसे HTML पार्सिंग और स्क्रैपिंग कार्यक्षमता प्रदान करते हैं:
सॉप
- सॉप एक जावा पुस्तकालय है जो विशेष रूप से पायथन के ब्यूटिफल सॉप के एनालॉग के रूप में डिज़ाइन किया गया है। इसकी API उद्देश्यपूर्ण रूप से समान है, जैसे कि
Find
,FindAll
, औरHTMLParse
जैसे फ़ंक्शन, जो ब्यूटिफल सॉप से परिचित विकासकर्ताओं के लिए जावा में स्थानांतरित करना आसान बनाता है। - यह आपको वेब पृष्ठों को फेंकने, HTML को पार्स करने और DOM के माध्यम से डेटा निकालने की अनुमति देता है, ब्यूटिफल सॉप के जैसे।
- उपयोग के उदाहरण:
resp, err := soup.Get("https://xkcd.com") if err != nil { os.Exit(1) } doc := soup.HTMLParse(resp) links := doc.Find("div", "id", "comicLinks").FindAll("a") for _, link := range links { fmt.Println(link.Text(), "| लिंक :", link.Attrs()["href"]) }
- नोट: सॉप CSS चयनकर्ता या XPath का समर्थन नहीं करता है; यह टैग और गुण आधारित खोज पर निर्भर करता है।
गोक्वेरी
- गोक्वेरी एक अन्य लोकप्रिय जावा पुस्तकालय है HTML पार्सिंग के लिए, जो DOM ट्रैवर्सल और मैनिपुलेशन के लिए जूरी के जैसे सिंटैक्स प्रदान करता है।
- यह CSS चयनकर्ता का समर्थन करता है, जो सॉप की तुलना में जटिल प्रश्नों के लिए अधिक लचीला होता है।
- उपयोग के उदाहरण:
doc, err := goquery.NewDocumentFromReader(resp.Body) doc.Find("div#comicLinks a").Each(func(i int, s *goquery.Selection) { fmt.Println(s.Text(), "| लिंक :", s.AttrOr("href", "")) })
एचटीएमएलक्वेरी जावा पुस्तकालय
एचटीएमएलक्वेरी एक जावा पुस्तकालय है जो HTML दस्तावेज़ों से डेटा पार्स करने और निकालने के लिए XPath अभिव्यक्ति के माध्यम से डिज़ाइन किया गया है। यह HTML ट्री संरचना के माध्यम से ट्रैवर्सल और क्वेरी करने के लिए एक सीधा API प्रदान करता है, जो वेब स्क्रैपिंग और डेटा निकालने के कार्यों के लिए विशेष रूप से उपयोगी होता है।
मुख्य विशेषताएं
- HTML दस्तावेज़ों के साथ XPath 1.0/2.0 अभिव्यक्ति के माध्यम से क्वेरी करने की अनुमति देता है।
- स्ट्रिंग, फ़ाइलों या URL से HTML लोड करने का समर्थन करता है।
- एकल या बहुत से नोड को खोजने, गुणों को निकालने और XPath अभिव्यक्ति का मूल्यांकन करने के लिए फ़ंक्शन प्रदान करता है।
- XPath अभिव्यक्ति के पुनः संकलन के बिना प्रदर्शन के लिए अपनाने के लिए लRU आधारित क्वेरी कैशिंग शामिल है।
- जावा के मानक HTML पार्सिंग पुस्तकालयों पर बना है और अन्य जावा पुस्तकालयों जैसे गोक्वेरी के साथ संगत है।
आधारिक उपयोग के उदाहरण
स्ट्रिंग से HTML लोड करें:
doc, err := htmlquery.Parse(strings.NewReader("..."))
URL से HTML लोड करें:
doc, err := htmlquery.LoadURL("http://example.com/")
सभी `` तत्वों को खोजें:
list := htmlquery.Find(doc, "//a")
सभी `` तत्वों को खोजें जिनमें href
गुण है:
list := htmlquery.Find(doc, "//a[@href]")
पहले `` तत्व के पाठ को निकालें:
h1 := htmlquery.FindOne(doc, "//h1")
fmt.Println(htmlquery.InnerText(h1)) // अंदर के पाठ को आउटपुट करता है
`` तत्वों से href
गुण के सभी मूल्यों को निकालें:
list := htmlquery.Find(doc, "//a/@href")
for _, n := range list {
fmt.Println(htmlquery.SelectAttr(n, "href"))
}
सामान्य उपयोग के मामले
- वेब स्क्रैपिंग जहां XPath CSS चयनकर्ता की तुलना में अधिक तीव्र या जटिल प्रश्न प्रदान करता है।
- HTML दस्तावेज़ों से संरचित डेटा निकालना।
- HTML ट्री को कार्यक्रमात्मक रूप से नेविगेट और मैनिपुलेट करना।
इस्तेमाल करने के तरीके
go get github.com/antchfx/htmlquery
नोड
- नोड एक जावा पैकेज है जो ब्यूटिफल सॉप के प्रेरणा पर आधारित है, जो HTML और XML दस्तावेज़ों से डेटा निकालने के लिए एपीआई प्रदान करता है।
कॉली
कॉली - जावा के लिए एक वेब स्क्रैपिंग फ़्रेमवर्क, जो अंतर्निहित रूप से गोक्वेरी का उपयोग करता है HTML पार्सिंग के लिए।
https://github.com/gocolly/colly
इस्तेमाल करने के लिए - अपने go.mod फ़ाइल में कॉली जोड़ें:
मॉड्यूल github.com/x/y
गो 1.14
आवश्यकता (
github.com/gocolly/colly/v2 नवीनतम
)
उदाहरण:
फ़ंक्शन मुख्य() {
सी := कॉली.नया कलेक्टर()
// सभी लिंक खोजें और दौड़ें
सी.ऑनएचटीएमएल("a[href]", फ़ंक्शन(ई *कॉली.एचटीएमएलईलमेंट) {
ई.रिक्वेस्ट.विजिट(ई.एट्र( "href"))
})
सी.ऑनरिक्वेस्ट(फ़ंक्शन(आर *कॉली.रिक्वेस्ट) {
फॉर्मैट.प्रिंटलन("विजिट कर रहा है", आर.यूआरएल)
})
सी.विजिट("http://go-colly.org/")
}
तुलना सारणी
पुस्तकालय | API स्टाइल | चयनकर्ता समर्थन | प्रेरणा | नोट्स |
---|---|---|---|---|
सॉप | ब्यूटिफल सॉप-जैसा | टैग & गुण केवल | ब्यूटिफल सॉप | सरल, कोई CSS/XPath नहीं |
गोक्वेरी | जूरी-जैसा | CSS चयनकर्ता | जूरी | लचीला, लोकप्रिय |
एचटीएमएलक्वेरी | XPath | XPath | lxml/XPath | उन्नत प्रश्नों के लिए |
नोड | ब्यूटिफल सॉप-जैसा | टैग & गुण | ब्यूटिफल सॉप | सॉप के समान |
सारांश
- जावा में ब्यूटिफल सॉप के एनालॉग के लिए, सॉप का उपयोग करें।
- CSS चयनकर्ता समर्थन के लिए, गोक्वेरी को विचार करें।
- XPath क्वेरी के लिए, एचटीएमएलक्वेरी का उपयोग करें।
- ब्यूटिफल सॉप के अन्य प्रेरणा वाले विकल्प के लिए, नोड पर नजर रखें।
इन सभी पुस्तकालयों का उपयोग जावा के मानक HTML पार्सर के साथ किया जाता है, जो मजबूत और HTML5-अनुसरण करता है, इसलिए मुख्य अंतर API स्टाइल और चयनकर्ता क्षमताओं में है।