Главная страница
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.02 c
3-1232568724
Amid
2009-01-21 23:12
2009.12.27
Orqcle10g + Delphi 6, 7


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


15-1256595468
Германн
2009-10-27 01:17
2009.12.27
Ищу эксперта.


1-1215982046
Stan
2008-07-14 00:47
2009.12.27
Кириллица отображается неверно.


2-1257402647
d@nger
2009-11-05 09:30
2009.12.27
Обновление Master-Detail таблицы (Firebird)