Semalt-expert legt uit hoe u een AJAX-website kunt schrapen met Python

Webscraping is een methode waarbij software wordt gebruikt om gegevens van een webpagina te extraheren. Er zijn veel tools die u kunt gebruiken om het web met python te schrapen, waaronder; Sky, Scrapy, Request en Beautiful Soup. De meeste van deze tools worden echter beperkt door het feit dat ze alleen statische HTML ophalen die van de server komt en niet het dynamische deel dat door JavaScript wordt gegenereerd.

Er zijn echter enkele technieken waarmee dit probleem kan worden opgelost:

1. Geautomatiseerde browsers

U kunt gebruik maken van geautomatiseerde browsers zoals Selenium of Splash, dit zijn volledige browsers die headless draaien. Het instellen ervan kan echter behoorlijk complex zijn, en daarom zullen we ons concentreren op de tweede optie hieronder.

2. Onderschep AJAX-oproepen

Dit houdt in dat u probeert de AJAX-oproepen van de pagina te onderscheppen en probeert ze opnieuw af te spelen of te reproduceren.

In dit artikel zullen we ons concentreren op het vangen van AJAX-oproepen en deze opnieuw afspelen door gebruik te maken van de Request Library en de Google Chrome-browser. Hoewel frameworks zoals Scrapy u mogelijk een efficiëntere oplossing bieden als het gaat om schrapen, is dit niet voor alle gevallen vereist. AJAX-aanroepen worden meestal uitgevoerd tegen een API die een JSON-object retourneert dat de Request-bibliotheek gemakkelijk kan verwerken.

Het eerste dat u moet weten, is dat het proberen om een AJAX-oproep opnieuw af te spelen, is alsof u een ongedocumenteerde API gebruikt. Daarom moet je kijken naar alle oproepen die de pagina's doen. Je kunt naar de site gaan, er een tijdje mee spelen en zien hoe sommige informatie wordt weergegeven. Als je klaar bent met spelen, kom dan terug en begin met schrapen.

Voordat we ingaan op de details, moeten we eerst begrijpen hoe de pagina werkt. Als u een winkelpagina per staat bezoekt, selecteer dan een staat en de pagina geeft informatie over de winkel weer. Elke keer dat u een staat selecteert, geeft de website nieuwe winkels weer om de oude te vervangen. Dit wordt bereikt door AJAX te gebruiken en een server aan te roepen die om de informatie vraagt. Het is nu onze bedoeling om die oproep op te vangen en opnieuw af te spelen.

Om dit te doen, hoeft u alleen maar de Chrome-browser DevTools troost te openen en naar de XHR-subsectie te gaan. XHR is een interface die HTTP- en HTTPS-verzoeken uitvoert. Dus de AJAX-verzoeken worden hier getoond. Wanneer u dubbelklikt op het AJAX-gesprek, vindt u veel informatie over de winkels. U kunt ook een voorbeeld van de verzoeken bekijken.

U zult merken dat er veel data naar de server wordt gestuurd. Maak je echter geen zorgen, want niet alles is vereist. Om te zien welke gegevens je nodig hebt, kun je een console openen en verschillende postverzoeken naar de website uitvoeren. Nu je weet hoe de pagina werkt en de AJAX-oproep hebt ontcijferd, kun je je krabber schrijven.

U vraagt zich misschien af 'waarom geen geautomatiseerde browser gebruiken?' De oplossing is simpel; probeer altijd de AJAX-oproepen af te spelen voordat u aan iets veel zwaarder en ingewikkelder begint, zoals een geautomatiseerde browser. Het is eenvoudiger en lichter.

PNG

mass gmail