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

HTML से डेटा निकालने के विषय को आगे बढ़ाते रहें।

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 प्रदान करता है, जो वेब स्क्रैपिंग और डेटा बरामद करने के कार्यों के लिए विशेष रूप से उपयोगी है।

मुख्य विशेषताएं

  • XPath 1.0/2.0 अभिव्यक्तियों के साथ HTML दस्तावेज़ों के प्रश्न करने की अनुमति देता है।
  • स्ट्रिंग, फ़ाइलों, या URL से HTML लोड करने का समर्थन करता है।
  • एकल या बहुत सारे नोड के खोज, गुणों के बरामद करने, और XPath अभिव्यक्तियों के मूल्यांकन के लिए फ़ंक्शन प्रदान करता है।
  • XPath अभिव्यक्तियों के बार-बार संकलन के बचाव के लिए LRU आधारित प्रश्न कैशिंग शामिल है।
  • गो के मानक 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 दस्तावेज़ों से डेटा बरामद करने के लिए APIs प्रदान करता है।

कॉली

कॉली - गो के लिए एक वेब स्क्रैपिंग फ़्रेमवर्क, जो आंतरिक रूप से गोक्वेरी का उपयोग करता है HTML पार्सिंग के लिए।

https://github.com/gocolly/colly

इंस्टॉल करने के लिए - अपने go.mod फ़ाइल में कॉली जोड़ें:

module github.com/x/y

go 1.14

require (
        github.com/gocolly/colly/v2 latest
)

उदाहरण:

func main() {
	c := colly.NewCollector()

	// सभी लिंकों को खोजें और दौड़ें
	c.OnHTML("a[href]", func(e *colly.HTMLElement) {
		e.Request.Visit(e.Attr("href"))
	})

	c.OnRequest(func(r *colly.Request) {
		fmt.Println("Visiting", r.URL)
	})

	c.Visit("http://go-colly.org/")
}

तुलना सारणी

पुस्तकालय API स्टाइल चयनकर्ता समर्थन प्रेरणा नोट्स
सॉप ब्यूटिफुल सॉप-जैसा टैग & गुण केवल ब्यूटिफुल सॉप सरल, कोई CSS/XPath नहीं
गोक्वेरी जेक्वेरी-जैसा CSS चयनकर्ता जेक्वेरी लचीला, लोकप्रिय
एचटीएमएलक्वेरी XPath XPath lxml/XPath उन्नत प्रश्नों के लिए
नोड ब्यूटिफुल सॉप-जैसा टैग & गुण ब्यूटिफुल सॉप सॉप के समान

सारांश

  • गो में ब्यूटिफुल सॉप के एक सीधे अनुकरण के लिए, सॉप का उपयोग करें।
  • CSS चयनकर्ता समर्थन के लिए, गोक्वेरी को विचार करें।
  • XPath प्रश्नों के लिए, एचटीएमएलक्वेरी का उपयोग करें।
  • ब्यूटिफुल सॉप के अन्य प्रेरणा वाले विकल्प के लिए, नोड पर एक नज़र डालें।

इन सभी पुस्तकालयों का उपयोग गो के मानक HTML पार्सर के साथ किया जाता है, जो मजबूत और HTML5-अनुप्राय है, इसलिए मुख्य अंतर API स्टाइल और चयनकर्ता क्षमताओं में है।

उपयोगी लिंक