Semalt Expert förklarar hur man skraper en AJAX-webbplats med Python

Webskrapning är en metod som använder programvara för att extrahera data från en webbsida. Det finns massor av verktyg att använda för att skrapa webben med python, några av dem är; Himmel, skrapad, förfrågningar och vacker soppa. De flesta av dessa verktyg är dock begränsade av det faktum att de bara hämtar statisk HTML som kommer från servern och inte den dynamiska delen som gjorts av JavaScript.

Det finns emellertid vissa tekniker där problemet kan lösas:

1. Automatiserade webbläsare

Du kan använda automatiserade webbläsare som Selenium eller Splash som är fulla webbläsare som kör huvudlösa. Det kan dock vara ganska komplicerat att installera dem, och därför kommer vi att fokusera på det andra alternativet nedan.

2. Avlyssna AJAX-samtal

Det handlar om att försöka fånga AJAX-samtal från sidan och försöka spela upp eller återge dem.

I den här artikeln kommer vi att fokusera på hur du fångar AJAX-samtal och spelar upp dem igen genom att använda Requests Library och Google Chrome browser. Även om ramverk som Scrapy kan ge dig en mer effektiv lösning när det gäller skrotning krävs det inte i alla fall. AJAX-samtal utförs mestadels mot ett API som returnerar ett JSON-objekt som Requests-biblioteket enkelt kan hantera.

Det första du behöver veta är att försöka spela upp ett AJAX-samtal är som att använda ett odokumenterat API. Därför måste du titta på alla samtal som sidorna gör. Du kan gå till sajten, spela med den ett tag och se hur lite information ges. När du är klar med att spela, kom tillbaka och börja skrapa.

Innan vi går in på detaljerna, låt oss först förstå hur sidan fungerar. Om du besöker en butiks sida efter tillstånd väljer du valfritt tillstånd och sidan ger information om butiken. Varje gång du väljer ett tillstånd gör webbplatsen nya butiker för att ersätta de gamla. Detta uppnås genom att använda och AJAX ringa till en server som ber om informationen. Vår avsikt är nu att fånga det samtalet och spela upp det igen.

För att göra det, allt du behöver göra är att öppna Chrome-webbläsaren DevTools tröst och gå till XHR-underavsnittet. XHR är ett gränssnitt som utför HTTP- och HTTPS-förfrågningar. Således kommer AJAX-förfrågningarna att visas här. När du dubbelklickar på AJAX-samtalet hittar du mycket information om butikerna. Du kan också förhandsgranska förfrågningarna.

Du kommer att notera att mycket data skickas till servern. Men oroa dig inte eftersom det inte krävs allt. För att se vilken information du behöver kan du öppna en konsol och utföra olika inläggsförfrågningar på webbplatsen. Nu när du vet hur sidan fungerar och har dechiffrat AJAX-samtalet kan du skriva din skrapa.

Du kanske frågar "varför inte använda en automatiserad webbläsare?" Lösningen är enkel; försök alltid att spela upp AJAX-samtal igen innan du börjar på något mycket tyngre och mer komplicerat, till exempel en automatiserad webbläsare. Det är enklare och lättare.

png

mass gmail