Получение данных из HTML таблицы.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
acoustic
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 09.12.2003 (Вт) 17:30

Получение данных из HTML таблицы.

Сообщение acoustic » 11.12.2003 (Чт) 15:12

Необходимо получить данные из документа HTML. Там таблица, меняются только значения ячеек (курс валют).

Пока идея выглядит так:

1. Соединение с сервером;
2. Запрос документа;
3. Сохранение на диск;
4. Открыть как текст;
5. Долго и нудно перебирать теги и выковыривать значения.

Ужас :shock:
Может есть какие-то предложения, как упростить.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 11.12.2003 (Чт) 15:30

Поищи по форуму - в Excel есть фича под названием Web Query. Идеальное решение для такого случая.

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Примерчики...

Сообщение hCORe » 11.12.2003 (Чт) 15:46

Воспользуйся этим примерчиком взаимодействия с HTTP или используй сокеты (порт 80 :twisted:), если не решишься использовать WebQuery. Требует наличия MS Inet Transfer Control 6 в системе.

ЗЫ. Пример содран из книжки М.Хальворсона "Microsoft Visual Basic 6 для профессионалов. Самоучитель" (М: Эксмо, 1999)
Вложения
gethtml_VBP.rar
Пример GetHTML
(1.88 Кб) Скачиваний: 65
Моду создают модоки, а распространяют модозвоны.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 11.12.2003 (Чт) 15:55

Код: Выделить всё
Function GetInetCBRRates(ByVal CurrencyID As String, Optional ByVal RateDate) As Currency
Dim inet As Object, itbl As Object, U As String
Dim curID As String, curCode As String, curName As String, curK As Long, curRate As Currency
Dim R As Long, C As Long, Z As String, fFind As Boolean
Const URL As String = "http://www.cbr.ru/currency_base/D_print.asp?date_req=#D#/#M#/#Y#"
Const READYSTATE_UNINITIALIZED As Long = 0&
Const READYSTATE_LOADING As Long = 1&
Const READYSTATE_LOADED As Long = 2&
Const READYSTATE_INTERACTIVE As Long = 3&
Const READYSTATE_COMPLETE As Long = 4&
If IsMissing(RateDate) Then RateDate = Now Else RateDate = CDate(RateDate)
U = URL
U = Replace(U, "#D#", Format$(RateDate, "DD"))
U = Replace(U, "#M#", Format$(RateDate, "MM"))
U = Replace(U, "#Y#", Format$(RateDate, "YYYY"))
Set inet = CreateObject("InternetExplorer.Application")
inet.Navigate U
Do Until inet.ReadyState = READYSTATE_COMPLETE
DoEvents
Loop
Set itbl = inet.Document.All.Tags("TABLE").Item(2)
For R = 1 To itbl.Rows.Length - 1
  For C = 1 To itbl.Rows(R).Cells.Length
    Z = itbl.Rows(R).Cells(C - 1).InnerText
    Select Case C
      Case 1
        curID = Z
      Case 2
        curCode = Z
      Case 3
        Z = Replace(Z, " ", "")
        Z = Replace(Z, ",", ".")
        curK = CLng(Z)
        If curK = 0 Then curK = 1
      Case 4
        curName = Z
      Case 5
        Z = Replace(Z, " ", "")
        Z = Replace(Z, ",", ".")
        curRate = CCur(Z)
    End Select
    If C = 5 Then
      If CurrencyID = curID Then fFind = True
      If UCase$(CurrencyID) = UCase$(curCode) Then fFind = True
    End If
    If fFind Then Exit For
  Next C
  If fFind Then Exit For
Next R
Set itbl = Nothing
inet.Quit
Set inet = Nothing
If fFind Then GetInetCBRRates = curRate / curK
End Function
Lasciate ogni speranza, voi ch'entrate.

acoustic
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 09.12.2003 (Вт) 17:30

Сообщение acoustic » 11.12.2003 (Чт) 17:39

Всем огромное спасибо, особо alibek'у - идеальный вариант :D

To Rayshade: Извиняюсь, забыл упомянуть - на машине Экселем и не пахло :)


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, SemrushBot и гости: 10

    TopList