![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
парсинг Web [D7, WinXP]
voe © (2008-05-13 09:58:00)Есть такая вот конструкция:
<DIV id=11>
<DIV align=justify >НУЖНЫЙ МНЕ <SPAN class=h>й</SPAN>ТЕКСТ!</DIV>
Как мне получить из этого: НУЖНЫЙ МНЕ ТЕКСТ!
Все что у меня получилось это: НУЖНЫЙ МНЕй ТЕКСТ!
Как мне проигнорировать <SPAN class=h>й</SPAN> ?
Данные вытаскиваю следующим образом:
var
HtmlDocument: IHtmlDocument2;
HtmlCollection: IHtmlElementCollection;
HtmlElement: IHtmlElement;
I: Integer;
SourceSave1: Textfile;
begin
AssignFile(SourceSave1,'c:\test2.txt');
ReWrite(SourceSave1); {Create a new file named ek.txt}
HtmlDocument := EmbeddedWB1.Document as IHtmlDocument2;
HtmlCollection := HtmlDocument.All;
for I := 0 to HtmlCollection.Length - 1 do begin
HtmlElement := HtmlCollection.Item(i, 0) as IHtmlElement;
if (HtmlElement.TagName='DIV') and (HtmlElement.ID='11') then
Writeln(SourceSave1, HtmlElement.innertext);
end;
Closefile(SourceSave1);
Style (2008-05-15 11:20:00) [1]
> StringReplace или RegExp - первое, что приходит в голову
Конечно регулярные выражения что надо для таких задач.
а вот откуда в Делфе - RegExp? Я вот в 6ке не нашел.
Знаю что в DevExpress компонентах есть неплохая реализация механизма регулярных выражений.
sniknik (2008-05-15 11:19:00) [2]как текст нельзя, потеряешь форматирование, вот сохранить как hml с удаленными span тегами. другое дело. после открывается хоть вордом, хоть фикшенбук конвертором, будет правильно оформленный текст.
хотя, это имхо, х.з. что на самом деле автору нужно.
REA (2008-05-15 11:07:00) [3]А поудалять тэги span и сохранить как текст?
sniknik (2008-05-15 08:41:00) [4]уже высказаны 2 диаметрально противоположные идеи... 1 - скачать с другого места в готовом формате, 2 - парсить (/вырезать лишние теги) получаемый, только htm а не XML.
и в общем то да, других не предвидится... хотя нет, есть еще пара - 3 - найди готовую программу или, 4 - найми программиста.
идеи кончились, дело за реализацией.
> А почему не загрузишь в TreeView , а потом не поищешь по нему node.text ?
потому что у него не hml, а веб страничка, у которой в одном теге текст "разбавленный" лишними тегами (SPAN) со случайными буквами, которые делают его нечитаемым если копировать стандартно.
из его описания этого не понять, просто я както интересовался данным вопросом. в курсе в общем.
voe (2008-05-14 23:56:00) [5]Никаких идей?
voe (2008-05-13 12:37:00) [6]
> правильно, експроприируй эксроприируемое! но гораздо проще
> скачать тот же текст с бесплатных библиотек, цельный и в
> открытом формате.
Как правильно?
> affonya (13.05.08 11:25) [6]
> А почему не загрузишь в TreeView , а потом не поищешь по
> нему node.text ?
Объемы большие + при загрузки в TreeView наверняки и текст из <SPAN class=h>й</SPAN> тоже загрузится.
affonya (2008-05-13 11:25:00) [7]А почему не загрузишь в TreeView , а потом не поищешь по нему node.text ?
voe (2008-05-13 11:01:00) [8]А как нибуть просто прочитать только текст из тега DIV нельзя?
Anatoly Podgoretsky (2008-05-13 10:32:00) [9]> voe (13.05.2008 09:58:00) [0]
Трудновато, поскольку твои правила удаления и добавления пробелов не поддаются логике.
sniknik (2008-05-13 10:30:00) [10]> <SPAN class=h>й</SPAN>
книжки с литреса тыришь?
правильно, експроприируй эксроприируемое! но гораздо проще скачать тот же текст с бесплатных библиотек, цельный и в открытом формате.
palva (2008-05-13 10:30:00) [11]> Есть такая вот конструкция:
Если конструкция всегда правильная с точки зрения XML, то помочь могут парсеры XML.
clickmaker (2008-05-13 10:15:00) [12]StringReplace или RegExp - первое, что приходит в голову