VB 6.0 и HTML , копирование информации с инета

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

VB 6.0 и HTML , копирование информации с инета

Сообщение НиколайП » 06.12.2005 (Вт) 22:25

Задача.
Необходимо с определённой страницы сайта скопировать часть информации (используя VB) и занести её в базу данных, в дальнейшем эту информацию просматривать тоже с использованием VB.
Всё до чего я сам достиг(используя информацию с форумов)- это открытие в форме(на VB)страницы необходимого сайта и открытия,в другой форме, html кода этой страницы, как действовать дальше не знаю и информацию найти не могу ...
Как мне сделать следующее:
html код страницы у меня открывается в TextBox,нужен пример кода который в этом тексте будет искать часть текста который находится между <H1 и </H1>после копировании этого текста он сохраняется в БД, дальше находится текст между тегами <TABLE>и </TABLE>,но именно тот текст в котором имеется определённое слово.После нахождения также копируется в базу данных(вместе с html тэгами).
В дальнейшем мне надо что бы в программе на VB можно было просматривать эту информацию,естественно в нормальном виде, с таблицами и всем форматированием.

Короче, мне как то надо вытаскивать описание (именно технические характеристики)на конкретные товары с сайта http://www.i2b.ru что бы в дальнейшем можно было их просматривать на локальной машине.
Буду благодарен за любую помощь.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Re: VB 6.0 и HTML , копирование информации с инета

Сообщение Ennor » 06.12.2005 (Вт) 22:50

НиколайП писал(а):... с сайта http://www.???.ru ...

Спамер?

НиколайП
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 125
Зарегистрирован: 06.12.2005 (Вт) 22:16

Re: VB 6.0 и HTML , копирование информации с инета

Сообщение НиколайП » 07.12.2005 (Ср) 8:04

Ennor писал(а):
НиколайП писал(а):... с сайта http://www.???.ru ...

Спамер?


нет, не спамер. Меня интересуют технические характеристики товара на этом сайте.

Я примерно понимаю как это надо сделать,но не знаю как это делать в VB ...
У меня на форме: WebBrowser1,ComboBox1,TextBox1 и несколько CommandButton

