Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Как распарсить HTML-файл Добавлено: 15.09.05 17:37  

Автор вопроса:  Слава
В файле (или в строке) есть HTML-код
чем разобрать его обьектную модель - ну там отобрать все document.anchor, document.frames и т.д. как делалось в DHTML
1.регулярные выражения не предлагать
2.не факт, что это правильный XML

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 «UL.eXe»



ICQ: 197.895.916.247 

Вопросов: 72
Ответов: 540
 Профиль | | #1 Добавлено: 15.09.05 18:27
зы Скоро в примерах появится мой исходник броузера, там есть такая функция, как "выдирание" определенных еслементов из HTML (ресунки, ссылки, скрипты т.п.)

Просмотр в HTML

Text1 = WebBrowser1.Document.documentelement.innerhtml
Text2 = WebBrowser1.Document.Body.innerhtml


Найти только ссылки ресунков

Dim allCol
Dim allcount
Dim i
Dim TagName As String
Url.List1.Clear
Set allCol = WebPage.Document.All
allcount = allCol.length
For i = 0 To allcount - 1
TagName = allCol.Item(i).TagName
If TagName = "IMG" Then
TagName = "URL ðåñóíêîâ" & " : " & allCol.Item(i).href
Url.List1.AddItem (TagName)
End If
Next


Ну и так далее...
Вообщем жди появления исходника =)

Ответить

Номер ответа: 2
Автор ответа:
 ViktorZ



ICQ: 271202919 

Вопросов: 56
Ответов: 837
 Профиль | | #2 Добавлено: 15.09.05 18:39
ресунков

Рисунков. Что ж так безграмотно то или это последствия Удаффщины?

Ответить

Номер ответа: 3
Автор ответа:
 Слава



Вопросов: 3
Ответов: 2
 Профиль | | #3 Добавлено: 15.09.05 20:14
ну с COM-интерфесом броузер писать не надо - он лежить в примерах MSDN - 4924.exe.
Мне нужен класс на .NET для этого.
Пример своего браузера из MSDN (рисунки формы добавьте в FRX сами):
VERSION 5.00
Object = "{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}#1.1#0"; "shdocvw.dll"
Begin VB.Form frmMain
   Caption = "Silk Screen"
   ClientHeight = 5910
   ClientLeft = 1140
   ClientTop = 1380
   ClientWidth = 8475
   LinkTopic = "Form1"
   PaletteMode = 1 'UseZOrder
   ScaleHeight = 5910
   ScaleWidth = 8475
   Begin VB.PictureBox pnlTop
      Align = 1 'Align Top
      BackColor = &H00808080&
      Height = 345
      Left = 0
      ScaleHeight = 285
      ScaleWidth = 8415
      TabIndex = 4
      Top = 0
      Width = 8475
      Begin VB.CommandButton btGo
         Caption = "Go!"
         ;Default = -1 'True
         Height = 285
         Left = 4200
         TabIndex = 2
         Top = 30
         Width = 450
      End
      Begin VB.TextBox txtAddress
         Height = 285
         Left = 30
         TabIndex = 1
         Top = 15
         Width = 4140
      End
      Begin VB.Label lblStatus
         BackStyle = 0 'Transparent
         Caption = "Ready"
         Height = 210
         Left = 4680
         TabIndex = 0
         Top = 60
         Width = 5010
      End
   End
   Begin VB.PictureBox pnlLeft
      Align = 3 'Align Left
      BackColor = &H00808080&
      Height = 5565
      Left = 0
      ScaleHeight = 5505
      ScaleWidth = 1185
      TabIndex = 5
      Top = 345
      Width = 1245
      Begin VB.Label lblMaxBytes
         AutoSize = -1 'True
         BackStyle = 0 'Transparent
         Height = 195
         Left = 90
         TabIndex = 7
         Top = 2775
         Width = 45
      End
      Begin VB.Label lblBytes
         AutoSize = -1 'True
         BackStyle = 0 'Transparent
         Height = 195
         Left = 90
         TabIndex = 6
         Top = 2550
         Width = 45
      End
      Begin VB.Image imgRefresh
         Height = 525
         Left = 600
         Picture = "frmBrowse.frx":0000
         Top = 660
         Width = 585
      End
      Begin VB.Image imgStop
         Height = 525
         Left = 0
         Picture = "frmBrowse.frx":033E
         Top = 660
         Width = 585
      End
      Begin VB.Image imgForward
         Height = 525
         Left = 600
         Picture = "frmBrowse.frx":067C
         Top = 15
         Width = 585
      End
      Begin VB.Image imgBack
         Height = 525
         Left = 0
         Picture = "frmBrowse.frx":09BA
         Top = 15
         Width = 585
      End
      Begin VB.Image imgPrint
         Height = 525
         Left = 0
         Picture = "frmBrowse.frx":0CF8
         Top = 1920
         Width = 585
      End
      Begin VB.Image imgSearch
         Height = 525
         Left = 600
         Picture = "frmBrowse.frx":1036
         Top = 1305
         Width = 585
      End
      Begin VB.Image imgHome
         Height = 525
         Left = 0
         Picture = "frmBrowse.frx":1374
         Top = 1305
         Width = 585
      End
   End
   Begin SHDocVwCtl.WebBrowser webMain
      Height = 3825
      Left = 1830
      TabIndex = 3
      TabStop = 0 'False
      Top = 900
      Width = 4995
      ExtentX = 8811
      ExtentY = 6747
      ViewMode = 1
      Offline = 0
      Silent = 0
      RegisterAsBrowser= 0
      RegisterAsDropTarget= 0
      AutoArrange = -1 'True
      NoClientEdge = -1 'True
      AlignLeft = 0 'False
      ViewID = "{0057D0E0-3573-11CF-AE69-08002B2E1262}"
      Location = "res://C:\WINNT\system32\shdoclc.dll/dnserror.htm#http:///"
   End
