2009-02-05 24 views
15

Tôi muốn biết nếu có một cách đơn giản để phân tích cú pháp HTML trong vb.net. Tôi biết rằng HTML không phải là tập hợp con của XML, nhưng sẽ rất tuyệt nếu nó có thể được xử lý theo cách đó. Có bất cứ điều gì ra khỏi đó mà sẽ cho phép tôi phân tích cú pháp HTML trong một cách giống như XML trong VB.net?Làm cách nào để phân tích cú pháp HTML trong vb.net

+0

Nó có thể giúp chúng tôi trả lời nếu bạn nêu rõ bạn muốn làm gì với nó khi nó được phân tích cú pháp. – Rob

+0

Hiện tại, tôi quan tâm đến việc có thể chọn tất cả các liên kết, văn bản và hình ảnh trong các div cụ thể. Trường hợp lớp div hoặc id sẽ/có thể thay đổi từ trang này sang trang khác. – tooleb

+0

có vẻ như gói HTML Agility có thể hoạt động cho tôi. Có tùy chọn nào khác không ???? – tooleb

Trả lời

7

Tôi thích Html Agility pack - rất thân thiện với nhà phát triển, mã nguồn miễn phí và có sẵn.

+0

Nhưng thân thiện với nhà phát triển mã tự thân là. Tôi hiểu thuật ngữ "thân thiện với nhà phát triển" có thể rất chủ quan, tuy nhiên tôi đã thử một vài cách để phân tích/sửa đổi mã HTML và cách này đơn giản nhất (đối với .NET và miễn phí), những gì bạn có thể nhận được và không có tài liệu không thay đổi nó. Đó là thực tế tàn nhẫn. – TcKs

+0

Tôi không thể lấy gói HTML Agility để làm bất cứ điều gì hữu ích cho tôi. Tất cả những gì tôi nhận được là đầu ra HTML thẳng vào hộp văn bản, thay vì HTML được định dạng phân tích cú pháp. –

+0

@JoelR. Bạn đã làm điều gì đó khủng khiếp sai. Bạn đã đọc một số hướng dẫn về điều đó chưa? – TcKs

1

Nó có được định dạng tốt không? Nếu HTML trên thực tế được định dạng tốt thì HTML có thể được phân tích cú pháp dưới dạng XML. Nếu đó là súp tag và có những yếu tố không rõ ràng và tôi nghĩ bạn sẽ phải tìm kiếm giải pháp của bên thứ ba.

+0

Điều gì đã từng xảy ra khi truy cập mô hình đối tượng tài liệu (dom) bằng cách sử dụng mshtml? –

4

Nếu HTML của bạn tuân thủ các tiêu chuẩn XHTML, bạn có thể thực hiện rất nhiều việc phân tích cú pháp và xử lý bằng cách sử dụng các lớp không gian tên System.XML.

Nếu, mặt khác, nếu những gì bạn đang phân tích là những gì các nhà phát triển web gọi là "súp thẻ", bạn sẽ cần một trình phân tích cú pháp của bên thứ ba như HTML Agility Pack.

Đây có thể chỉ là giải pháp một phần cho vấn đề của bạn nếu bạn đang cố gắng tìm hiểu cách trình duyệt sẽ hiểu HTML của bạn vì mỗi trình duyệt phân tích cú pháp thẻ hơi khác nhau.

12

'thêm prog ref quá: Microsoft.mshtml

' sau đó trên trang:

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 

Như tìm thấy here:

+0

không về cơ bản này sử dụng cùng một thư viện mà IE sử dụng để tải DOM của nó? Tôi đã thử điều này trước đây, nhưng nó luôn cảm thấy bẩn thỉu .... – tooleb

4

Không sử dụng gói nhanh nhẹn, chỉ cần sử dụng thư viện để mshtml truy cập vào dom, đây là những gì tức là sử dụng và là tuyệt vời cho việc đi qua các phần tử HTML.

Gói nhanh nhẹn là khó chịu và không cần thiết nếu bạn hỏi tôi, mshtml là cách để đi. Tra cứu nó trên msdn.

Các vấn đề liên quan