Парсинг сайта

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

Парсинг сайта

Сообщение час » 21.07.2010 (Ср) 10:38

Впервые передо мной такая задача - потому я в ратерянности.
Если кто в этом деле уже поднатарел, прошу помочь сдвинуться с места.
Если можно поэтапно.
===============================
Вот то, как я себе смутно представляю задачу и её реализацию:
1) Необходимо проверить имеется ли соединение с интернет...
2) Необходимо как то подключаться к нужной страничке сайта по заданному адресу....
3) Необходимо копировать страничку на комп или это не обязательно...
4) Произвести поиск информации по заданному критерию....
--------------------------------------------
Только только приступаю, потому ничё не знаю, прошу помочь :wink:

час
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 23.07.2007 (Пн) 19:03

Re: Парсинг сайта

Сообщение час » 21.07.2010 (Ср) 11:33

По сайту нашёл, то что делалось до меня.(viewtopic.php?f=1&t=41377&st=0&sk=t&sd=a&hilit=%D0%BF%D0%B0%D1%80%D1%81%D0%B8%D1%82%D1%8C)
Код: Выделить всё
Sub DataFromHTML(FilePath As String)
    Dim nFreeFile As Integer
    Dim i As Long
    Dim Doc As Object
   
    nFreeFile = FreeFile
    Open FilePath For Input As nFreeFile
    Set Doc = CreateObject("HTMLFile")
    Doc.Write Input(FileLen(FilePath), #nFreeFile)
    Close nFreeFile
   
    ReDim Preserve Parametrs(100)
   
    Set TableHTML = Doc.body.getElementsByTagName("Table").Item(1).getElementsByTagName("TBODY").Item(0)
    For Each TrHTML In TableHTML.getElementsByTagName("TR")
        i = i + 1
        Parametrs(i).Name = TrHTML.getElementsByTagName("TD").Item(0).getElementsByTagName("A").Item(0).innerText
        Parametrs(i).Description = TrHTML.getElementsByTagName("TD").Item(0).getElementsByTagName("DIV").Item(0).innerText
        Parametrs(i).Value = TrHTML.getElementsByTagName("TD").Item(1).innerText
    Next
    ReDim Preserve Parametrs(i)
End Sub


Передаю входную строку FilePath = "C:\VB.htm" - положеный мною файл.
Но открыть его не удаётся
Open FilePath For Input As nFreeFile
Вылетает ошибка неправильное имя файла или номер.
Смотрю в отладчике - номер 1, имя "C:\VB.htm"
Всё вроде бы в норме ИМХО :shock:

час
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 23.07.2007 (Пн) 19:03

Re: Парсинг сайта

Сообщение час » 21.07.2010 (Ср) 12:42

С первым препятствием разобрался
Действительно файл был в двойных кавычкахд
теперь остановка в коде на строке
Parametrs(i).Description = TrHTML.getElementsByTagName("TD").Item(0).getElementsByTagName("DIV").Item(0).innerText

час
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 23.07.2007 (Пн) 19:03

Re: Парсинг сайта

Сообщение час » 21.07.2010 (Ср) 12:44

ААААААА понял там нет такого тега видимо - у мну......... :lol:

0xy
Бывалый
Бывалый
 
Сообщения: 223
Зарегистрирован: 14.06.2006 (Ср) 2:34

Re: Парсинг сайта

Сообщение 0xy » 22.07.2010 (Чт) 20:52

ИМХО, проще сначала скачать и сохранить файл (URLDownloadToFileA), а потом уж его разбирать.
Если нужно--могу дать готовую функцию для получения файла в виде строки.


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

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

Сейчас этот форум просматривают: AhrefsBot, Google-бот и гости: 94

    TopList