Кто-нибудь знает хороший способ парсинга HTML в VB.Net.
Я нашел решение где-то в сети, используя 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 отстой :)) и что мне пришлось добавить код, чтобы он работал. 1013 *
Не хочу начинать ветку о браузерной войне, поэтому пренебрегайте моим последним замечанием. :)
Существует ли другой (/ лучший) подход к разбору html-страниц в VB.Net.
По сути, я пытаюсь получить все ссылки (теги <a>
) и встраивания (тег <object>
) на страницу.
Заранее благодарим за помощь!