Просмотр полной версии : Парсинг HTML в Delphi
В TStrings находится документ HTML.
В нем присутствует такое
<td class="name"><a href="http://ссылка.ру">Какято лажа написана</a><small>Тут еще фигня, теги</small></td>
Оно повторяется много раз, причем может быть, что в одной строке несколько. Мне нужно из этой конструкции вытащить ссылки (http://ссылка.ру).
Запихнуть надо их в TStrings.
Как это можно реализовать попроще,
помогите, пжлст)
nc.STRIEM
26.12.2006, 21:01
Как это можно реализовать попроще,
помогите, пжлст)
проще всего это пишеться на Php !
так че думай.... есле че могу помочь на php сделать!
делфи я не знаю.
проще всего это пишеться на Php !
Спасибо, конечно, но программа уже практически готова (чуть не сдох!), да и должна быть на компилируемом языке.
Я тут подумал... Есть же инструменты парсинга XML, нелязя ли выполнить эту задачу с их помощью?
nc.STRIEM
26.12.2006, 21:12
да и должна быть на компилируемом языке.
знакомся: php2exe )))
gemaglabin
26.12.2006, 21:18
Вот.должно помочь http://www.mytempdir.com/1135328
Гема Шумахер, блин... только, что написал. А нет, надо опередить...
Вот.должно помочь http://www.mytempdir.com/1135328
Спасибо. Но плиз, объясни, как сделать, чтобы он в одной строке искал несколько раз?
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
s : string;
begin
For i := 0 to memo1.Lines.Count - 1 do begin
s := memo1.Lines.Strings[i];
if pos('<td class="name"><a href',s) <> 0 then begin
s := copy(s,pos('<td class="name"><a href=',s)+26,length(s));
s := copy(s,0,pos('">',s)-1);
memo2.Lines.Add(s);
end;
end;
end;
Потому что он находит первую ссылки и выводит, а мне надо несколько из каждой строки. (((
О! Нашел проект http://www.regexpstudio.com
Видимо очень удобная вещь. Взял пример по вытаскиванию мыльников из Tstrings. Только вот что-то не глотает мое выражение
'\<td class\=\"name\"\>\<a href=\"'+'[_a-zA-Z\d\-\.]'+'\"\>'
вроде все что может мешать заэкранировал, посмотрите, плииз. Если заставлю это работать будет вообще малина. Буду искать такие же строки, а потом функцией gemaglabin`а выдергивать ссылки.
Как я понимаю язык выражений аналогичен Perl/PHP.
<td class="name"><a href="(.*)">
Вот чего надумал. Но почему-то возвращает с переводами строки на прбелах
сть же инструменты парсинга Xml, нелязя ли выполнить эту задачу с их помощью? Нельзя.
Легко с помощью регекспов.
ельзя.
Легко с помощью регекспов.
Да я уже понял... Только вот, что-то не выходит...
Вот за основу взят Гемин, пример, чтобы по сто раз не писать. На-ка вот.
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
s,link : string;
begin
memo2.Lines.Clear;
For i := 0 to memo1.Lines.Count - 1 do begin
s := memo1.Lines[i];
while pos('<a href',s) <> 0 do begin
s := copy(s,pos('<a href=',s)+9,length(s));
link := copy(s,0,pos('">',s)-1);
memo2.Lines.Add(link);
s:=copy(s,pos('">',s),length(s));
end;
end;
end;
end.
Вот за основу взят Гемин, пример, чтобы по сто раз не писать. На-ка вот.
Спасибо запомощь но проблему уже решил.
Используя регексы выдергивал нужные теги, а потом той же функцией вытягивал ссылки.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot