Avatar billede tofferman Nybegynder
28. juni 2003 - 00:11 Der er 14 kommentarer og
1 løsning

Søgerobot - min løsning

Hejsa!
I er nok ligeglade, men jeg er ret begejstret over at jeg har lavet en søgerobot til mit website. Altså en robot der går ud på nettet, og finder nye sider efterhånden som den kommer frem.

Jeg vil lige sige tak til netro her på Eksperten for hans hjælp med at udrede meta-tags.

Mit script er ret enkelt. Jeg er amatør, så profferne bedes tie stille hvis de ser noget som ikke er helt efter standarden. Hvis profferne alligevel ikke kan holde kæft, så må I gerne komme med lidt råd og vejledning om, hvordan jeg kan forbedre den :-)

Jeg har en tabel der hedder robtemp, og en tabel der hedder robolinks. Robotten starter med at hive et link ind fra robotemp, som den læser igennem. Alle de links den finder, bliver gemt i robotemp, og selve den side som den søger i bliver gemt i robolinks, som jeg kan bruge på mit website.

Det skal lige siges, at jeg har 2 tabeller med links. Den ene er den tabel, som gæster kan tilmelde links til. Den anden er den som robotten lægger links ind i. Hvis der allerede er tilmeldt et link, gemmer robotten ikke linket i den anden tabel.

<!--#include virtual="/db/connect.txt"-->   
<%
Server.ScriptTimeOut = 1000

sql="SELECT * FROM robotemp"
set rs=con.Execute(sql)
adresse=rs("adresse")
Set HttpObj = Server.CreateObject("AspHTTP.Conn")
HTTPObj.Url = "http://"& adresse
streng=replace(HTTPObj.GetURL, " /", "")
ArrTitle1 = Split(Streng, "<title>",3,1)
If UBound(ArrTitle1) > 0 Then
    ArrTitle2 = Split(ArrTitle1(1), "</title>",3,1)
    titel = ArrTitle2(0)
