Avatar billede thomas_b Nybegynder
14. januar 2009 - 14:43 Der er 26 kommentarer

Finde alle links på en hjemmeside ?

Hej...

Jeg søger et script der kan finde indholdet af alle herf="" da jeg
søger alle interne link fra en side vil gerne have dem listet på på
en lang liste...

Har i ikke et lille script til dette formål...?
Avatar billede thomas_b Nybegynder
14. januar 2009 - 16:12 #1
Jeg har en del af et script her...:

Men det er designet til kun at finde decimaltal...
Og det skal så kun here indhold af herf=""...

Kan dette lade sig gøre...


re.Pattern = "/<a[^>]*?href=""(.*?)""[^>]*>/"
Set matches = re.Execute(text)

If matches.Count > 0 Then
    tal = matches(0)
    tal = Replace(tal, ".", "")
    tal = Replace(tal, ",", ".")

    smallest = tal
    largest = tal

    For i=1 To matches.Count-1
        tal = matches(i)
        tal = Replace(tal, ".", "")
        tal = Replace(tal, ",", ".")
        tal = +tal

        Response.Write tal&"<br>"

    Next

End If
Avatar billede jensgram Nybegynder
14. januar 2009 - 18:37 #2
Hvad giver


If matches.Count > 0 Then
    For i=0 To matches.Count
        noget = matches(i)

        Response.Write noget&"<br>"

    Next

End If
Avatar billede thomas_b Nybegynder
14. januar 2009 - 18:42 #3
re.Pattern = "/<a[^>]*?href=""(.*?)""[^>]*>/"
Set matches = re.Execute(text)

If matches.Count > 0 Then
    For i=0 To matches.Count
        noget = matches(i)

        Response.Write noget&"<br>"

    Next

End If

Det giver ingenting... Selvom der er nogle links i teksten...
Avatar billede jensgram Nybegynder
14. januar 2009 - 18:51 #4
Der skal vist ikke være delimiters i ASP, så vidt jeg kan læse mig til:

- re.Pattern = "/<a[^>]*?href=""(.*?)""[^>]*>/"
+ re.Pattern = "<a[^>]*?href=""(.*?)""[^>]*>"


Har du initialiseret med "new"?
Avatar billede thomas_b Nybegynder
14. januar 2009 - 19:22 #5
Den kommer med denne ASP-fejl...: Invalid procedure call or argument
Avatar billede jensgram Nybegynder
14. januar 2009 - 19:28 #6
Prøv at vise noget mere kode.

Jeg aner forresten ikke en kæft om ASP, så det er rent gætværk :)
Avatar billede thomas_b Nybegynder
14. januar 2009 - 20:55 #7
Hehe...

Dette er hele min kode...

url = "http://www.sol.dk/"
set Req = Server.CreateObject("Msxml2.ServerXMLHTTP")
Req.open "GET", url, False
Req.Send

text = Req.ResponseText

re.Pattern = "/<a[^>]*?href=""(.*?)""[^>]*>/"
Set matches = re.Execute(text)

If matches.Count > 0 Then
    For i=0 To matches.Count
        noget = matches(i)

        Response.Write noget&"<br>"

    Next

End If
Avatar billede arne_v Ekspert
15. januar 2009 - 04:06 #8
Jeg har aldrig brugt // i Pattern i ASP.

Prøv og fjern dem.
Avatar billede thomas_b Nybegynder
15. januar 2009 - 09:18 #9
Øhh... men så har den da ikke noget filter at gå efter vel ?
Avatar billede thomas_b Nybegynder
15. januar 2009 - 09:22 #10
Min fejl... lidt tidligt...

den kommer med denne fejl...

Object required: 're'
Avatar billede thomas_b Nybegynder
15. januar 2009 - 09:33 #11
Nu har jeg tilføjet
Avatar billede thomas_b Nybegynder
15. januar 2009 - 09:34 #12
Set re = New RegExp
re.Global = True
re.IgnoreCase = True

til mit script men nu kommer den med den oprinlige fejl igen...
Avatar billede thomas_b Nybegynder
15. januar 2009 - 09:35 #13
Invalid procedure call or argument

På denne linie...: noget = matches(i)

(exp.dk lavede lige 3 poster for mig... sorry)
Avatar billede olebole Juniormester
15. januar 2009 - 09:57 #14
<ole>

Prøv:

Dim re, text

Set re = New RegExp
re.Global = True
re.IgnoreCase = True

text = "blabla bla <a title=""mit link"" href=""http://www.google.com"">Google</a> blabla bla blabla <a href=""http://www.yahoo.com"" title=""mit andet link"">Google</a> bla bla blabla"

