Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.06.29;
Скачать: CL | DM;

Вниз

IHTMLDocument2 получение всех ссылок   Найти похожие ветки 

 
Dmitrij_K   (2006-05-06 16:28) [0]

Чтобы получить ссылки использую такой код
[code=delphi]
unit uParseHTML;    
interface    
uses Classes, mshtml, ActiveX, Variants;    
procedure Init_parser;    
procedure Close_parser;    
procedure daj_all_link(var aBuff:AnsiString;aLinkList,aTextList:TStrings);    
implementation    
var    
 iDoc : IHTMLDocument2;    
procedure Init_parser;    
begin    
 idoc := CoHTMLDocument.Create as IHTMLDocument2;    
end;    
procedure Close_parser;    
begin    
 if assigned(iDoc) then    
 begin    
   iDoc.Close;    
   iDoc := nil;    
 end;    
end;    
procedure set_buff(var aBuff:AnsiString);    
var v : Variant;    
begin    
 v    := VarArrayCreate([0, 0], varVariant);    
 v[0] := aBuff;    
 idoc.clear;    
 idoc.write(PSafeArray(TVarData(v).VArray));    
end;    
procedure daj_all_link_2(var aLinkList,aTextList:TStrings);    
var    
 v : OleVariant;    
 j : Integer;    
 d : IDispatch;    
 e : IHTMLElement;    
 l : IHTMLAnchorElement;    
 c : IHTMLElementCollection;    
 z : string;    
 s : string;    
begin    
 aLinkList.Clear;    
 aTextList.Clear;    
 v := "A";    
 d := iDoc.all.tags(v);    
 if assigned(d) then    
 begin    
   d.QueryInterface(IHTMLElementCollection, c);    
   if assigned(c) then    
   begin    
     for j:=1 to c.Get_length do    
     begin    
       d := c.item(pred(j),0);    
       d.QueryInterface(IHTMLElement, e);    
       d.QueryInterface(IHTMLAnchorElement, l);    
       if assigned(e) and assigned(l) then    
       begin    
         z := l.href;    
         if aLinkList.IndexOf(z)=-1 then    
         begin    
           aLinkList.Add(z);    
           aTextList.Add(e.innerText);    
         end    
       end    
     end    
   end    
 end    
end;    
procedure daj_all_link(var aBuff:AnsiString;aLinkList,aTextList:TStrings);    
begin    
 set_buff(aBuff);    
 daj_all_link_2(aLinkList,aTextList);    
end;    
end.
[/code]

У ссылок с относительным путем получаю такую хрень
[b]about:blank/path/name.htm[/b]

Как в IHTMLDocument2 прописать текуший URL, чтобы ссылки нормальные получались?


 
Pavlo ©   (2006-05-07 14:53) [1]

Ну как догадаться не мудренно.
Если такую фигню пишет [b]about:blank/path/name.htm[/b]
ТО ты находишься к примеру на http://www.delphimaster.ru/ адальше идёт папка на под директорию.Следовательно пишем процедуру,получаем весь урл если урл нормальный(типа первые символы не равны [b]about:blank/) то делай шо ты хош,а если не нормальный то вызываем процедуру создания нормального урл.передаем урл и вырезаем символы [b]about:blank/ и вставляем урл на котором находимся(главный)+всё что пошло после [b]about:blank/
Стучи в асю может напишу процедуры если время будет .
И напиши какую ты прогу хош ,мож у меня шо то подобное уже есть
Ася 229-493-799


 
Dmitrij_K   (2006-05-08 11:09) [2]

Если кому интересно
http://forum.vingrad.ru/index.php?showtopic=94888


 
Шпиён   (2006-05-14 01:41) [3]

Если интересно, то можно сделать проще
http://forum.sources.ru/index.php?showtopic=137176&st=0



Страницы: 1 вся ветка

Текущий архив: 2008.06.29;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.024 c
15-1211024318
may be I am noob...
2008-05-17 15:38
2008.06.29
Вопрос по Apache (.htaccess)


15-1210793838
No_Dead
2008-05-14 23:37
2008.06.29
Перекрестные ссылки на сайте


2-1212241497
9899100
2008-05-31 17:44
2008.06.29
ресурсы


3-1200920739
S@shka
2008-01-21 16:05
2008.06.29
Передать в UDF TimeStamp


2-1212584820
TUserClass
2008-06-04 17:07
2008.06.29
Забацать DLL в EXE и распаковать ...