End If
ArrDesc1 = Split(Streng, "<meta name=""description"" content=""",3,1)
If UBound(ArrDesc1) > 0 Then
    ArrDesc2 = Split(ArrDesc1(1), """>",3,1)
    beskrivelse = 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 = server.Htmlencode(replace(ArrKeys2(0), "''", ""))
End If
response.Write"<p>Adresse: "& adresse &"</p>"
response.Write"<p>Titel: "& titel &"</p>"
response.Write"<p>Beskrivelse: "& beskrivelse &"</p>"
response.Write"<p>Søgeord: "& keys &"</p>"
sql="SELECT COUNT(*) AS antal FROM robolinks WHERE linktekst='"& adresse &"'"
response.Write "<p>"& sql &"</p>"
set rs3=con.Execute(sql)
sql="SELECT COUNT(*) AS antal FROM links WHERE linktekst='"& adresse &"'"
response.Write "<p>"& sql &"</p>"
set rs4=con.Execute(sql)
if titel<>"" or beskrivelse<>"" or keys<>"" then
    if rs3("antal")=0 and rs4("antal")=0 then
        sql2="INSERT into robolinks (linktekst, linknavn, beskrivelse, tid, soegeord) VALUES('"& server.htmlencode(replace(adresse, "'", "")) &"', '"& server.htmlencode(replace(titel, "'", "")) &"', '"& server.htmlencode(replace(beskrivelse, "'", "")) &"', NOW(), '"& server.htmlencode(replace(keys, "'", "")) &"')"
        response.Write "<p>"& sql2 &"</p>"
        set rs2=con.Execute(sql2)
    end if
end if
url="start"
Streng=server.htmlencode(Streng)
i=0
do until url=""
    ArrUrl1 = Split(Streng, "http://",2,1) ' deler hele strengen ved det første link
    If UBound(ArrUrl1) > 0 Then ' Hvis strengen er i 2 eller flere dele, så...
        ArrUrl2 = Split(ArrUrl1(1), "&quot;",2,1) 'Andel del af strengen deles op ved første anførselstegn
        url = replace(ArrUrl2(0), "')", "") 'Første del af den nye streng er urlen
        url=replace(url,";return false;", "")
        url=replace(url,"(';", "")
        url=replace(url,"\", "")
          url=replace(url,"&quot;&lt;", "")
          url=replace(url,"&gt;&quot;", "")
        url=replace(url,"'", "&apos;")
        Streng = ArrUrl1(1)
        ignorer=0           
        if len(url)>100 then ignorer=1
        if titel="" then ignorer=1
        if InStr(1, url, "advertising.com",1)>0 then ignorer="JA"
        if InStr(1, url, "chart.dk",1)>0 then ignorer="JA"
        if InStr(1, url, "danban.dk",1)>0 then ignorer="JA"
        if InStr(1, url, "danban.com",1)>0 then ignorer="JA"
        if InStr(1, url, "hotstart.dk",1)>0 then ignorer="JA"
        if ignorer<>"JA" then         
            sql="INSERT INTO t_robotemp (adresse) VALUES('"& url &"')"
            response.Write "<p>"& sql &"</p>"
              set rs2=con.Execute(sql)
        end if
    else
        url=""
    End If
loop
rs.movenext
adresse2=rs("adresse")
sql="DELETE FROM robotemp WHERE adresse='"& adresse & "'"
response.Write "<p>"& sql &"</p>"
set rs4=con.Execute(sql)
response.redirect("http://toflo.dk/lnkrobo/robo.asp)%>
Avatar billede eds Nybegynder
28. juni 2003 - 00:31 #1
Undskyld men ville du have noget i mod hvis jeg brugte denne robot ;-)
Avatar billede tofferman Nybegynder
28. juni 2003 - 00:34 #2
Det som man lægger ud på eksperten er jo alles eje, så det kan jeg ikke have noget imod. Men du må da gerne linke til www.toflo.dk ;-)
Avatar billede eds Nybegynder
28. juni 2003 - 00:37 #3
Okay mange tak jeg linker til din side :-)
Avatar billede eds Nybegynder
28. juni 2003 - 00:41 #4
Må jeg se din robo.asp
Avatar billede tofferman Nybegynder
28. juni 2003 - 00:47 #5
Den kode du ser er den som ligger i robo.asp, så siden linker til sig selv.
Avatar billede tofferman Nybegynder
28. juni 2003 - 00:48 #6
Må jeg få din webadresse?
Avatar billede eds Nybegynder
28. juni 2003 - 00:56 #7
Ok min side er http://www.gamespaces.cjb.net den er godt nok ikke helt færdig
Avatar billede tofferman Nybegynder
28. juni 2003 - 01:53 #8
Du skal nok lige overveje det med Gator endnu engang...
Avatar billede ferieguide Nybegynder
28. juni 2003 - 10:25 #9
er det så kun koden oven over og database der skal bruges? kunne man få en kopi af databasen?
Avatar billede netro Nybegynder
28. juni 2003 - 16:10 #10
Jeg har også givet dig en løsning med RegExp i det andet spm.

Husk at rydde op efter dig, når siden er afviklet og inden redirect.

Set rs = Nothing
Set rs2 = Nothing
Set rs3 = Nothing
Set rs4 = Nothing
con.Close
Set con = Nothing
Set HttpObj = Nothing
Response.Redirect "index.asp"

Du kan også tjekke om links'ne eksisterer ved brug af ASPhttp:
http://www.html.dk/scripts/asp/00009/
Avatar billede tofferman Nybegynder
29. juni 2003 - 13:20 #11
Tak for det netro :-) Jeg er igang med at indarbejde det.

Mht. en kopi af databasen må jeg sige nej. I ovenstående kode har jeg udskiftet mine tabelnavne af sikkerhedshensyn.

For at bruge robotten er det kun ovenstående kode og en database du skal bruge.

Jeg har lavet 8 kopier af robotten, som starter forskellige steder i tabellen robotemp, da min robotemp er ved at være oppe på en halv million links.
Avatar billede tofferman Nybegynder
09. juli 2003 - 21:56 #12
netro > Vil du have lidt point?
Avatar billede netro Nybegynder
09. juli 2003 - 23:01 #13
Du havde jo ikke udlovet nogle, men hvis du kunne bruge, hvad jeg skrev, må du da godt give mig en lille sjat :)
Avatar billede tofferman Nybegynder
09. juli 2003 - 23:01 #14
Nå ja for faen. Du får en 50´er :-)
Avatar billede netro Nybegynder
09. juli 2003 - 23:03 #15
Det var godt nok hurtig respons. Er du sindssyg... Mange tak for det :-)
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