re.Pattern = "<a(.*?)href=""(.*?)""(.*?)>"
Set matches = re.Execute(text)

If matches.Count > 0 Then
    For i=0 To matches.Count-1
        noget = matches(i)
        Response.Write noget & "<br>"
    Next
End If

/mvh
</bole>
Avatar billede thomas_b Nybegynder
15. januar 2009 - 11:27 #15
Ikke helt... :(

Dette bliver resultetet...!

(<a title="mit link" href="http://www.google.com"><br><a href="http://www.yahoo.com" title="mit andet link"><br>)
den skulle gerne liste dem sådan her....:

http://www.google.com
http://www.yahoo.com
http://www.google.com
http://www.yahoo.com
osv...
Avatar billede jensgram Nybegynder
15. januar 2009 - 15:14 #16
Hmm - mon ikke match har en group man kan tilgå?
Avatar billede thomas_b Nybegynder
15. januar 2009 - 15:24 #17
Altså jeg har et php-script som laver det jeg vil have... men skal desværre bruge det i asp og kender ikke de pågældende funktioner fra php til asp...

i php ser det således ud...

<?php
    $url = $_GET['url'];
    preg_match( '!http://([^/]+)(/.*)?$!', $url, $m );
    $host = 'http://' . $m[1];
    $path = $m[2];
    if ( strlen( $path ) > 0 && substr( $path, -1 ) != '/' )
    {
        $path = dirname( $path ) . '/';
    }
    $cnt = file_get_contents( $url );
    if ( preg_match_all( '§<a.*?href="(.*?)"§si', $cnt, $m ) )
    {
        foreach ( $m[1] as $link )
        {
            if ( !preg_match( '!^java script:!i', $link ) && $link != '#' )
            {
                if ( !preg_match( '!^http://!', $link ) )
                {
                    if ( $link[0] == '/' )
                    {
                        $link = $host . $link;
                    }
                    else
                    {
                        $link = $host . $path . $link;
                    }
                }
                echo "$link<br>";
            }
        }
    }
?>
Avatar billede locke Nybegynder
15. januar 2009 - 15:47 #18
undergrupper fanger du med matches(i).SubMatches(x)
Avatar billede jensgram Nybegynder
15. januar 2009 - 20:41 #19
Så prøv at se, hvad der gemmer sig i SubMatches(1) eller 2
Avatar billede thomas_b Nybegynder
15. januar 2009 - 22:45 #20
Jeg er ikke helt med i det der matches(i).SubMatches(x) hvordan skulle koden se ud efter jeres indlæg... :)
Avatar billede jensgram Nybegynder
15. januar 2009 - 22:47 #21
oleboles


Dim re, text

Set re = New RegExp
re.Global = True
re.IgnoreCase = True

text = "blabla bla <a title=""mit link"" href=""http://www.google.com"">Google</a> blabla bla blabla <a href=""http://www.yahoo.com"" title=""mit andet link"">Google</a> bla bla blabla"

re.Pattern = "<a(.*?)href=""(.*?)""(.*?)>"
Set matches = re.Execute(text)

If matches.Count > 0 Then
    For i=0 To matches.Count-1
        noget = matches(i).SubMatches(1)
        Response.Write noget & "<br>"
    Next
End If
Avatar billede olebole Juniormester
15. januar 2009 - 22:51 #22
Dooohhhh ... ja, jeg tænkte ikke på, at du selvfølgelig vil hive dine parenteser ud  =)
Avatar billede thomas_b Nybegynder
16. januar 2009 - 01:05 #23
I php skriver den automatisk http og www foran de links der ikke har en fuld sti... er det noget som asp også kan auto.
Avatar billede olebole Juniormester
16. januar 2009 - 10:49 #24
Hvad er mon det i PHP, der automatisk skriver 'http' eller 'www'. Det er jeg ikke stødt på i de 10 år, jeg har kodet PHP  =)
Avatar billede jensgram Nybegynder
16. januar 2009 - 11:20 #25
:)
Avatar billede thomas_b Nybegynder
16. januar 2009 - 20:32 #26
Er lige ved at få det til at lykkes... tror jeg...

Lige et hurtigt sideskift...

ved i hvordan at jeg kan få XMLHTTP'en til at fortsætte hvis der kommer en URL den ikke kan læse...

Uden at gå over i noget der ping'er alle adresser der kommer igennem...?

set Req = Server.CreateObject("Msxml2.ServerXMLHTTP")
Req.open "GET", "blablabla", False
Req.Send
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester