2012-06-18 14 views
22

का उपयोग कर किसी वेब पेज से लिंक निकालें मैं google's Go programming language सीख रहा हूं। क्या किसी को HTML वेब पेज से सभी यूआरएल निकालने का सबसे अच्छा अभ्यास पता है?गो लांग

जावा दुनिया से आ रहा है, नौकरी करने के लिए पुस्तकालय हैं, उदाहरण के लिए jsoup, htmlparser, आदि। लेकिन लैंग जाने के लिए, मुझे लगता है कि अभी तक कोई उपलब्ध लाइब्रेरी नहीं बनाई गई है?

उत्तर

20

एचटीएमएल पार्सिंग के लिए गो का मानक पैकेज अभी भी प्रगति पर एक काम है और वर्तमान रिलीज का हिस्सा नहीं है। एक तीसरा पार्टी पैकेज जो आप कोशिश कर सकते हैं हालांकि go-html-transform है। इसे सक्रिय रूप से बनाए रखा जा रहा है।

+1

मुझे स्क्रैपिंग के लिए इस लाइब्रेरी का उपयोग करने के तरीके पर कहीं भी एक उदाहरण नहीं मिल रहा है और इसे दस्तावेज़ों से स्पष्ट नहीं लगता है। क्या कोई मुझे एक उदाहरण के लिए इंगित कर सकता है? – kristaps

+0

क्या यह इस पैकेज को मूल रूप से गो में शामिल करने की योजना है? – Kiril

+1

एचटीएमएल पैकेज अब उपलब्ध है। यहां प्रलेखन पढ़ें: https://godoc.org/golang.org/x/net/html – R4chi7

17

जबकि एचटीएमएल पार्सिंग के लिए गो पैकेज वास्तव में प्रगति पर है, यह go.net भंडार में उपलब्ध है।

इसके स्रोत code.google.com/p/go.net/htmlgithub.com/golang/net पर सक्रिय रूप से विकसित किए जा रहे हैं।

इस हालिया go-nuts discussion में इसका उल्लेख है।


ध्यान दें कि जाओ 1.4 (दिसम्बर 2014) के साथ, जैसा कि मैंने this answer में उल्लेख किया है, पैकेज अब golang.org/x/net है (godoc देखें)।

+2

गो एचटीएमएल पैकेज [go.net] पर जाता है (https://code.google.com/p/ जाओ/स्रोत/ब्राउज़ करें? रेपो = नेट # एचजी% 2 एफएचटीएमएल) रेपो। [यहां] (http://godoc.org/code.google.com/p/go.net/html) दस्तावेज है। – ctn

+0

@ctn अपडेट के लिए धन्यवाद। सुनिश्चित नहीं है कि आपका संपादन क्यों अस्वीकार कर दिया गया था: मैंने इसे उत्तर में बहाल कर दिया है। – VonC

+0

धन्यवाद। उन्होंने कहा कि यह मूल अर्थ को बहुत अधिक बदल देगा और मैं इसके बजाय एक टिप्पणी छोड़ दूंगा। – ctn

6

मैंने चारों ओर खोज की है और पाया है कि Gokogiri नामक लाइब्रेरी है जो रूबी के लिए समान नोगोकिरी लगता है। मुझे लगता है कि परियोजना active भी है।

23

यदि आप jQuery जानते हैं, तो आपको GoQuery पसंद आएगा।

ईमानदारी से, यह गो में पाया गया सबसे आसान, सबसे शक्तिशाली HTML उपयोगिता है, और यह go.net भंडार में HTML पैकेज से बाहर है। (ठीक है, तो यह सिर्फ एक पार्सर की तुलना में उच्च-स्तर है क्योंकि यह कच्चे HTML टोकन और इसी तरह का खुलासा नहीं करता है, लेकिन यदि आप वास्तव में किसी HTML दस्तावेज़ के साथ कुछ भी करना चाहते हैं, तो यह पैकेज मदद करेगा।)

+0

यह कमाल है। बहुत बहुत धन्यवाद। –

0

I गो के लिए एक ओपन सोर्स इवेंट-आधारित एचटीएमएल 5.0 अनुपालन पार्सिंग पैकेज प्रकाशित किया।

links := make([]string) 

parser := NewParser(htmlContent) 

parser.Parse(nil, func(e *HtmlElement, isEmpty bool) { 
    if e.TagName == "link" { 
     link,_ := e.GetAttributeValue("href") 
     if(link != "") { 
      links = appends(links, link) 
     } 
    } 
}, nil) 

कुछ बातें ध्यान में रखना:

  • ये रिश्तेदार हैं आप find it here

    यहाँ (ए तत्वों से) एक पृष्ठ से सभी लिंक प्राप्त करने के नमूना कोड है सकते हैं लिंक, पूर्ण यूआरएल नहीं

  • गतिशील रूप से जेनरेट किए गए लिंक एकत्र नहीं किए जाएंगे
  • अन्य लिंक एकत्र नहीं किए जा रहे हैं (मेटा टैग, छवियां, iframes, आदि।)। उनको इकट्ठा करने के लिए इस कोड को संशोधित करना बहुत आसान है।