Парсер HTML

  • Автор темы SeaMan75
  • 2050
  • Обновлено
  • 11, Aug 2016
  • #2
SeaMan75, post: 767281:
Каким способом лучше всего очень быстро парсить HTML? - использовать готовые решения и какие или самому изобретать велосипед?
Каждый дрочит как он хочет, я дрочу как я хочу!
Есть готовые парсеры, можешь свой писать
 

LeshaRB


Рег
11 Jun, 2007

Тем
5

Постов
110

Баллов
160
  • 14, Aug 2016
  • #4
SeaMan75, post: 767281:
Каким способом лучше всего очень быстро парсить HTML? - использовать готовые решения и какие или самому изобретать велосипед?
Использование regexp всегда универсально в этом случае
 

Nex Ko


Рег
08 Feb, 2015

Тем
0

Постов
14

Баллов
14
  • 29, Aug 2016
  • #5
легкий модуль для парсинга html

, работает четко. Был найден очень давно в нете.
 uses HTMLPars;

var

HTMLTag : THTMLTag;

HTMLParser : THTMLParser;

obj : TObject;

aTag, avalue: String;

i : Integer;

begin

HTMLParser:=THTMLParser.Create;

HTMLParser.Lines.Text:=tmp;

HTMLParser.Execute;

//

for i:= 1 to HTMLParser.parsed.count do

begin

obj:=HTMLParser.parsed[i-1];

if obj.classtype=THTMLText then

avalue:=avalue+THTMLText(obj).Line;

if (obj.classtype=THTMLTag)and(not ftovar) then

begin

HTMLTag:=THTMLTag(obj);

aTag :=LowerCase(HTMLTag.Name);

if (aTag='tr') then

begin

...

Continue;

end;

if (aTag='/tr') then

begin

// что то делаем с собранным текстом avalue

...

avalue:='';

Continue;

end;

end;

end;

end;

 

xmailer


Рег
07 Nov, 2015

Тем
0

Постов
5

Баллов
5
  • 26, Sep 2016
  • #7
так же для парсинга можно использовать стандартный компонент TWebBrwoser, но я рекомендую юзать TChromium и у него намного больше внутренних инструментов, для парсинга HTML + встроенные отладчик страниц + скорость работы. Так же можно использовать его не визуальный компонент для этих целей.
 

fets


Рег
04 Oct, 2011

Тем
1

Постов
6

Баллов
16
  • 14, Nov 2016
  • #8
TRegExpr и т.п - Регулярки уже не модные что ли.. Да и вообще, задача не понятна.. всё от задачи зависит, что парсить, может можно обойтись Copy\Pos..
 

DelGor


Рег
25 Jul, 2011

Тем
0

Постов
11

Баллов
11
  • 21, Nov 2016
  • #9
DelGor, post: 767296:
TRegExpr и т.п - Регулярки уже не модные что ли..
Да и вообще, задача не понятна.. всё от задачи зависит, что парсить, может можно обойтись Copy\Pos..
TRegExpr очень медленный, особенно для больших объемов.

У меня даже вылетало исключение - нехватка памяти или переполнение стека, не помню уже.

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

К тому же в matches содержится ошибка при использовании с начальным индексом, по крайней мере в XE8 Upd1. Лучший вариант - LowerCase, Copy, Pos.

Со сложными выражениями, конечно, придется мучиться...
 

under44


Рег
29 Jun, 2011

Тем
0

Постов
6

Баллов
6
  • 07, Dec 2016
  • #11
Unless the data on the web has been determined and arrived, Sometimes values are changed by Java or other scripts. It is best to use TWebbrowser's Document2 or Document3 to capture and operate it steadily. Doc3.getElelentbyID ('id') ._ ClassName, TagName, InnerText, etc.
 

yyjksw


Рег
17 Jul, 2008

Тем
0

Постов
13

Баллов
13
  • 10, Dec 2016
  • #12
Если нужно просто определенные значения в html найти то конечно либо тупо pos либо регулярные выражения. А вот если надо со всем документом работать то я бы взял dihtmlparser, либо работал бы с документом как с xml
 

WildFrag


Рег
22 Dec, 2008

Тем
0

Постов
20

Баллов
20
  • 19, Dec 2016
  • #13
Поддержу DIHtmlParser - быстрый и удобный. Из минусов - платный и без исходников (линкуются объектники к проекту)
 

Maslan


Рег
15 Apr, 2010

Тем
0

Постов
5

Баллов
5
  • 08, Jun 2017
  • #14
test-593, post: 767305:
DiHTML работает нормально, плюс, у них есть версия для разбора XML
а что это такое вообще - компонент? может дадите ссылку хотя бы на описание?
 

under44


Рег
29 Jun, 2011

Тем
0

Постов
6

Баллов
6
Тем
49554
Комментарии
57426
Опыт
552966

Интересно