繁体   English   中英

用VB.Net进行HTML解析

[英]HTML parsing with VB.Net

有人知道VB.Net中解析HTML的好方法吗?

我在网上使用MSHTML找到了一个解决方案。

我尝试使用它并使它正常工作,我不得不在项目中添加一些代码:

Public Enum HRESULT
    S_OK = 0
    S_FALSE = 1
    E_NOTIMPL = &H80004001
    E_INVALIDARG = &H80070057
    E_NOINTERFACE = &H80004002
    E_FAIL = &H80004005
    E_UNEXPECTED = &H8000FFFF
End Enum

<ComVisible(True), ComImport(), Guid("7FD52380-4E07-101B-AE2D-08002B2EC713"), _
    InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)> _
Public Interface IPersistStreamInit : Inherits IPersist
    Shadows Sub GetClassID(ByRef pClassID As Guid)
    <PreserveSig()> Function IsDirty() As Integer
    <PreserveSig()> Function Load(ByVal pstm As UCOMIStream) As HRESULT
    <PreserveSig()> Function Save(ByVal pstm As UCOMIStream, _
        <MarshalAs(UnmanagedType.Bool)> ByVal fClearDirty As Boolean) As HRESULT
    <PreserveSig()> Function GetSizeMax(<InAttribute(), Out(), _
    MarshalAs(UnmanagedType.U8)> ByRef pcbSize As Long) As HRESULT
    <PreserveSig()> Function InitNew() As HRESULT
End Interface

<ComVisible(True), ComImport(), Guid("0000010c-0000-0000-C000-000000000046"), _
    InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)> _
Public Interface IPersist
    Sub GetClassID(ByRef pClassID As Guid)
End Interface

Declare Function CreateStreamOnHGlobal Lib "ole32" (ByVal hGlobal As IntPtr, ByVal fDeleteOnRelease As Boolean, _
    ByRef ppstm As UCOMIStream) As Long
' Please note that i copied above IPersistStream definition from sp!ke. I owe him a drink ;). 

末级

现在,我收到了过时的警告:

Warning 1   'System.Runtime.InteropServices.UCOMIStream' is obsolete: 'Use System.Runtime.InteropServices.ComTypes.IStream instead. http://go.microsoft.com/fwlink/?linkid=14202'.

我不喜欢必须使用MSHTML的事实(因为我认为IE也使用它,而且我们都知道IE很烂:)),而且我不得不添加代码以使其正常工作。

不想启动浏览器大战线程,所以忽略我的最后一句话。 :)

在VB.Net中是否有其他(更好的)方法来解析html页面。

基本上,我想做的是将所有链接( <a>标记)和嵌入( <object>标记)放在页面上。

在此先感谢您的帮助!

您可以使用HTML Agility Pack

采用

HTML敏捷包。 最好的一个。 无需浏览器即可完成。

http://htmlagilitypack.codeplex.com/

在WinForm App中,您可以创建WebBrowser的对象并使其加载页面,然后可以按dom节点查找任何标签名称和数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM