Resultat 1 till 25 av 25

Måste jag bygga en egen spindel?

  1. #1
    Nikke Lindqvists avatar
    Nikke Lindqvist Nikke Lindqvist är inte uppkopplad SEO-proffs
    Moderator för alla forumsektioner
    Reg.datum
    feb 2006
    Ort
    Kungsholmen, Stockholm, Sverige
    Inlägg
    643
    Jag har ägnat några dagar åt att bygga en helt egen webbspindel, och fått fram någonting som nästan uppfyller mina behov, men som nu borde flyttas till ett pearl-script istället. PHP räcker inte till riktigt. Nu är det så att mina pearl-kunskaper lämnar rätt mycket att önska.

    Det min spindel ska göra är egentligen att den ska spindla en hel sajt och i en databas lagra alla sidors title, header description, rubriker, löptext och alt-texter.

    Vidare ska varje enskild länk från alla sidor på sajten lagras med uppgift om vart länken gick, vilken text som var länkad och om länken är intern eller extern).

    Med hjälp av resultatet av detta kan jag skapa mig en bild av hur sajtstrukturen ser ut i Googles ögon. Vilka sidor har flest länkar? Vilka oliika nyckelord är länkade till en sida? Vilka sidor ligger isolerade längst bak i en lång kedja av sidor och vilka sidor är de egentliga länkhubbarna.

    Jag har letat igenom hela floran av verktyg utan att hitta någonting som ens påminner om detta. Har någon annan? Om inte, har vi någon här på forumet som är pearl-guru?

  2. #2
    Jim Westergrens avatar
    Jim Westergren Jim Westergren är inte uppkopplad SEO-proffs: utökad profil
    Administratör
    Reg.datum
    feb 2006
    Ort
    Täby
    Inlägg
    2 728
    Jag kan inte pearl men jag vet att Hjalmar på WN kan (minns inte hans WN nick). Han skrev ett skript till mig i somras.

    Jag är intresserad av verktyget i fråga och om jag gillar det kan jag köpa en kopia av dig kanske.
    Bor nu i Marbella, Spanien
    Kolla in mitt SEO verktyg Domainstats

  3. #3
    Victors avatar
    Victor Victor är inte uppkopplad SEO-proffs
    Reg.datum
    mar 2006
    Ort
    Birkastan, Stockholm
    Inlägg
    25
    Det finns en uppsjö av spindlar, åtminstone utan öppen källkod, tillgängliga. Jag känner dock spontant inte till någon med samtliga egenskaper som du nämner. Att koda en på egen hand låter som ett bra alternativ, och det behöver inte vara särskilt invecklat - av din kravspecifikation att döma. Perl är ett utmärkt alternativ för projekt som dessa, och även om jag har viss erfarenhet själv, så skulle jag rekommendera att du kontaktade Nord istället.

    Utöver att han är bättre än mig på Perl, så är han dessutom egenföretagare med ett något mer flexibelt schema än mig (om det nu är brådskande). Han har dessutom kodat dylika spindlar vid tidigare tillfällen.

  4. #4
    Nikke Lindqvists avatar
    Nikke Lindqvist Nikke Lindqvist är inte uppkopplad SEO-proffs
    Moderator för alla forumsektioner
    Reg.datum
    feb 2006
    Ort
    Kungsholmen, Stockholm, Sverige
    Inlägg
    643
    Tack för tipsen Jim och Victor!

    Jag ska kontakta Nord och försöka lokalisera Hjalmar. Nästa steg blir ju att plocka fram datat och presentera en bild av hur den verkliga interna länkstrukturen fungerar, vilka sidor som fungerar som länkhubbar inom sajten och vilka sökord som sajten verkligen fungerar för.

    Men det blir nästa utmaning. Först ska datat samlas in.

  5. #5
    Rasmuss avatar
    Rasmus Rasmus är inte uppkopplad Kan SEO rätt bra
    Reg.datum
    feb 2006
    Ort
    Soliga Skåne
    Inlägg
    78
    Varför räcker det inte med PHP för detta?

  6. #6
    Nikke Lindqvists avatar
    Nikke Lindqvist Nikke Lindqvist är inte uppkopplad SEO-proffs
    Moderator för alla forumsektioner
    Reg.datum
    feb 2006
    Ort
    Kungsholmen, Stockholm, Sverige
    Inlägg
    643
    PHP har klara begränsningar. I det här fallet vill jag kunna spindla sajter med uppåt 30000 sidor, och jag vill varken sänka sajten, eller min egen server. För att vara vänlig tänkte jag plocka högst en sida per sekund, och det skulle innebära att scriptet med 35000 sidor skulle ta 35000 sekunder eller cirka 9 timmar att köra.

    PHP är inte avsett för så långa körtider (default värdet för maximal körtid i PHP är 300 sekunder), och jag vill inte tänka på hur MySQL skulle reagera med en så lång anslutning heller.

  7. #7
    Raketforsknings avatar
    Raketforskning Raketforskning är inte uppkopplad Kan SEO rätt bra
    Reg.datum
    feb 2006
    Ort
    Göteborg
    Inlägg
    10
    Det går ju att köra CLI-versionen av PHP, utan begränsning på exekveringstid; om man nu är mer bekväm med PHP än Perl.

  8. #8
    Rasmuss avatar
    Rasmus Rasmus är inte uppkopplad Kan SEO rätt bra
    Reg.datum
    feb 2006
    Ort
    Soliga Skåne
    Inlägg
    78
    set_time_limit(0);

    MySQL har inga problem med det heller. Jag har kört script som tagar 12 dagar som max, php+mysql, inga problem.

    Använt någon av alla färdiga wait-funktioner som finns på internet för att plocka en sida / sekund.

  9. #9
    Joacims avatar
    Joacim Joacim är inte uppkopplad SEO-proffs
    Reg.datum
    feb 2006
    Inlägg
    74
    Om du bestämmer dig för att bygga en spindel i Perl, vilket egentligen är väldigt simpelt, skulle jag rekomendera boken "Perl & LWP", se http://www.adlibris.se/product.aspx?isbn=0596001789&s=1

    Boken handlar om datamining och diverse smaskiga saker i Perl, i sista kapitlet tar dom även upp hur man bygger en egen spindel.

    Lycka till Nikke!

  10. #10
    latehorns avatar
    latehorn latehorn är inte uppkopplad Kan SEO rätt bra
    Reg.datum
    mar 2006
    Inlägg
    255
    Citat Ursprungligen postat av Nikke Lindqvist
    Det min spindel ska göra är egentligen att den ska spindla en hel sajt och i en databas lagra alla sidors title, header description, rubriker, löptext och alt-texter.
    hehe.. ska du göra en scrapersida och ha copyright skyddat material som innehåll?

  11. #11
    twasters avatar
    twaster twaster är inte uppkopplad Lär mig SEO
    Reg.datum
    jul 2006
    Ort
    Helsingborg
    Inlägg
    5
    Kanske lite sent, men Hjalmar kallar sig för Grazzy på Wn.

  12. #12
    hans99s avatar
    hans99 hans99 är inte uppkopplad Kan SEO rätt bra
    Reg.datum
    apr 2006
    Ort
    Uppsala
    Inlägg
    2 588
    Active Pearl vilket är den Pearl som de flesta använder har en inbyggd modul med en spindel. Det är med andra ord inte särskilt mycket kodning som behöver göras i Perl.

    För en enkel spindel som håller koll på din egen sida, sidor som länkar till dig och sidor som du länkar till bör inte vara mer än en dags jobb i Pearl.

    PHP bör däremot vara helt olämpligt för att koda en spindel i. Om inte annat därför att PHP är ett presentationsspråk och därför är omständigt att realisera verksamhetslogik i.

    Citat Ursprungligen postat av Nikke Lindqvist
    Jag har ägnat några dagar åt att bygga en helt egen webbspindel, och fått fram någonting som nästan uppfyller mina behov, men som nu borde flyttas till ett pearl-script istället. PHP räcker inte till riktigt. Nu är det så att mina pearl-kunskaper lämnar rätt mycket att önska.

    Det min spindel ska göra är egentligen att den ska spindla en hel sajt och i en databas lagra alla sidors title, header description, rubriker, löptext och alt-texter.

    Vidare ska varje enskild länk från alla sidor på sajten lagras med uppgift om vart länken gick, vilken text som var länkad och om länken är intern eller extern).

    Med hjälp av resultatet av detta kan jag skapa mig en bild av hur sajtstrukturen ser ut i Googles ögon. Vilka sidor har flest länkar? Vilka oliika nyckelord är länkade till en sida? Vilka sidor ligger isolerade längst bak i en lång kedja av sidor och vilka sidor är de egentliga länkhubbarna.

    Jag har letat igenom hela floran av verktyg utan att hitta någonting som ens påminner om detta. Har någon annan? Om inte, har vi någon här på forumet som är pearl-guru?

  13. #13
    Martin Lindhes avatar
    Martin Lindhe Martin Lindhe är inte uppkopplad SEO-proffs
    Reg.datum
    okt 2006
    Ort
    Stockholm
    Inlägg
    16
    Nikke:

    Jag har programmerat en spindel med motsvarande funktionalitet som du beskriver i första posten i PHP.
    Jag använder set_time_limit() mellan varje request och scriptet kan teoretiskt spindla en hur stor sajt som helst. Jag skulle avråda dig från att skriva om motsvarande i perl, om du redan har en fungerande PHP-kod att arbeta med.

    För att inte överbelasta en annan webbserver så kan du pausa exekveringen i en sekund med sleep(1)

  14. #14
    Nikke Lindqvists avatar
    Nikke Lindqvist Nikke Lindqvist är inte uppkopplad SEO-proffs
    Moderator för alla forumsektioner
    Reg.datum
    feb 2006
    Ort
    Kungsholmen, Stockholm, Sverige
    Inlägg
    643
    Tack för tipsen.

    Grejen var nog mest den att jag varken ville överbelasta php med alltför jättelika arrayer eller MySQL med alltför många upprepade anrop. Släppte lös min egen skapelse på en sajt med bara 500 sidor och det gick genast åt pipsvängen.

    Ren kod? Nä knappast. Bör nog se över skriptet några gånger till innan jag försöker igen.

  15. #15
    hans99s avatar
    hans99 hans99 är inte uppkopplad Kan SEO rätt bra
    Reg.datum
    apr 2006
    Ort
    Uppsala
    Inlägg
    2 588
    Att skriva en spindel i php känns högst tvivelaktigt. För en liten spindel som ska hålla koll på en sajt går naturligtvis nästan vilket språk som helst bra. Där gör det det samma och du väljer det språk som du använder för husbehovsprogrammering.

    I seriösa sammanhang är Perl troligen det enklaste valet. Fördelen som Perl har är att både TCP hanteringen och de regulärauttrycken genererar väloptimerad C-kod om du väljer att exportera ut den på så sätt, vilket du naturligtvis väljer att göra. Viss korrigering av optimering är dock lämpligt, men knappast nödvändigt om du inte behöver spindla mer än ett 100-sajter.

    Du kan även få till en hyggligt effektiv sessions- och trådhantering via Perl, men förslagsvis skriver man denna direkt i C. Fördelen är bl.a. att du har kontroll över minneshanteringen. De regulärauttrycken kommer allokera och deallokera minne i ruskig takt samtidigt som du har sidor cashade på lång rad. Du vinner tydligt även på en snabb dator på att optimera minneshanteringen direkt.

    Sessionshanteringen i C ger dig förövrigt den bästa prestandan som du kan för spindling av sajter som kör SSL, genom en *nära* integration mot OpenSSL, vilket jag skulle vilja se presentationsspråket php visa upp ens acceptabel prestanda med.

    Själva konceptet att göra en spindel ovanpå webbserverns applikationslager är minst sagt udda. Snarare vill du att spindeln ligger mycket nära operativsystemet för att få möjlighet att direkt kunna använda snabba funktioner.

  16. #16
    Martin Lindhes avatar
    Martin Lindhe Martin Lindhe är inte uppkopplad SEO-proffs
    Reg.datum
    okt 2006
    Ort
    Stockholm
    Inlägg
    16
    Citat Ursprungligen postat av hans99
    Själva konceptet att göra en spindel ovanpå webbserverns applikationslager är minst sagt udda. Snarare vill du att spindeln ligger mycket nära operativsystemet för att få möjlighet att direkt kunna använda snabba funktioner.
    PHP-skript går likaväl att köra kommandprompten, du måste inte köra allt via en webbserver.

    Angående prestanda har du säkerligen rätt.

    Men allt är relativt, och om syftet är att spindla en sajt regelbundet så duger PHP gott (spindeln jag har byggt klättrar regelbundet igenom en sajt, kontrollerar page ranks per undersida, huruvida varje sida är indexerad i google, ett antal "seo observationer" typ keywords-tagg saknas, plus en bunt andra saker och sammanfattar det hela i ett mail).
    Detta sker t.ex veckovis, eller måndasvis, och det gör inget om det skulle ta en timme eller två för scriptet att köra färdigt, vilket dock inte är fallet, den mesta av tiden väntar PHP på data från servern som den spindlar.

    Men om syftet är att uppdatera något index extremt ofta, eller typ indexera halva internet (du gör en egen sökmotor) så vill man säkert ha något snabbare :-)

  17. #17
    hans99s avatar
    hans99 hans99 är inte uppkopplad Kan SEO rätt bra
    Reg.datum
    apr 2006
    Ort
    Uppsala
    Inlägg
    2 588
    Håller helt med. Spindlar man den egna sajten tar man det man kodar snabbast i själv.

  18. #18
    Hjalmars avatar
    Hjalmar Hjalmar är inte uppkopplad Kan SEO rätt bra
    Reg.datum
    apr 2006
    Ort
    Jonsered, Göteborg
    Inlägg
    559
    Vill man bygga stort är det viktigaste att det går att parallelisera trädet man använder för att traversera länkarna. Alltså att man kan dela ut uppgifter till olika datorer i ett kluster. Om man som Martin föreslår använder sleep(1) och varje request tar i genomsnitt 5 sekunder att ladda hem och parsa så kan man indexera 14400 urls om dagen med en maskin. Internet är > 8 miljarder urls, alltså behöver man över en halv miljon (555 555) maskiner för att dagligen gå igenom varje url. Om man kan klippa tiden det tar att parsa med en sekund och samtidigt plockar bort delayen genom att istället ladda sidor från olika servrar om vartannat så tar varje request i genomsnitt 4 sekunder, då talar vi om 370370 servrar som behövs.

    Sen då så tillkommer ju det enkla faktum att varje url inte behöver uppdateras dagligen då man kan använda någon trevlig decay-funktion och bara kolla de som nyligen uppdaterades och låta decay-värdet öka för varje gång en sida inte har förändrats.. då kommer man väl så småningom ned mot de 150-200k maskiner som man tror att google har
    Tidningar.nu - Beställ tidningar

  19. #19
    Nikke Lindqvists avatar
    Nikke Lindqvist Nikke Lindqvist är inte uppkopplad SEO-proffs
    Moderator för alla forumsektioner
    Reg.datum
    feb 2006
    Ort
    Kungsholmen, Stockholm, Sverige
    Inlägg
    643
    Hjalmar. Det är klart att du har rätt. Men jag var ute efter en liten analysspindel, som skulle analysera den interna logiska länkstrukturen på en sajt åt gången. Till det räcker en maskin fint.

  20. #20
    Martin Lindhes avatar
    Martin Lindhe Martin Lindhe är inte uppkopplad SEO-proffs
    Reg.datum
    okt 2006
    Ort
    Stockholm
    Inlägg
    16
    Hjalmar, absolut.
    Men spindeln som jag beskrev hade som syfte att spindla en sajt. Eller åt minstonde en sajt i taget. Då skulle en parallelt exekverande spindel riskera att helt sänka servern. Därav sleep() etc.

  21. #21
    hans99s avatar
    hans99 hans99 är inte uppkopplad Kan SEO rätt bra
    Reg.datum
    apr 2006
    Ort
    Uppsala
    Inlägg
    2 588
    Appropå parallellkörning skulle jag själv luta åt begagnade TV-spel med LAN-kort. Kostar ingenting men har bra beräkningskraft och tillräckligt RAM.

    Då får man ju förövrigt fördel av att ha programmerat spindeln i trevliga och portbara C :-D

  22. #22
    Nikke Lindqvists avatar
    Nikke Lindqvist Nikke Lindqvist är inte uppkopplad SEO-proffs
    Moderator för alla forumsektioner
    Reg.datum
    feb 2006
    Ort
    Kungsholmen, Stockholm, Sverige
    Inlägg
    643
    Citat Ursprungligen postat av hans99
    Appropå parallellkörning skulle jag själv luta åt begagnade TV-spel med LAN-kort. Kostar ingenting men har bra beräkningskraft och tillräckligt RAM.

    Då får man ju förövrigt fördel av att ha programmerat spindeln i trevliga och portbara C :-D
    Och där tappade du mig helt i den här diskussionen. Vore det inte bättre med en ombyggd intelligent dammsugare? De är ju vana vid att suga i sig saker.

    Nä. KISS är det som gäller för mig i den här frågan. Så enkelt som möjligt.

  23. #23
    hans99s avatar
    hans99 hans99 är inte uppkopplad Kan SEO rätt bra
    Reg.datum
    apr 2006
    Ort
    Uppsala
    Inlägg
    2 588
    Ha ha

    För ditt ändamål nej naturligtvis inte, men TV-spelen kan nog kanske passar Hjamlar och mig.

    Poängen med dem är att de är billiga och distribuerar vi har det tämligen liten betydelse vilken hårdvara vi kör i varje entitet så länge den räcker till för att hämta, parsa sidan och göra diverse analys och propagera resultaten. TV-spelen har bra prestanda för detta. Och att kompilera ner koden för dem är inte krångligare (eller jo det är det för jag behöver troligen en Macintosh men strunt i det) än för en vanlig dator.

    Skär du ner kostnaden till 1/10 vinner man mycket. Sedan är jag ärligt talat lite osäker på hur man rent tekniskt skulle kyla så många TV-spel. De är ju inte direkt anpassade för att stå i rac.
    Senast redigerat av hans99 den 2006-10-10 klockan 13:23.

  24. #24
    Hjalmars avatar
    Hjalmar Hjalmar är inte uppkopplad Kan SEO rätt bra
    Reg.datum
    apr 2006
    Ort
    Jonsered, Göteborg
    Inlägg
    559
    Martin/Nikke Jag roade mig mest med att bolla med tanken. Ni har såklart båda helt rätt i era antaganden för mindre system.

    Hans99, kanske, jag har kört linux på xbox.. den har förvånandsvärt lite processorkapacitet (har tex testat köra seti - http://hem.mjoelkbar.net/xboxseti.txt). Det gäller att ha kod som kan utnyttja alla datorns resurser, även då tex grafikkortet i en xbox. Dessutom måste man tänka på utrymme / kylning och elförbrukning.

    Googles lösning var väl iaf till en början att köra med helt strippade moderkort och hela tiden jobba mot mest price/performance på cpuerna och ha vettigt med ram och disk i varje burk. Om man dessutom kan plocka bort nät-aggregatet från sina maskiner är man nere på: hylla för datorerna, moderkort med internt lan/grafikkort, minne, cpu samt kylning för lokalen. Samt då centralt styrd el (gör om den till rätt strömstyrka centralt istället för i varje enskilt aggregat).
    Senast redigerat av Hjalmar den 2006-10-10 klockan 13:29.
    Tidningar.nu - Beställ tidningar

  25. #25
    hans99s avatar
    hans99 hans99 är inte uppkopplad Kan SEO rätt bra
    Reg.datum
    apr 2006
    Ort
    Uppsala
    Inlägg
    2 588
    Ja du har nog rätt och att försöka optimera analyskoden för grafikkorten är nog långt ifrån trivialt.
    Dessbättre ökar prestandan i de begagnade TV-spelen hela tiden men de är alltid dödsbilliga gamla
    Grejen är ju också att det är häftigt att använda TV-spel.

    Idé: Man propagerar bilder till TV-spelen för analysinför bildsökningar.
    (inte för att jag har något bildanalysprogram eller ens vet hur man gör dem men som ide)

Ämnesinformation

Användare som tittar på det här ämnet

Det är för närvarande 1 användare som tittar på det här ämnet. (0 medlemmar och 1 gäster)