1.
Private Sub Command2_Click()
WebBrowser1.Navigate Combo1
adr = Combo1
Combo1.AddItem (adr)
End Sub
- открываю страницу сайта,адрес берётся из Combo1
2.
Text1.Text = WebBrowser1.Document.body.innerHTML
- в поле Text1.Text заношу html код страницы
далее как то надо сделать что бы:
1. в тексте (Text1.Text)нашлась и скопировалась строка между тэгами <H1 и </H1> и именно та которая мне нужна. Как вносить её в БД я вроде знаю.
2.кажется надо создать коллекции из IHTMLTableElement по тэгам <TABLE> , но как это точно делать - не знаю :(
3.надо найти коллекцию которая будет содержать определённое слово, к примеру "производитель", и содержимое этой коллекции (вместе с тэгами) внести в БД.
4.надо вывести содержимое БД ,текст с html тэгами,которые копировали с интернет страниц, в удобочитаемом виде на VB форму, как это сделать пока тоже не знаю :(, думаю что тоже как-то надо использовать контрол WebBrowser ...
Надеюсь на вашу помощь !

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 07.12.2005 (Ср) 13:12

Код: Выделить всё
HTMLDocument.GetElementsByTagName(TagName As String)

При передаче "TABLE" вернет коллекцию таблиц в документе.

НиколайП
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 125
Зарегистрирован: 06.12.2005 (Вт) 22:16

Сообщение НиколайП » 07.12.2005 (Ср) 21:08

вымутил такой код:

Private Sub Command1_Click()
WebBrowser1.Navigate Text1.Text
End Sub

Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
Dim Doc As IHTMLDocument2
Set Doc = WebBrowser1.Document
Dim Tables As IHTMLElementCollection
Set Tables = Doc.All.tags("TABLE")
Dim Quote As IHTMLElement
Set Quote = Tables.Item(17, 96).All.tags("TD").Item(2, 2)
RichTextBox1 = Quote.innerHTML

End Sub


но радовался не долго, удалось запустить только один раз,повторные запуски выдают ошибку 91:
Object variable or with block variable not set

в модуле отмечается:
Tables=Nothing


подскажите пожалуйсто из за чего это может быть и как с этим бороться :( , заранее извиняюсь если вопрос этот глупый, но я только начинаю изучать VB ...

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 07.12.2005 (Ср) 21:44

Может быть, есть документы, в которых нет таблиц?

НиколайП
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 125
Зарегистрирован: 06.12.2005 (Вт) 22:16

Сообщение НиколайП » 07.12.2005 (Ср) 21:52

Alexanbar писал(а):Может быть, есть документы, в которых нет таблиц?


в том то и дело что , как я понимаю,приложение должно запускаться с пустой страницы, самый первый запуск ,когда я эксперементировал с кодом, запустилось всё нормально и работало как положенно, потом я сохранил проект и попытался его запустить снова ... выскочила вышеописанная ошибка и в окне WebBrowser1 надпись "невозможно отобразить страницу". Я так понимаю WebBrowser1 пытается открыть какую то страницу, но какую и почему он это делает ??? в программе открытие должно происходить только после клика на кнопке. Може где то запоминается что-то ???, хотя исходник я принёс с работы домой - дома то же самое ... ни разу не запустилось ...

beat_swamp
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 107
Зарегистрирован: 05.10.2005 (Ср) 16:16

Сообщение beat_swamp » 08.12.2005 (Чт) 12:25

посмотри разбор выражение типа "((32+74)*7-14)/2"! тот же случай только у тебя сместо скобок идут <h1> и </h1>1

НиколайП
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 125
Зарегистрирован: 06.12.2005 (Вт) 22:16

Сообщение НиколайП » 08.12.2005 (Чт) 15:30

beat_swamp писал(а):посмотри разбор выражение типа "((32+74)*7-14)/2"! тот же случай только у тебя сместо скобок идут <h1> и </h1>1


я конечно извиняюсь, но что то не понял что ты имел ввиду ...

НиколайП
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 125
Зарегистрирован: 06.12.2005 (Вт) 22:16

Сообщение НиколайП » 08.12.2005 (Чт) 15:35

по поводу возникающей ошибки 91:
удалил из формы контрол WebBrowser1 , затем снова установил - всё заработало нормально до тех пор пока не выключил компьютер ...
сегодня запускаю проект - опять всё таже ошибка. Можно конечно удалять его и вставлять постоянно пока в режиме проекта, но как потом будут обстоять дела, после компиляции :)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 08.12.2005 (Чт) 16:47

Дождись прогрузки объектной модели. .ReadyState.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

beat_swamp
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 107
Зарегистрирован: 05.10.2005 (Ср) 16:16

Сообщение beat_swamp » 08.12.2005 (Чт) 17:21

НиколайП писал(а):
beat_swamp писал(а):посмотри разбор выражение типа "((32+74)*7-14)/2"! тот же случай только у тебя сместо скобок идут <h1> и </h1>1


я конечно извиняюсь, но что то не понял что ты имел ввиду ...

я имел ввиду разбор строки1

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 08.12.2005 (Чт) 17:42

А зачем ты имел в виду разбор строки?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

DoctorADD
Начинающий
Начинающий
 
Сообщения: 1
Зарегистрирован: 21.10.2012 (Вс) 18:47

Re: VB 6.0 и HTML , копирование информации с инета

Сообщение DoctorADD » 21.10.2012 (Вс) 19:17

Можно попробовать использовать InStr:
Код: Выделить всё
Private Sub Command1_Click()
Dim a As Long, aa As Long
a = InStr(1, txtHTML.Text, "<h1>")
aa = InStr(1, txtHTML.Text, "</h1>")
If a <> 0 Then
txtText.Text = Mid(txtHTML.Text, a + 4, aa - a - 4)
End If
End Sub

Конечно не лучший пример, но работает.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16477
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: VB 6.0 и HTML , копирование информации с инета

Сообщение Хакер » 21.10.2012 (Вс) 19:41

DoctorADD — предупреждение за некрофилию.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

    TopList