Semalt-ekspert forklarer, hvordan man skraber et AJAX-websted ved hjælp af Python

Webskrapning er en metode, der bruger brugen af software til at udtrække data fra en webside. Der er masser af værktøjer, du kan bruge til at skrabe internettet med python, hvoraf nogle er; Himmel, skrap, anmodninger og smuk suppe. De fleste af disse værktøjer er imidlertid begrænset af det faktum, at de kun henter statisk HTML, der kommer fra serveren, og ikke den dynamiske del, der er gengivet af JavaScript.

Der er dog nogle teknikker, hvor dette problem kan løses:

1. Automatiske browsere

Du kan bruge automatiserede browsere som Selenium eller Splash, som er fulde browsere, der kører uden hoved. Imidlertid kan opsætning af dem være ret kompliceret, og derfor vil vi fokusere på den anden mulighed nedenfor.

2. Aflyt AJAX-opkald

Dette indebærer at forsøge at aflytte AJAX-opkald fra siden og forsøge at afspille eller gengive dem igen.

I denne artikel fokuserer vi på, hvordan man fanger AJAX-opkald og afspiller dem ved at bruge anmodningsbiblioteket og Google Chrome-browseren. Selvom rammer som Scrapy muligvis giver dig en mere effektiv løsning, når det kommer til skrabning, er det ikke nødvendigt i alle tilfælde. AJAX-opkald udføres for det meste mod et API, der returnerer et JSON-objekt, som Requests-biblioteket let kan håndtere.

Den første ting, du har brug for, er, at det at prøve at afspille et AJAX-opkald er som at bruge et udokumenteret API. Derfor er du nødt til at se på alle de opkald, siderne foretager. Du kan gå til webstedet, lege med det et stykke tid og se, hvordan nogle oplysninger gengives. Når du er færdig med at spille, kom tilbage og begynd at skrabe.

Lad os først forstå, hvordan siden fungerer, før vi går nærmere ind på. Hvis du besøger en butikker side for stat, skal du vælge en vilkårlig tilstand, og siden viser oplysninger om butikken. Hver gang du vælger en stat, gengiver webstedet nye butikker til erstatning for de gamle. Dette opnås ved at bruge og AJAX ringe til en server, der beder om informationen. Vores intention nu er at fange det opkald og gentage det.

For at gøre dette, skal du blot åbne Chrome-browseren DevTools trøstet og gå til XHR-underafsnittet. XHR er en grænseflade, der udfører HTTP- og HTTPS-anmodninger. Således vises AJAX-anmodningerne her. Når du dobbeltklikker på AJAX-opkaldet, finder du en masse information om butikkerne. Du kan også forhåndsvise anmodningerne.

Du bemærker, at der sendes en masse data til serveren. Vær dog ikke bange, da ikke det hele er påkrævet. For at se, hvilke data du har brug for, kan du åbne en konsol og udføre forskellige postanmodninger på webstedet. Nu, hvor du ved, hvordan siden fungerer og har dechifret AJAX-opkaldet, kan du skrive din skraber.

Du spørger måske, 'hvorfor ikke bruge en automatiseret browser?' Løsningen er enkel; prøv altid at afspille AJAX-opkaldene igen, inden du går i gang med noget meget mere tungt og kompliceret, f.eks. en automatiseret browser. Det er enklere og lettere.

png

mass gmail