Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Link aus Quelltext raussuchen und auflisten (https://www.delphipraxis.net/106300-link-aus-quelltext-raussuchen-und-auflisten.html)

s-off 9. Jan 2008 09:15

Re: Link aus Quelltext raussuchen und auflisten
 
Zitat:

Zitat von marabu
Berücksichtigt man die besondere Semantik (HTML), dann hilft vielleicht Hier im Forum suchenExtractLinks() weiter.

Sag ich doch (wusste, dass Du irgendwann mal etwas dazu geschrieben hast, habe es nur noch mehr so schnell wiedergefunden) :zwinker:

knolli 9. Jan 2008 10:54

Re: Link aus Quelltext raussuchen und auflisten
 
Sorry mit dem ExtractLinks() kann ich nix anfangen...

ich hab das hier mal gestestet mit google.de

Delphi-Quellcode:
Memo_Links.Lines.Add(Copy(Memo_Quellcode.Lines[i],POS('<a href="',Memo_Quellcode.Lines[i]),PosEx('">',Memo_Quellcode.Lines[i],POS('<a href="',Memo_Quellcode.Lines[i]))));
und raus kommt das hier:

Delphi-Quellcode:
charset=UTF-8"

















































href="http://images.google.de/imghp?hl=de&tab=wi"

href="http://maps.google.de/maps?hl=de&tab=wl"

href="http://news.google.de/nwshp?hl=de&tab=wn"

href="http://www.google.de/prdhp?hl=de&tab=wf"

href="http://mail.google.com/mail?hl=de&tab=wm"


onclick="this.blur();gbar.tg(event);return false"


href="http://blogsearch.google.de/?hl=de&tab=wb"

href="http://books.google.de/bkshp?hl=de&tab=wp"

href="http://docs.google.com/?hl=de&tab=wo"

href="http://picasaweb.google.de/home?hl=de&tab=wq"

href="http://groups.google.de/grphp?hl=de&tab=wg"

href="http://www.google.com/calendar?hl=de&tab=wc"

href="http://www.google.de/reader?hl=de&tab=wy"

href="http://video.google.de/?hl=de&tab=wv"

href="http://www.google.de/intl/de/options/"




hl%3Dde&usg=AFQjCNEuFEstOqdyi_oJiIgrhN9DEbl2cA"


/www.google.de/&hl=de"






title="Google-Suche" value=""
type=submit value="Google-Suche"
type=submit value="Auf gut Glück!"






style="text-align:left"

type=radio name=meta value="lr=lang_de"

value="cr=countryDE"
ich meine hier sind ein paar links drin aber es findet wie man sehen kann unendlich viele leere Zeilen und auch noch anderes zeug, was keine links sind...

was noch ist, von denlinks die hier gefunden wurden, bracuhe ich das ganze OHNE href=" was muss ich noch ändern damit das nicht mit erscheint? ich meine wwenn ich noch +7 also 7 zeichen später anfange stehet zum ende noch anderes zeug da zb:

Delphi-Quellcode:
http://news.google.de/nwshp?hl=de&tab=wn">News<

http://www.google.de/prdhp?hl=de&tab=wf">Shopp

http://mail.google.com/mail?hl=de&tab=wm">Mail<


k="this.blur();gbar.tg(event);return false"><u>Me


http://blogsearch.google.de/?hl=de&tab=wb">Blogs

http://books.google.de/bkshp?hl=de&tab=wp">Büche

http://docs.google.com/?hl=de&tab=wo">Dokum

http://picasaweb.google.de/home?hl=de&tab=wq">Fotos

http://groups.google.de/grphp?hl=de&tab=wg">Group

http://www.google.com/calendar?hl=de&tab=wc">Kalen

http://www.google.de/reader?hl=de&tab=wy">Reade
also wie kann ich das umgehen, dass neben dem Link auch noch anderes drinsteht?

mashutu 9. Jan 2008 10:58

Re: Link aus Quelltext raussuchen und auflisten
 
Kannst du mal die eigentlichen Daten posten?

s-off 9. Jan 2008 10:59

Re: Link aus Quelltext raussuchen und auflisten
 
Das 'href' steht drin, da Du Deine Copy-Funktion nicht bei Pos('a href'...) losschicken darfst, sondern erst danach., Du musst also noch die Länge von 'a href' zu der Position dazu addieren.
Schau Dir dazu das Beispiel von mashutu an.

Mit Deinem ganzen Vorhaben wirst Du so aber trotzdem nicht weit kommen. Und ich verstehe auch nicht, warum Du nicht das Beispiel von marabu aufgreifst... naja, Deine Sache.

Reguläre Ausdrücke wären eine weitere Möglichkeit.

knolli 9. Jan 2008 11:25

Re: Link aus Quelltext raussuchen und auflisten
 
also nochmal neu!
ich habe bis jetz:
Delphi-Quellcode:
unit U_Test;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, StrUtils;

type
  TForm1 = class(TForm)
    Memo_Quellcode: TMemo;
    Memo_Links: TMemo;
    Button1: TButton;
    Button2: TButton;
    Memo_fertig: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
Memo_Links.Clear;
end;

procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
for i:=1 to Memo_Quellcode.Lines.Count do
//                        String wo kopiert wird #=============== von WO =================#============================== WIE WEIT ====================================
Memo_Links.Lines.Add(Copy(Memo_Quellcode.Lines[i],POS('<a href="',Memo_Quellcode.Lines[i])+7,PosEx('">',Memo_Quellcode.Lines[i],POS('<a href="',Memo_Quellcode.Lines[i]))));
end;

procedure TForm1.Button2Click(Sender: TObject);
var i:integer;
begin
For i:=1 to Memo_Links.Lines.Count do
begin
Memo_fertig.Lines.Add(COPY(Memo_Links.Lines[i],0,Length(memo_Links.Lines[i])-7));
end;
end;

end.
es kommt das raus:

Delphi-Quellcode:
t=UTF-8

















































[url]http://images.google.de/imghp?hl=de&tab=wi[/url]

[url]http://maps.google.de/maps?hl=de&tab=wl[/url]

[url]http://news.google.de/nwshp?hl=de&tab=wn[/url]

[url]http://www.google.de/prdhp?hl=de&tab=wf[/url]

[url]http://mail.google.com/mail?hl=de&tab=wm[/url]


k="this.blur();gbar.tg(event);return false


[url]http://blogsearch.google.de/?hl=de&tab=wb[/url]

[url]http://books.google.de/bkshp?hl=de&tab=wp[/url]

[url]http://docs.google.com/?hl=de&tab=wo[/url]

[url]http://picasaweb.google.de/home?hl=de&tab=wq[/url]

[url]http://groups.google.de/grphp?hl=de&tab=wg[/url]

[url]http://www.google.com/calendar?hl=de&tab=wc[/url]

[url]http://www.google.de/reader?hl=de&tab=wy[/url]

[url]http://video.google.de/?hl=de&tab=wv[/url]

[url]http://www.google.de/intl/de/options/[/url]




e&usg=AFQjCNEuFEstOqdyi_oJiIgrhN9DEbl2cA


oogle.de/&hl=de






"Google-Suche" value="
ubmit value="Google-Suche
ubmit value="Auf gut Glück!






"text-align:left

adio name=meta value="lr=lang_de

"cr=countryDE
was ich jetzt noch wissen muss, ist wie ich den überflüssigen schriebs entfernen kann...
@s-off: warum werde ich damit nich tweit kommen?
und ich habe mir das beispiel angeschaut, aber ich finde es zu kompliziert. ich kann da einfach nix draus lesen (sorry aba da bin ich vllt zu blöd dafür)

mashutu 9. Jan 2008 11:37

Re: Link aus Quelltext raussuchen und auflisten
 
Nein, ich wollte eigentlich die Daten haben die du LIEST. Die Rohdaten also - nicht den Quelltext!

knolli 9. Jan 2008 14:43

Re: Link aus Quelltext raussuchen und auflisten
 
oh...

naja also hier meine rohdaten:

Delphi-Quellcode:
<html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8"><title>Google</title><style>body,td,a,p,.h{font-family:arial,sans-serif}.h{font-size:20px}.h{color:#3366cc}.q{color:#00c}.ts td{padding:0}.ts{border-collapse:collapse}#gbar{float:left;font-weight:bold;height:22px;padding-left:2px}#gbh{border-top:1px solid #c9d7f1;font-size:0;height:0;position:absolute;right:0;top:24px;width:200%}#gbi{background:#fff;border:1px solid;border-color:#c9d7f1 #36c #36c #a2bae7;top:24px;z-index:1000}#guser{padding-bottom:7px !important}#gbar,#guser{font-size:13px;padding-top:1px !important}@media all{.gb1,.gb3{height:22px;margin-right:.73em;vertical-align:top}}#gbi,.gb2{visibility:hidden;position:absolute}.gb2{z-index:1001}#gbar a,#gbar a:active,#gbar a:visited{color:#00c;font-weight:normal}.gb2 a,.gb3 a{text-decoration:none}.gb2 a{display:block;padding:.2em .5em}#gbar .gb2 a:hover{background:#36c;color:#fff}</style><script>window.google={kEI:"Xt2ER7mRHYKAnQOhiuRD",kEXPI:"17259,17735",kHL:"de"};
function sf(){document.f.q.focus()}
window.clk=function(b,c,d,e,f,g){if(document.images){var a=encodeURIComponent||escape;(new Image).src="/url?sa=T"+(c?"&oi="+a(c):"")+(d?"&cad="+a(d):"")+"&ct="+a(e)+"&cd="+a(f)+(b?"&url="+a(b.replace(/#.*/,"")).replace(/\+/g,"%2B"):"")+"&ei=Xt2ER7mRHYKAnQOhiuRD"+g}return true};
window.gbar={};(function(){;var i=window.gbar,a,n,b,o="visible";function p(c,g,f){c.visibility=c.visibility==o?"hidden":o;c.left=g+"px";c.top=f+"px"}i.tg=function(c){var g=0,f,d,k,e=0,h=0,l=window.navExtra;!n&&(n=document.getElementById("gbar"));!b&&(b=n.getElementsByTagName("span"));(c||window.event).cancelBubble=true;if(!a){a=document.createElement(Array.every||window.createPopup?"iframe":"div");a.frameBorder="0";a.id="gbi";a.scrolling="no";a.src="#";document.body.appendChild(a);if(l&&b[8])for(var q in l){var m=document.createElement("span");m.appendChild(l[q]);m.className="gb2";b[0].parentNode.insertBefore(m,b[8])}document.onclick=i.close}for(;b[e];e++){d=b[e];k=d.className;if(k=="gb3"){f=d.offsetLeft;while(d=d.offsetParent)f+=d.offsetLeft}else if(k=="gb2"){p(d.style,f+1,25+g);h=Math.max(h,d.offsetWidth);g+=20}}for(e=0;b[e];e++){if(b[e].className=="gb2"){b[e].style.width=h+"px"}}var j=a.style;j.height=g+"px";j.width=h+"px";p(j,f,24)};i.close=function(c){a&&a.style.visibility==o&&i.tg(c)};})();</script></head><body bgcolor=#ffffff text=#000000 link=#0000cc vlink=#551a8b alink=#ff0000 onload="sf();if(document.images){new Image().src='/images/nav_logo3.png'}" topmargin=3 marginheight=3><div id=gbar><nobr><span class=gb1>Web</a></span> <span class=gb1>[url="http://images.google.de/imghp?hl=de&tab=wi"]Bilder[/url]</span> <span class=gb1>[url="http://maps.google.de/maps?hl=de&tab=wl"]Maps[/url]</span> <span class=gb1>[url="http://news.google.de/nwshp?hl=de&tab=wn"]News[/url]</span> <span class=gb1>[url="http://www.google.de/prdhp?hl=de&tab=wf"]Shopping[/url]</span> <span class=gb1>[url="http://mail.google.com/mail?hl=de&tab=wm"]Mail[/url]</span> <span class=gb3>[url="http://www.google.de/intl/de/options/"]<u>Mehr</u> <span style=font-size:11px>&#9660;</span>[/url]</span> <span class=gb2>[url="http://blogsearch.google.de/?hl=de&tab=wb"]Blogs[/url]</span> <span class=gb2>[url="http://books.google.de/bkshp?hl=de&tab=wp"]Bücher[/url]</span> <span class=gb2>[url="http://docs.google.com/?hl=de&tab=wo"]Dokumente[/url]</span> <span class=gb2>[url="http://picasaweb.google.de/home?hl=de&tab=wq"]Fotos[/url]</span> <span class=gb2>[url="http://groups.google.de/grphp?hl=de&tab=wg"]Groups[/url]</span> <span class=gb2>[url="http://www.google.com/calendar?hl=de&tab=wc"]Kalender[/url]</span> <span class=gb2>[url="http://www.google.de/reader?hl=de&tab=wy"]Reader[/url]</span> <span class=gb2>[url="http://video.google.de/?hl=de&tab=wv"]Video[/url]</span> <span class=gb2>[url="http://www.google.de/intl/de/options/"]und noch mehr &raquo;[/url]</span> </nobr></div><div id=gbh></div><div align=right id=guser style="font-size:84%;padding:0 0 4px" width=100%><nobr>[url="/url?sa=p&pref=ig&pval=3&q=http://www.google.de/ig%3Fhl%3Dde&usg=AFQjCNEuFEstOqdyi_oJiIgrhN9DEbl2cA"]iGoogle[/url] | [url="https://www.google.com/accounts/Login?continue=http://www.google.de/&hl=de"]Anmelden[/url]</nobr></div><center><br clear=all id=lgpd>[img]/intl/de_de/images/logo.gif[/img]

<form action="/search" name=f><table cellpadding=0 cellspacing=0><tr valign=top><td width=25%></td><td align=center nowrap><input name=hl type=hidden value=de><input maxlength=2048 name=q size=55 title="Google-Suche" value="">
<input name=btnG type=submit value="Google-Suche"><input name=btnI type=submit value="Auf gut Glück!"></td><td nowrap width=25%><font size=-2><a href=/advanced_search?hl=de>Erweiterte Suche</a>
[url="/preferences?hl=de>Einstellungen</a>
<a"]Sprachtools[/url]</font></td></tr><tr><td align=center colspan=3><font size=-1><span style="text-align:left">Suche: <input id=all type=radio name=meta value="" checked><label for=all> Das Web </label><input id=lgr type=radio name=meta value="lr=lang_de"><label for=lgr> Seiten auf Deutsch </label><input id=cty type=radio name=meta value="cr=countryDE"><label for=cty> Seiten aus Deutschland </label></span></font></td></tr></table></form>

<font size=-1>[url="/intl/de/ads/"]Werbeprogramme[/url] - [url="/services/"]Unternehmensangebote[/url] - [url="/intl/de/about.html"]Über Google[/url] - <a href=http://www.google.com/ncr>Google.com in English</a></font>

<font size=-2>&copy;2008 Google</font></p></center></body></html>

mashutu 9. Jan 2008 15:14

Re: Link aus Quelltext raussuchen und auflisten
 
Delphi-Quellcode:
procedure getURLs(sName:string);
    procedure processLine(s:string;var t:system.text);
    const
        csStop ='"';
        csStart ='a href=';
        ciStartLen=7;
    var
        sTmp:  string;
        iCount,
        iPos:  integer;
    begin
        iCount:=0;
        repeat
            inc(iCount);
            iPos:=pos(csStart,s);
            if iPos>0 then
            begin
                s:=copy(s,iPos+ciStartLen+1,Length(s));
                iPos:=pos(csStop,s);
                if iPos>0 then
                begin
                    sTmp:=copy(s,1,iPos-1);
                    s:=copy(s,iPos+1,length(s));
                    if LowerCase(copy(sTmp,1,4))='http' then //<<<<<<<<!!!!!!!!!!
                        writeln(t,sTmp);
                end;

            end;
        until iPos=0;
    end;
var
    tout,
    t  :  system.text;
    s  :  string;

begin
    system.assign(t,sName);
    system.assign(tout,ChangeFileExt(sName,'URLs'));
    reset(t);
    rewrite(tout);
    while not eof(t) do
    begin
        readln(t,s);
        processLine(s,tout);
    end;
    system.close(t);
    system.close(tout);
end;
Das ist nur Quick and dirty. Insbesondere an der Markierung waeren noch andere Protokolle zu pruefen.
Auch der Name der Zieldatei ist einfach nur so...
Aber grundsaetzlich sollte klar werden was Sache ist.

s-off 9. Jan 2008 15:38

Re: Link aus Quelltext raussuchen und auflisten
 
In seinem Quelltext scheinen auch URLs zu sein, die nicht von Hochkommata eingeschlossen sind
Zitat:

<a href=http://www.google.com/ncr>
Und schon laufen wir wieder vor die Wand.
Ich sage ja, nach diesem kopierehier kopiereda-Schema wird das nichts. Jedenfalls nichts zuverlässiges.

mashutu 9. Jan 2008 16:08

Re: Link aus Quelltext raussuchen und auflisten
 
@s-off:
Ich hab' ja geschrieben, dasses quick and dirty ist und dass er das noch an seine Beduerfnisse anpassen muss.
Scheint ja auch nicht business-critical zu sein, was er sich da zusammenprogrammiert.
Denke aber, dass ich ihm eine Hilfestellung gegeben habe wie er grundsaetzlich vorgehen kann und einen brauchbaren Output bekommt. Klar gibt es noch diverse Syntaxvarianten. Der allgemeinen Nichtstandardisierung im Internet sei dank...


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:25 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz