Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.12.27;
Скачать: CL | DM;

Вниз

парсить web страницы посоветуйте   Найти похожие ветки 

 
ford ©   (2009-10-30 12:28) [0]

Здравствуйте!
Поставили задачу, вытягивать информацию с разных страниц разных сайтов.
Я сделал так, гружу страницу в TWebBrowser и далее делаю примерно так

var
 ovElements: OleVariant;
 i: Integer;
begin
ovElements := Web.OleObject.Document.forms.item(0).elements;
for i := 0 to (ovElements.Length - 1) do
 Begin
   if (ovElements.item(i).tagName = TagName) and
     (ovElements.item(i).type = TagType) then ovElements.Item(i).Value:=Value;
 end;
end;


где TagName - имя тега а TagType тип тега соответсвенно

все вроде работает, но как-то не хорошо, ибо загружается в WebBrowser вся страница вместе с картинками и прочими прибамбасами
а хочется загружать страницу без картинок и не показывать ничего пользователю, а просто выводить уже необходимую информацию.

Подскажите как лучше решить данную задачу ?


 
antonn ©   (2009-10-30 12:46) [1]

через сокеты, забирать html


 
TUser ©   (2009-10-30 13:10) [2]

Скачай компоненты ICS


 
ford ©   (2009-10-30 13:27) [3]

попробовал через Indy
страницу получаю :)
но как потом вытягивать значения тегов?
можно конечно искать нужный теги и брать их значения прямо из текстового файла (html)
но нехочется изобретать велосипед
да и честно говоря можно просто зависнуть если разбирать таблицы :(

опять таки на TWebBrowser разбираю таблицы
вот так:

var
 i: integer;
 ovTable: OleVariant;
Begin
  ovTable := Web.OleObject.Document.all.tags("TABLE").item(1);
  for i := 1 to (ovTable.Rows.Length - 1) do
  begin
   Memo1.Lines.Append(ovTable.Rows.Item(i).Cells.Item(0).innerText);
  end;
end;  



согласитесь что так получается удобно, берешь таблицу, и по строкам пробежался взял что надо


 
b z   (2009-10-30 13:38) [4]


> можно конечно искать нужный теги и брать их значения прямо
> из текстового файла (html)
> но нехочется изобретать велосипед
Регулярные выражения.


 
ford ©   (2009-10-30 14:41) [5]


> Регулярные выражения.

я думал использовать регулярные выражения
но споткнулся с таблицами
куча тегов <tr> и <td> и как тогда например взять текст который расположен во второй ячейке третьей строки?


 
b z   (2009-10-30 15:23) [6]


> как тогда например взять текст который расположен во второй
> ячейке третьей строки?
Надо написать соотв. выражение, а потом по match-ам, и брать нужные.


 
TUser ©   (2009-10-30 15:37) [7]

Можно загрузить текст в тот же WebBrowser, если не боишься (я, например, боюсь).


 
Anatoly Podgoretsky ©   (2009-10-30 15:43) [8]

> ford  (30.10.2009 14:41:05)  [5]

В ВЕБе таблицы не регулярные, включая таблица в таблице.


 
Polkin   (2009-10-30 15:57) [9]

Делал когдато нечто подобное.

Брал текст Индями

IdHTTP.Get/Post

и вытягивал данные TRegExpr"ом, и привычно и удобно.

А IE в WebBrowser"е меня всегда пугал. =)


 
DVM ©   (2009-10-30 16:29) [10]

Для разбора HTML нужен SGML парсер. Если страницы в формате XHTML то можно попробовать XML парсером.


 
Dennis I. Komarov ©   (2009-10-30 16:38) [11]

Какой характер инфы? Может оказаться из пушки по воробьям...



Страницы: 1 вся ветка

Текущий архив: 2009.12.27;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.019 c
1-1231775144
Игорь_Залозных
2009-01-12 18:45
2009.12.27
Вывод очень длинной строки


2-1257770354
kyn66
2009-11-09 15:39
2009.12.27
Переменная цикла с неверным начальнымзначением


2-1257779059
Jaroslight
2009-11-09 18:04
2009.12.27
Среднее значение показателей типа TTime


15-1255535983
SP
2009-10-14 19:59
2009.12.27
Флешки. Как запретить открытие при установке?


2-1257412567
kyn66
2009-11-05 12:16
2009.12.27
Сохранение параметров программы одним числом