2009-02-05 7 views
15

में किसी HTML को पार्स कैसे करते हैं, मैं जानना चाहता हूं कि vb.net में HTML को पार्स करने का कोई आसान तरीका है या नहीं। मुझे पता है कि एचटीएमएल एक्सएमएल का सिक्रेट सबसेट नहीं है, लेकिन अगर यह इस तरह से इलाज किया जा सकता है तो यह अच्छा होगा। क्या वहां कुछ भी है जो मुझे HTML को समान रूप से VB.net में HTML जैसा पार्स करने देगा?आप vb.net

+0

यह जवाब देने में हमारी सहायता कर सकता है अगर आप यह बताते हैं कि आप इसे पार्स करने के बाद क्या करना चाहते हैं। – Rob

+0

अभी के लिए, मैं विशिष्ट divs में सभी लिंक, पाठ और छवियों का चयन करने में सक्षम होने में रुचि रखते हैं। जहां div class या id पृष्ठ से पृष्ठ पर बदल/बदल सकता है। – tooleb

+0

ऐसा लगता है जैसे एचटीएमएल एजिलिटी पैक शायद मेरे लिए काम करेगा। क्या कोई अन्य विकल्प हैं ???? – tooleb

उत्तर

7

मुझे Html Agility pack पसंद है - यह बहुत डेवलपर अनुकूल, मुफ्त और स्रोत कोड उपलब्ध है।

+0

लेकिन स्वयं दस्तावेज कोड डेवलपर अनुकूल है। मैं समझता हूं कि "डेवलपर फ्रेंडली" शब्द बहुत ही व्यक्तिपरक हो सकता है, हालांकि मैंने एचटीएमएल कोड को पार्स/संशोधित करने के कई तरीकों की कोशिश की और यह सबसे अच्छा है (.NET और फीस-फ्री के लिए), आप क्या प्राप्त कर सकते हैं और दस्तावेज़ीकरण की अनुपस्थिति इसे मत बदलें यह क्रूर वास्तविकता है। – TcKs

+0

मैं एचटीएमएल एजिलिटी पैक को मेरे लिए उपयोगी कुछ भी करने में सक्षम नहीं था। मैं जो भी प्राप्त कर रहा था वह पार्स किए गए प्रारूपित HTML के बजाय टेक्स्टबॉक्स पर सीधे HTML आउटपुट था। –

+0

@ जोएलआरआर। आपने कुछ गलत किया है। क्या आपने इसके बारे में कुछ ट्यूटोरियल पढ़े? – TcKs

1

क्या यह अच्छी तरह से गठित है? यदि एचटीएमएल वास्तव में अच्छी तरह से गठित किया गया है तो इसे एक्सएमएल के रूप में पार्स किया जा सकता है। यदि यह टैग सूप है और वहां संलग्न तत्व हैं और ऐसा लगता है कि आपको तीसरे पक्ष के समाधान के लिए शिकार करना होगा।

+0

mshtml का उपयोग कर दस्तावेज़ ऑब्जेक्ट मॉडल (डोम) तक पहुंचने के लिए कभी भी क्या हुआ? –

4

यदि आपका एचटीएमएल एक्सएचटीएमएल मानकों का पालन करता है, तो आप System.XML नेमस्पेस कक्षाओं का उपयोग करके बहुत सी पार्सिंग और प्रसंस्करण कर सकते हैं।

यदि दूसरी तरफ, यदि आप पार्सिंग कर रहे हैं तो वेब डेवलपर्स को "टैग सूप" के रूप में संदर्भित किया जाता है, तो आपको HTML Agility Pack जैसे किसी तृतीय-पक्ष पार्सर की आवश्यकता होगी।

यह आपकी समस्या का केवल आंशिक समाधान हो सकता है यदि आप यह पता लगाने की कोशिश कर रहे हैं कि ब्राउज़र आपके HTML की व्याख्या कैसे करेगा क्योंकि प्रत्येक ब्राउजर टैग सूप को थोड़ा अलग तरीके से पार करता है।

12

'भी prog रेफरी जोड़ें: Microsoft.mshtml

' फिर पृष्ठ पर:

Imports mshtml 

Function parseMyHtml(ByVal htmlToParse$) As String 
    Dim htmlDocument As IHTMLDocument2 = New HTMLDocumentClass() 
    htmlDocument.write(htmlToParse) 
    htmlDocument.close() 

    Dim allElements As IHTMLElementCollection = htmlDocument.body.all 

    Dim allInputs As IHTMLElementCollection = allElements.tags("a") 
    Dim element As IHTMLElement 
    For Each element In allInputs 
     element.title = element.innerText 
    Next 

    Return htmlDocument.body.innerHTML 
End Function 

के रूप में पाया here:

+0

क्या यह अनिवार्य रूप से उसी पुस्तकालयों का उपयोग नहीं करता है जो आईई अपने डोम को लोड करने के लिए उपयोग करता है? मैंने पहले यह कोशिश की है, लेकिन यह हमेशा इतना गंदे लगता है .... – tooleb

4

चपलता पैक का उपयोग न करें, बस करने के लिए mshtml लाइब्रेरी का उपयोग डोम तक पहुंचें, यह वही है जो यानी HTML तत्वों के माध्यम से जाने के लिए उपयोग करता है और बहुत अच्छा है।

अगर आप मुझसे पूछते हैं तो चपलता पैक बुरा और अनावश्यक हैकी है, mshtml जाने का रास्ता है। इसे एमएसडीएन पर देखो।