Передать в переменную только текст html страницы

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

Передать в переменную только текст html страницы

Сообщение waresok » 13.10.2013 (Вс) 23:04

Всем привет! Просьба помочь.
Не нашел решения, нужно загрузить содержимое html страницы (без тегов) в переменную (не используя webbrowser) .
В IE можно сохранить страницу как 'Текстовый файл *txt', тогда получатеся чистый текст, без кода. Может есть простой способ решения этой задачи на VB?

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Передать в переменную только текст html страницы

Сообщение iGrok » 13.10.2013 (Вс) 23:53

waresok писал(а):простой способ решения этой задачи на VB

Смотря что считать "простым".

Так-то я бы и реализацию http на сокетах для получения кода страницы, и парсинг страницы на предмет выкидывания тегов сложным не назвал.
Но если под простым понимать что-то типа Text = SomeSecretComponent.GetWebPageText("http://www.web-page-address.com"), тогда, конечно, такого нет.

А так, надо смотреть в сторону WinHTTPRequest + какого-нибудь html-парсера (mshtml, или чего-нибудь из местных "кирпичей").
label:
cli
jmp label

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 14.10.2013 (Пн) 0:00

Вполне можно использовать регулярные выражения. Сначала удалить комментарии, потом скрипты и, наконец, теги.
Хотя сама идея получать полный текс страницы весьма подозрительна...

waresok
Новичок
Новичок
Аватара пользователя
 
Сообщения: 35
Зарегистрирован: 15.06.2008 (Вс) 9:17

Re: Передать в переменную только текст html страницы

Сообщение waresok » 14.10.2013 (Пн) 0:17

html файл представляет собой отчет стороннней программы, вида:
<div>блок 1</div>
...
<div>блок 1000</div>
Одинаковая структура, только разные данные, нужные я беру из каждого блока и добавляю в БД. Для небольших отчетов прекрасно подходил способ подгрузить страничку в Webbrowser и обработать ее.
Но в данном отчете htm-файл из-за большого количества данных может весить ~3-5Mb и более. Слишком долго подгружается... Вот и хочу подгружать чисто текст отчета, а не саму страницу и его уже парсить.
С регулярными выражениями можно, но не хотелось бы, не думаю, это это будет быстро при таком размере файла.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Передать в переменную только текст html страницы

Сообщение iGrok » 14.10.2013 (Пн) 1:58

waresok писал(а):Вот и хочу подгружать чисто текст отчета, а не саму страницу и его уже парсить.

И где ж ты его возьмёшь, если у тебя есть только полная страница?! Её в любом случае кто-то сначала должен распарсить.
label:
cli
jmp label

waresok
Новичок
Новичок
Аватара пользователя
 
Сообщения: 35
Зарегистрирован: 15.06.2008 (Вс) 9:17

Re: Передать в переменную только текст html страницы

Сообщение waresok » 14.10.2013 (Пн) 7:58

вот и хотелось бы файл html конвертировать в txt

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

Re: Передать в переменную только текст html страницы

Сообщение alibek » 14.10.2013 (Пн) 8:05

waresok писал(а):Но в данном отчете htm-файл из-за большого количества данных может весить ~3-5Mb и более. Слишком долго подгружается... Вот и хочу подгружать чисто текст отчета, а не саму страницу и его уже парсить.

То есть ты хочешь, чтобы веб-сервер для тебя отдавал только текст?
Напиши администратору сервера. Других способов нет.
Lasciate ogni speranza, voi ch'entrate.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 14.10.2013 (Пн) 8:40

alibek писал(а):То есть ты хочешь, чтобы веб-сервер для тебя отдавал только текст?

По-моему, он имел в виду, что оно долго парсится в IE (ну и в контроле WebBrowser), поэтому надо распарсить другим способом...

Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Re: Передать в переменную только текст html страницы

Сообщение Don Leno » 14.10.2013 (Пн) 10:10

Qwertiy писал(а):
alibek писал(а):То есть ты хочешь, чтобы веб-сервер для тебя отдавал только текст?

По-моему, он имел в виду, что оно долго парсится в IE (ну и в контроле WebBrowser), поэтому надо распарсить другим способом...


Может лучше создать отдельную функцию, где выкидываются все теги и потом сохранять чистый текст в текстовый файл.
Хотя я согласен что получить страницу лучше через HTTP, но это тоже не мало кодинга. А В WebBroser случаем нет функции наподобие как в обычном браузере - просмотр кода страницы?

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

Re: Передать в переменную только текст html страницы

Сообщение alibek » 14.10.2013 (Пн) 11:35

Don Leno писал(а):А В WebBroser случаем нет функции наподобие как в обычном браузере - просмотр кода страницы?

Ты не поверишь.
Lasciate ogni speranza, voi ch'entrate.

Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Re: Передать в переменную только текст html страницы

Сообщение Don Leno » 14.10.2013 (Пн) 11:55

alibek писал(а):
Don Leno писал(а):А В WebBroser случаем нет функции наподобие как в обычном браузере - просмотр кода страницы?

Ты не поверишь.

Мож код приведешь?


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

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

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

    TopList