गो के लिए ब्यूटिफुल सॉप के विकल्प

एचटीएमएल से डेटा निकालने के विषय को आगे बढ़ाते रहें

Page content
  • जावा में ब्यूटिफल सॉप के एनालॉग के लिए, सॉप का उपयोग करें।
  • 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 स्टाइल और चयनकर्ता क्षमताओं में है।

उपयोगी लिंक