Avatar billede tofferman Nybegynder
25. juni 2003 - 17:03 Der er 13 kommentarer og
1 løsning

Læse meta-tags.

Hejsa.

Jeg har et website, hvor brugerne kan tilmelde links. Men jeg ville gerne, at min side selv henter titel, beskrivelse og søgeord ind i min database hvis de findes, så mine brugere ikke behøver at indtaste disse oplysninger.

Hvordan gør man? Jeg bruger ASP.
Avatar billede netro Nybegynder
25. juni 2003 - 17:06 #1
Har du adgang til ASP-HTTP?
Avatar billede tofferman Nybegynder
25. juni 2003 - 17:06 #2
Ja, som jeg skrev bruger jeg asp.
Avatar billede tofferman Nybegynder
25. juni 2003 - 17:08 #3
Sorry. Var ikke lige klar over at du mente en komponent. Ja, jeg har adgang til asp-http.
Avatar billede netro Nybegynder
25. juni 2003 - 17:09 #4
Hehe... ASP-HTTP er en komponent, der skal være til stede på serveren.

Alternativt kan du hente kilden med XMLHTTP således:

Set oServerXMLHTTPRequest = Server.CreateObject("Msxml2.ServerXMLHTTP")
URL = "http://www.eksperten.dk"
oServerXMLHTTPRequest.open "GET", URL, False
oServerXMLHTTPRequest.Send
Response.Write oServerXMLHTTPRequest.ResponseText
Avatar billede netro Nybegynder
25. juni 2003 - 17:10 #5
Fint, så gør du sådan:

Set HttpObj = Server.CreateObject("AspHTTP.Conn")
HTTPObj.Url = "http://www.eksperten.dk"
Response.Write HTTPObj.GetURL
Avatar billede tofferman Nybegynder
25. juni 2003 - 17:15 #6
Er det rigtigt, at jeg får indlæst kilden til siden på denne måde?

Hvis ja, hvordan identificerer jeg så de forskellige meta-tags? Jeg vil f. eks. gerne hente siden description og keywords.
Avatar billede netro Nybegynder
25. juni 2003 - 17:19 #7
Så må du splitte kilden op og hente det relevante. Jeg kan give dig et eksempel lidt senere, hvis du ikke kan finde ud af det.
Avatar billede tofferman Nybegynder
25. juni 2003 - 17:19 #8
Ok, jeg skal lige hjem fra arbejde. Så kigger jeg på det :-)
Avatar billede tofferman Nybegynder
25. juni 2003 - 18:18 #9
Yep, det virker!

Nogle ideer til, hvordan jeg kan udtrække bestemte meta-tags fra det kode jeg får?
Avatar billede tofferman Nybegynder
25. juni 2003 - 18:19 #10
netro > Jeg fisker lidt efter et eksempel :-)
Avatar billede netro Nybegynder
25. juni 2003 - 19:16 #11
<TITLE>Sidens titel</TITLE>
<META NAME="description" CONTENT="Sidens beskrivelse">
<META NAME="keywords" CONTENT="Sidens nøgleord">

**********************************************************

Set HttpObj = Server.CreateObject("AspHTTP.Conn")
HTTPObj.Url = "http://www.eksperten.dk"
Streng = HTTPObj.GetURL

ArrTitle1 = Split(Streng, "<title>")
If UBound(ArrTitle1) > 0 Then
  ArrTitle2 = Split(ArrTitle1(1), "</title>")
  Title = ArrTitle2(0)
End If
ArrDesc1 = Split(Streng, "<meta name=""description"" content=""")
If UBound(ArrDesc1) > 0 Then
  ArrDesc2 = Split(ArrDesc1(1), """>")
  Desc = ArrDesc2(0)
End If
ArrKeys1 = Split(Streng, "<meta name=""keywords"" content=""")
If UBound(ArrKeys1) > 0 Then
  ArrKeys2 = Split(ArrKeys1(1), """>")
  Keys = ArrKeys2(0)
End If

Response.Write Title & "<br>" & Desc & "<br>" & Keys
Avatar billede tofferman Nybegynder
25. juni 2003 - 19:28 #12
Tusind tak! Det virker!!! næsten...

Hvordan får jeg den til at tage højde for, at der er nogle sider der skriver tags med stort, og andre med småt?

Jeg er klar over at jeg kan bruge Lcase, men så bliver selve indholdet i beskrivelsen også med småt hele vejen igennem, og det ønsker jeg ikke.

Kan det løses?
Avatar billede tofferman Nybegynder
25. juni 2003 - 19:40 #13
Fandt selv ud af det. Split-funktionen skal bruge et argument der fortæller om den skal lave en binær sammenligning eller en tekstsammenligning. Det kom til at se sådan ud:

Set HttpObj = Server.CreateObject("AspHTTP.Conn")
HTTPObj.Url = "http://"& request.Querystring("link")
streng=HTTPObj.GetURL
ArrTitle1 = Split(Streng, "<title>",3,1)
If UBound(ArrTitle1) > 0 Then
  ArrTitle2 = Split(ArrTitle1(1), "</title>",3,1)
  Title = ArrTitle2(0)
End If
ArrDesc1 = Split(Streng, "<meta name=""description"" content=""",3,1)
If UBound(ArrDesc1) > 0 Then
  ArrDesc2 = Split(ArrDesc1(1), """>",3,1)
  Desc = ArrDesc2(0)
End If
ArrKeys1 = Split(Streng, "<meta name=""keywords"" content=""",3,1)
If UBound(ArrKeys1) > 0 Then
  ArrKeys2 = Split(ArrKeys1(1), """>",3,1)
  Keys = ArrKeys2(0)
End If
response.Write "<p><b>Titel: </b></p><p>"& server.HTMLencode(Title) &"</p>"
response.Write "<p><b>Beskrivelse: </b></p><p>"& server.HTMLencode(Desc) &"</p>"
response.Write "<p><b>Nøgleord: </b></p><p>"& server.HTMLencode(Keys) &"</p>"
Avatar billede netro Nybegynder
25. juni 2003 - 20:09 #14
Du kan også vælge at gøre det med RegExp via en funktion. Lidt mere elegant og nemmere at udvide, hvis du skal bruge flere metatags:

Function FindMeta(Streng, Start, Slut)
    Set regEx = new RegExp
    regEx.Pattern = "(" & Start & ")[\w\W]+(" & Slut & ")"
    regEx.IgnoreCase = True
    regEx.Global = True
    Set Matches = regEx.Execute(Streng)
    For Each Match In Matches
    FindMeta = FindMeta & "<br>" & Match.Value
    Next
    Set regEx = Nothing
End Function

Response.Write FindMeta(Streng, "<TITLE>", "</TITLE>")
Response.Write FindMeta(Streng, "<META NAME=""description"" CONTENT=""", """>")
Response.Write FindMeta(Streng, "<META NAME=""keywords"" CONTENT=""", """>")
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