End
Attribute VB_Name = "frmMain"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit

Private Sub btGo_Click()
On Error Resume Next
'The txtAddress control is an edit box
'that contains a URL
webMain.Navigate txtAddress
End Sub

Private Sub Form_Load()
On Error Resume Next
'When we first start the application,
'lets show the users home page
webMain.GoHome
End Sub

Private Sub Form_Resize()
On Error Resume Next
webMain.Left = pnlLeft.Width + 20
webMain.Top = pnlTop.Height + 20
webMain.Width = frmMain.ScaleWidth - pnlLeft.Width - 40
webMain.Height = frmMain.ScaleHeight - pnlTop.Height - 40
txtAddress.Width = (frmMain.ScaleWidth - 60) / 2
btGo.Left = txtAddress.Left + txtAddress.Width + 30
lblStatus.Left = btGo.Left + btGo.Width + 40
End Sub

Private Sub imgBack_Click()
On Error Resume Next
'Navigate backwards through the user's history list
webMain.GoBack
End Sub

Private Sub imgForward_Click()
On Error Resume Next
'Navigate forwards through the user's history list
webMain.GoForward
End Sub

Private Sub imgHome_Click()
On Error Resume Next
'Navigate to the user's home page
webMain.GoHome
End Sub

Private Sub imgPrint_Click()
On Error Resume Next
'Use the default settings of the default printer
webMain.PrintOut
End Sub

Private Sub imgRefresh_Click()
On Error Resume Next
'Reload the currently displayed URL
webMain.Refresh
End Sub

Private Sub imgSearch_Click()
On Error Resume Next
'Navigate to the user's pre-defined search page
webMain.GoSearch
End Sub

Private Sub imgStop_Click()
On Error Resume Next
'Discontinue any current download attempts
webMain.Stop
End Sub

Private Sub webMain_OnBeginNavigate(ByVal URL As String, ByVal Flags As Long, ByVal TargetFrameName As String, PostData As Variant, ByVal Headers As String, ByVal Referrer As String, Cancel As Boolean)
On Error Resume Next
Debug.Print "OnBeginNavigate: " & URL
lblStatus = "Opening..." & URL
End Sub

Private Sub webMain_OnNavigate(ByVal URL As String, ByVal Flags As Long, ByVal TargetFrameName As String, PostData As Variant, ByVal Headers As String, ByVal Referrer As String)
On Error Resume Next
Debug.Print "OnNavigate: " & URL
lblStatus = "Ready"
txtAddress = URL
End Sub

Private Sub webMain_OnProgress(ByVal Progress As Long, ByVal ProgressMax As Long)
On Error Resume Next
Debug.Print "OnProgress: Progress=" & CStr(Progress) & " ProgressMax=" & CStr(ProgressMax)
If CBool(Progress) And CBool(ProgressMax) Then
    lblBytes = CStr(Progress) & " of"
    ;DoEvents
    lblMaxBytes = CStr(ProgressMax) & " bytes"
    ;DoEvents
Else
    lblBytes = ""
    lblBytes = ""
End If
End Sub

Private Sub webMain_OnStatusTextChange(ByVal bstrText As String)
Debug.Print "OnStatusTextChange: " & bstrText
lblStatus = bstrText
End Sub

Ответить

Номер ответа: 4
Автор ответа:
 «UL.eXe»



ICQ: 197.895.916.247 

Вопросов: 72
Ответов: 540
 Профиль | | #4 Добавлено: 15.09.05 21:52
Рисунков. Что ж так безграмотно то или это последствия Удаффщины?


Ну я в шоке с тебя =))
Ты бы еще по всем темам форума ошибки поисправлял..

Ответить

Номер ответа: 5
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #5 Добавлено: 15.09.05 22:07
Вообще да, ошибки исправлять это глупо, т.е. они могут возникать как опечатки и как грамматические ошибки, и то и другое я считаю простительно, т.к. опечатки понятно, в потёмках левой ного по клаве стучал и на какой-то педали промахнулся, бывает :) Грамматика чуть другое, но кому ж не лень вспоминать как пишеться то или иное слово :) Хорошо если знаешь - пишешь правельно, незнаешь - пишешь с ошибкой, это ж не диктант по русскому, кто придираться будет? А медленный набор, обдуманность каждой буковки, после всего проверка... :) НЕ СМЕШИТЕ! оно нафиХ не надо! :)))

Ну чуть-чуть в в тему...
2 Слава
Парсь ручками InStr, Mid, Left, Right ...

Ответить

Номер ответа: 6
Автор ответа:
 Слава



Вопросов: 3
Ответов: 2
 Профиль | | #6 Добавлено: 15.09.05 22:29
сделал уже все на НЕТЕ - тока с многофреймовыми документами гимор получается...
впрочем у меня множество скачиваемых страниц четко ограничено...

Ответить

Номер ответа: 7
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #7
Добавлено: 16.09.05 05:12
Опечататься - написать "е" вместо "и"? Не верю.
А по теме: MSHTML, мб.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам