Jeffrey Cross
Jeffrey Cross

Crawling AJAX

Traditionellt är ett webbspindelsystem uppdraget att ansluta till en server, dra ner HTML-dokumentet, skanna dokumentet för ankarlänkar till andra HTTP-URL-adresser och upprepa samma process på alla de upptäckta webbadresserna. Varje webbadress representerar ett annat tillstånd på den traditionella webbplatsen. I en AJAX-applikation finns inte mycket av sidinnehållet i HTML-dokumentet, men infogas dynamiskt av Javascript under sidladdning. Ankarlänkar kan dessutom utlösa javascript-händelser istället för att peka på andra dokument. Programmets tillstånd definieras av serien Javascript-händelser som utlöstes efter sidladdning. Resultatet är att den traditionella spindeln bara kan se en liten del av webbplatsens innehåll och inte kan indexera någon av programmets statliga uppgifter.

Så hur går vi med att lösa problemet?

Krypa AJAX som en människa Skulle genomsöka AJAX behöver spindeln förstå mer om en sida än bara dess HTML. Det måste kunna förstå strukturen i dokumentet såväl som Javascript som manipulerar det. För att kunna undersöka det djupare tillståndet för en ansökan måste genomsökningen också kunna identifiera och genomföra händelser i dokumentet för att simulera de vägar som kan tas av en riktig användare.

Shreeraj Shahs papper, Crawling Ajax-driven Web 2.0-applikationer, gör ett bra jobb för att beskriva "händelsesdriven" inställning till webbkryptering. Det handlar om att skapa en smartare klass av webbkrypteringsprogram som kan hämta, exekvera och analysera dynamiskt, Javascript-driven DOM-innehåll, precis som en människa skulle använda en fullfjädrad webbläsare.

"Protocol-driven" -metoden fungerar inte när sökroboten kommer över en Ajax-inbäddad sida. Detta beror på att alla målresurser ingår i JavaScript-koden och är inbäddade i DOM-kontexten. Det är viktigt att både förstå och utlösa den här DOM-baserade aktiviteten. I processen har detta lett till ett annat tillvägagångssätt som kallas "händelsestyrt" krypning. Den har följande tre huvudkomponenter

  1. Javascript analys och tolkning med länk till Ajax
  2. DOM händelsehantering och sändning
  3. Dynamisk DOM-innehållsutvinning

Nödvändiga verktyg Det enklaste sättet att implementera en AJAX-aktiverad, händelsesdriven sökrobot är att använda en modern webbläsare som underliggande plattform. Det finns ett par verktyg tillgängliga, nämligen Watir och Crowbar, som låter dig styra Firefox eller IE från kod, så att du kan extrahera siddata efter det har behandlat några Javascript.

Watir är ett bibliotek som möjliggör webbläsarautomatisering med Ruby. Den var ursprungligen byggd för IE, men den har också blivit portad till både Firefox och Safari. Med Watir API kan du starta en webbläsarprocess och sedan direkt extrahera och klicka på ankarlänkar från din Ruby-applikation. Denna ansökan ensam gör att jag vill bli mer bekant med Ruby.

Crowbar är ett annat intressant verktyg som använder en huvudlös version av Firefox för att göra och analysera webbinnehåll. Vad är coolt är att det ger ett webbservergränssnitt till webbläsaren, så du kan utfärda enkla GET- eller POST-förfrågningar från vilket språk som helst och skrapa sedan resultaten efter behov. Detta låter dig interagera med webbläsaren från även enkla kommandoradsskript, med curl eller wget.

Vilket verktyg du använder beror på behoven hos din sökrobot. Crowbar har fördelen av att vara agnostisk språk och enkel att integrera i en traditionell crawler design för att extrahera sidinformation som bara skulle vara närvarande efter en sida har slutfört laddning. Watir, å andra sidan, ger dig en djupare, interaktiv åtkomst till webbläsaren, så att du kan utlösa följande Javascript-händelser. Nackdelen är att logiken bakom en sökrobot som kan gräva djupt i applikationstillståndet är ganska komplicerat, och med Watir är du knuten till Ruby som kanske inte är din kopp te.

Crowbar - server-side headless Firefox Watir - webbläsare fjärrkontroll i Ruby Crawling Ajax-driven Web 2.0 applikationer (PDF)

Del

Lämna En Kommentar