Crawling AJAX - 💡 Fix My Ideas

Crawling AJAX

Crawling AJAX


Forfatter: Ethan Holmes, 2019

Traditionelt har et webspidersystem opgave at oprette forbindelse til en server, trække ned HTML-dokumentet, scanne dokumentet til ankerlinks til andre HTTP-URL'er og gentage den samme proces på alle de opdagede webadresser. Hver webadresse repræsenterer en anden tilstand på det traditionelle websted. I en AJAX-applikation er meget af sidens indhold ikke indeholdt i HTML-dokumentet, men er dynamisk indsat af Javascript under sideindlæsning. Desuden kan ankerforbindelser udløse javascript-begivenheder i stedet for at pege på andre dokumenter. Tilstanden for applikationen er defineret af serien af ​​Javascript-hændelser, der blev udløst efter sideindlæsning. Resultatet er, at den traditionelle edderkop kun kan se en lille del af webstedets indhold og ikke kan indeksere nogen af ​​programmets statsoplysninger.

Så hvordan går vi med at løse problemet?

Gennemse AJAX som et menneske Ville gennemgå AJAX, skal spiderne forstå mere om en side end blot dens HTML. Det skal være i stand til at forstå strukturen i dokumentet såvel som Javascript, der manipulerer det. For at kunne undersøge den dybere tilstand af en applikation skal gennemsøgningsprocessen også kunne genkende og udføre begivenheder i dokumentet for at simulere de stier, der kan blive taget af en reel bruger.

Shreeraj Shahs papir, Crawling Ajax-drevne Web 2.0-applikationer, gør et godt stykke arbejde med at beskrive den "begivenhedsdrevne" tilgang til webcrawling. Det drejer sig om at skabe en smartere klasse af webcrawling software, som er i stand til at hente, udføre og analysere dynamisk, Javascript-drevet DOM indhold, ligesom et menneske ville operere en komplet web browser.

Den "protokolldrevne" tilgang virker ikke, når crawleren kommer på tværs af en Ajax-integreret side. Dette skyldes, at alle målressourcer er en del af JavaScript-kode og er indlejret i DOM-konteksten. Det er vigtigt at både forstå og udløse denne DOM-baserede aktivitet. I processen har dette ført til en anden tilgang kaldet "event-driven" crawling. Den har følgende tre hovedkomponenter

  1. Javascript analyse og fortolkning med link til Ajax
  2. DOM hændelseshåndtering og afsendelse
  3. Dynamisk DOM-indholdsudvinding

Nødvendige værktøjer Den nemmeste måde at implementere en AJAX-aktiveret, begivenhedsdrevet crawler på er at bruge en moderne browser som den underliggende platform. Der er et par værktøjer til rådighed, nemlig Watir og Crowbar, der giver dig mulighed for at styre Firefox eller IE fra kode, så du kan hente sidedata efter det har behandlet nogen Javascript.

Watir er et bibliotek, der muliggør browserautomatisering ved hjælp af Ruby. Det blev oprindeligt bygget til IE, men det er også blevet sendt til både Firefox og Safari. Watir-API'en giver dig mulighed for at starte en browserproces og derefter direkte udpakke og klikke på ankerlinks fra din Ruby-applikation. Denne ansøgning alene gør mig lyst til at blive mere bekendt med Ruby.

Crowbar er et andet interessant værktøj, der bruger en hovedløs version af Firefox til at gengive og analysere webindhold. Hvad er cool er, at det giver en webserver interface til browseren, så du kan udstede enkle GET- eller POST-anmodninger fra ethvert sprog og derefter skrabe resultaterne efter behov. Dette giver dig mulighed for at interagere med browseren fra lige enkle kommandolinjeskrifter, ved hjælp af curl eller wget.

Hvilket værktøj du bruger afhænger af dine crawlers behov. Crowbar har den fordel at være sprog agnostiker og er nem at integrere i et traditionelt crawler design for at udtrække sideoplysninger, der kun ville være til stede, efter at en side har gennemført indlæsning. Watir, derimod, giver dig en dybere, interaktiv adgang til browseren, så du kan udløse efterfølgende Javascript-begivenheder. Ulempen er, at logikken bag en crawler, der kan grave dybt ind i applikationstilstanden, er ret mere kompliceret, og med Watir er du bundet til Ruby, som måske eller måske ikke er din kop te.

Crowbar - server-side headless Firefox Watir - browser fjernbetjening i Ruby Crawling Ajax-drevne Web 2.0 Applications (PDF)



Du Kan Være Interesseret

Lav en børstet aluminium iPad stand

Lav en børstet aluminium iPad stand


Udskrivbar lilla smykkeskrin med video

Udskrivbar lilla smykkeskrin med video


Spis, drik og være skræmmende: 3 Store Halloween-behandler

Spis, drik og være skræmmende: 3 Store Halloween-behandler


Lav det sidste Build Series: Opbygning af dataloggeren

Lav det sidste Build Series: Opbygning af dataloggeren