2012-10-14 18 views
5

मेरे पास एचटीएमएल में एक टेबल है जिसे मैं पार्स करना चाहता हूं। निम्नलिखित http://sprunge.us/IJUC में से कुछ की तरह कुछ भी, हालांकि, मुझे जानकारी का विश्लेषण करने का एक अच्छा तरीका नहीं है। मैंने कुछ एचटीएमएल पार्सर्स को देखा है, लेकिन ऐसा लगता है कि आपके पास सबकुछ एक विशेष टैग है जो इसे पकड़ने के लिए जानकारी जैसे पार्स करने के लिए है; हालांकि, मेरी अधिकांश जानकारी <td></td>गो पार्स एचटीएमएल टेबल

क्या किसी के पास इस जानकारी को पार्स करने के लिए कोई सुझाव है?

http://golang.org/pkg/encoding/xml/

उत्तर

14

बेशर्म प्लग:: मेरी goquery पुस्तकालय

+0

अच्छा पैकेज लेकिन मुझे इसका उपयोग करने में समस्याएं हैं। मैं इसे आयात कर रहा हूं लेकिन संकलक मुझे बता रहा है कि दस्तावेज़ और न्यू डॉक्यूमेंट अपरिभाषित हैं? – Eno

+0

क्या आप गिटहब पर अपने कोड से एक अंश और इसे स्थापित करने के लिए उठाए गए कदमों के साथ कोई समस्या खोल सकते हैं? मैं इसे एक लुक दूंगा। – mna

+0

मैं नए जाने के लिए इतना संभवतः मैं कुछ गलत कर रहा हूँ। मैक और आईवी पर आईएम ने होमब्री को गो (1.0.3) इंस्टॉल करने के लिए इस्तेमाल किया। ऐसा लगता है कि "github.com/PuerkitoBio/goquery प्राप्त करें" ने /usr/local//Cellar/go/1.0.3/src/pkg/github.com/PuerkitoBio/goquery में पैकेज स्थापित किया है। – Eno

0

अपने HTML को अच्छी तरह से बनाई है, तो आप में निर्मित XML पार्सर का उपयोग कर सकते हैं। यह जाने के लिए लाया गया jQuery वाक्यविन्यास है (गो के experimental html package की आवश्यकता है, लाइब्रेरी के README में निर्देश देखें)।

तो आपको लगता है कि तरह बातें (अपने HTML संभालने दस्तावेज़ दस्तावेज़ में भरी हुई है एक *goquery.Document,) कर सकते हैं:

doc.Find("td").Each(func (i int, s *goquery.Selection) { 
    fmt.Printf("Content of cell %d: %s\n", i, s.Text()) 
}) 

संपादित करें: doc.Root.Finddoc.Find के उदाहरण में बदले के बाद से एक goquery दस्तावेज़ अब एक चुनाव भी है (नई v0.2/मास्टर में शाखा)

+0

सब कुछ मैं एक्सएमएल पैकेज का उपयोग के बारे में देखना हो जाती है आप की तरह या टैग नाम है: आप भी प्रयोगात्मक जाओ संकुल यहाँ के निम्नलिखित दर्पण का उपयोग कर सकते हैं। मैं अपनी सभी टेबल पंक्तियों के माध्यम से कैसे पढ़ूं? –

+5

@ सोर्सिक्स एक अच्छी तरह से बनाया गया HTML एक्सएमएल नहीं है। क्या आप एचटीएमएल और एक्सएचटीएमएल को भ्रमित कर रहे हैं? –

2

तुम भी जाओ के प्रयोगात्मक HTML पार्सर में रुचि हो सकती: https://code.google.com/p/go.net/html

पैकेज परिभाषा tion godoc के अनुसार:

पैकेज एचटीएमएल एक HTML5- संगत tokenizer और पार्सर लागू करता

मैं इसे अपने आप उपयोग नहीं किया है, लेकिन यह बहुत सीधी-सपाट लगता है:

पार्सिंग को एक io.Reader के साथ पार्स को कॉल करके किया जाता है, जो पार्स पेड़ (दस्तावेज़ तत्व) की रूट * 0 नोड के रूप में रूट देता है। यह कॉलर की ज़िम्मेदारी है कि यह सुनिश्चित करने के लिए कि रीडर यूटीएफ -8 एन्कोडेड HTML प्रदान करता है।

go get code.google.com/p/go.net/html 

import "code.google.com/p/go.net/html" 

doc, err := html.Parse(r) 

यह किसी भी मौजूदा रिलीज का हिस्सा नहीं है, लेकिन यदि आप स्रोत से स्थापित , या golang की नोक ubuntu उपयुक्त रेपो का उपयोग किया जा सकता है।

संपादित: https://github.com/kless/go-exp

go get github.com/kless/go-exp/html 

import (
    "github.com/kless/go-exp/html" 
) 
+0

क्या इस बात का कोई संकेत है कि इस पैकेज को मानक lib में कब प्रचारित किया जा रहा है? – djhworld

+0

प्रयोगात्मक HTML पार्सर को https://code.google.com/p/go/source/browse?repo=net पर ले जाया गया है। जब इसे बढ़ावा दिया जाएगा, अगस्त 12 में रखरखावकर्ता ने कहा कि यह वेबकिट टेस्ट सूट पास करने के बहुत करीब था, लेकिन एपीआई को जमे हुए होने तक प्रचारित नहीं किया जाएगा, और वह इसके लिए तैयार नहीं था। – spiffytech