Главная страница
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.015 c
1-1231711857
Илья_
2009-01-12 01:10
2009.12.27
Установка собственного шрифта


2-1257909781
igan
2009-11-11 06:23
2009.12.27
Типы данных C, VB -> Delphi


15-1256842565
Piter
2009-10-29 21:56
2009.12.27
IE6 не воспринимает "return false;" в событии onclick в ссылках


15-1256741604
Ramms+eineR
2009-10-28 17:53
2009.12.27
Фриланс. Direct3D/OpenGL.


15-1256647102
Scot Storch
2009-10-27 15:38
2009.12.27
Проблема с кодировкой (русские символы)