donker proxyscrape logo

Een JavaScript-website scrapen met Python

Hoe doe je dat?, Python, Schrapen, 02-02-20225 min gelezen

The web browsers use Javascript to create a dynamic and interactive experience for the user. Majority of the applications and functions making the Internet indispensable to modern life are encoded in the form of Javascript. Considering the early incarnations of Javascript, the web pages were static, and offered a little user interaction beyond clicking links

Inhoudsopgave

De webbrowsers gebruiken Javascript om een dynamische en interactieve ervaring voor de gebruiker te creëren. De meeste toepassingen en functies die het internet onmisbaar maken voor het moderne leven zijn gecodeerd in de vorm van Javascript. Gezien de vroege incarnaties van Javascript waren de webpagina's statisch en boden ze weinig gebruikersinteractie buiten het klikken op links en het laden van nieuwe pagina's. 

Hieronder volgen enkele van de dynamische websiteverbeteringen die worden uitgevoerd door Javascript.

  • Invoervalidatie van webformulieren
  • Animatie van pagina-elementen zoals formaat wijzigen, verplaatsen en vervagen
  • Nieuwe gegevens laden zonder de pagina opnieuw te laden
  • Audio en video afspelen
  • Problemen met browsercompatibiliteit oplossen

Je kunt scraping gebruiken om op een geautomatiseerde manier gestructureerde gegevens van websites te verzamelen. Web scraping staat ook bekend als web data extractie. Enkele van de belangrijkste toepassingen van web scraping zijn:

  • Nieuws volgen
  • Prijs intelligentie
  • Leads genereren
  • Prijsbewaking
  • Marktonderzoek

Laten we eerst begrijpen waarom het nodig is om websites te scrapen.

Waarom moet je een Javascript website scrapen?

Bedrijven gebruiken web scraping om gebruik te maken van de enorme hoeveelheid publiek beschikbare gegevens om slimmere beslissingen te nemen. Hieronder staan enkele gebieden waar web scraping wordt gebruikt.

  • e-commerce
  • Sociale media
  • Bank 
  • Financiën
  • Marketing 
  • Onroerend goed
  • Financiën
  • Zoekmachine optimalisatie
  • Verkoopleads

Dit zijn de redenen waarom bedrijven websites moeten scrapen.

Automatisering - Het is niet mogelijk om elk stukje informatie van een website te kopiëren en te plakken. De bedrijven gebruiken scraping software om de meeste van de bijbehorende processen te automatiseren.

Gegevensbeheer - Je kunt geen databases en spreadsheets gebruiken om cijfers en cijfers te beheren op een website die in HTML is geconfigureerd. Daarom gebruiken bedrijven web scraping tools om hun gegevens te beheren.

Vastgoed advertenties - De makelaars gebruiken web scraping voor het vullen van hun database met beschikbare eigendommen te huur of te koop. 

Vergelijkingsgegevens van shoppingsites - De bedrijven gebruiken web scraping om prijs- en productgegevens van elke verkoper te schrapen, zodat ze hun gebruikers de gewenste vergelijkingsgegevens kunnen bieden. 

Industriestatistieken en inzichten - Bedrijven gebruiken scraping om enorme databases op te bouwen en daaruit industriespecifieke inzichten te halen. Een bedrijf kan bijvoorbeeld tonnen gegevens over olieprijzen scrapen en analyseren. Het kan deze inzichten vervolgens verkopen aan oliemaatschappijen over de hele wereld.

Een Javascript-website scrapen met Python

Laten we eens kijken hoe je Selenium kunt gebruiken om Javascript websites te scrapen.

Selenium-bibliotheek installeren

Je kunt Selenium installeren met het volgende commando.

pip installeert selenium

Webstuurprogramma installeren

Weet je dat Selenium een echte browser simuleert? Het gebruikt niet je chrome installatie, maar een driver om een browser te laten draaien. De Selenium webdrivers verwijzen naar zowel de taalbindingen als de implementaties van de individuele browserbesturingscode. Je moet het webstuurprogramma downloaden en kunt het toevoegen aan de omgevingsvariabele path. We zullen de Firefox web driver gebruiken en je kunt deze installeren door deze link te volgen.

Voorbeeld

Laten we een eenvoudig selenium voorbeeld bekijken waarbij we een website titel verzamelen. Hiervoor zullen we eerst webdriver van selenium importeren in een python bestand zoals hieronder getoond:

van selenium importeer webdriver

We moeten het pad opgeven waar de webdriver zich bevindt. Daarna moeten we het Firefox webstuurprogramma initialiseren.

WEBDRIVER_PAD = './'
stuurprogramma = webdriver.Firefox(WEBDRIVER_PATH)

Nu definiëren we de URL om de titel van de website te krijgen.

URL = 'https://www.google.com'
stuurprogramma.get(URL)
afdrukken (driver.title)

Het uitvoeren van de bovenstaande code opent een firefox-venster dat de titel van de website in de console afdrukt. We hebben in dit geval de URL van Google als voorbeeld gedefinieerd, dus het resultaat ziet er als volgt uit:

Dit is de google-pagina van het firefox-webstuurprogramma. De titel die op de console wordt afgedrukt is als volgt:

We moeten het geopende firefox-venster handmatig sluiten. We voegen driver.quit() toe aan het einde van onze code zodat het venster automatisch wordt gesloten nadat de taak is voltooid. 

van selenium importeer webdriver 

WEBDRIVER_PATH = './'
stuurprogramma = webdriver.Firefox(WEBDRIVER_PATH) 

URL = 'https://www.google.com'
driver.get(URL)
afdruk (driver.title)
stuurprogramma.afsluiten()

Als je gegevens van een dynamische website wilt verzamelen, kun je dezelfde stappen volgen als hierboven genoemd. Als je bijvoorbeeld de titel van Youtube wilt ophalen, kun je de onderstaande code gebruiken.

van selenium importeer webdriver 
 
WEBDRIVER_PATH = './' 
stuurprogramma = webdriver.Firefox(WEBDRIVER_PATH) 
URL = 'https://www.youtube.com'
driver.get(URL)
afdruk (driver.title)
driver.quit()

Laten we hier iets nieuws proberen. We kunnen het zoekvak bewerken en het vullen met het woord "Selenium" door de klasse "Keys" te gebruiken zoals hieronder getoond.

uit selenium.webdriver.common.keys importeert Sleutels

Na het initialiseren van het firefox webstuurprogramma en het ophalen van de Youtube-titel, maken we een object dat het zoekvak met xpath bevat.

search_box = driver.find_element_by_xpath('//input[@id="search"]')

Vervolgens bewerken we de inhoud van het zoekvak en vullen het met het woord "Selenium".

zoek_vak.verzend_sleutels('Selenium')

Zodra we het zoekvak vullen met de gewenste inhoud, kunnen we op "Enter" drukken om de zoekopdracht actief te maken.

zoekvak.verzend_keys(Sleutels.ENTER)

Je kunt in de onderstaande afbeelding zien dat het zoekvak van Youtube het woord "Selenium" bevat.

Een Proxy

De proxies zijn nodig wanneer je gelokaliseerde webinhoud nodig hebt. Ze zijn ook nodig als je in korte tijd te veel aanvragen naar een website stuurt. Je hebt proxies voor Selenium nodig wanneer geautomatiseerd testen vereist is. Om echter een Selenium proxy te gebruiken voor het scrapen van een Javascript website, moet je een Selenium draad gebruiken die de bindingen van Selenium uitbreidt en toegang geeft tot de onderliggende verzoeken die door de browser worden gedaan.

Om Selenium te gebruiken met een proxy, moet je het volgende pakket installeren.

van selenium wire importeer webdriver

Na de installatie van de Python selenium-wire bibliotheek moet je het volgende vermelden:

  • proxy_gebruikersnaam
  • proxy_wachtwoord
  • proxy_url
  • proxy_poort

Hier hebben we een willekeurig poortnummer 8080 als voorbeeld genoemd. Je kunt de gebruikersnaam, het wachtwoord en de URL van de gewenste website naar eigen keuze instellen.

proxy_username = "USER_NAME"
proxy_password = "PASSWORD"
proxy_url = "Any Website URL"
proxy_port = 8080

options = {
    "proxy": {
        "http": f"http://{proxy_username}:{proxy_password}@{proxy_url}:{proxy_port}",
        "verify_ssl": False,
    },
}

Voor het Selenium webstuurprogramma, residentiële proxies de beste keuze. Dat komt omdat ze niet gemakkelijk gedetecteerd worden in tegenstelling tot datacenter proxies. Ze routeren verzoeken van clients via residentiële IP's en verdienen meer vertrouwen dan datacenter IP's. Ze zijn ook nuttig bij het openen van complexe websites die Javascript gebruiken zoals Youtube, Google, Instagram enz.

Waarom Proxies gebruiken voor het scrapen van een JS-website?

Je moet proxies gebruiken voor het schrapen van een website om de volgende redenen:

  • Proxies worden gebruikt voor het verbeteren van de beveiliging en het balanceren van het internetverkeer van een website.
  • De web scrapers moeten proxies gebruiken om hun identiteit te verbergen en hun verkeer eruit te laten zien als normaal gebruikersverkeer.
  • De proxies worden ook gebruikt om de persoonlijke gegevens van webgebruikers te beschermen.
  • Proxies helpen om toegang te krijgen tot websites die door het censuurmechanisme van het land worden geblokkeerd.
  • Je kunt websites op een betrouwbare manier crawlen met proxies . 
  • Proxies zijn waardevol wanneer je productgegevens van online retailers moet scrapen. Ze stellen je namelijk in staat om je verzoek in te dienen vanuit een bepaalde geografische regio, waarna je toegang krijgt tot de specifieke inhoud die de website voor die locatie weergeeft.
  • Proxies helpen je om een groot aantal aanvragen te doen naar de doelwebsite zonder gebanned te worden.
  • Je kunt proxies gebruiken om onbeperkt gelijktijdige verbindingen te maken met dezelfde of verschillende websites.

Conclusie

Web scraping is belangrijk omdat je het kunt gebruiken voor:

  • Product-/dienstenadvertenties scrapen en inzicht krijgen in hun budgetten
  • De modetrend voorspellen om concurrerend te blijven
  • Sociale mediakanalen scrapen en potentiële klanten ontdekken, enz.

Verder hebben we besproken hoe je Selenium kunt gebruiken om websites met Javascript te scrapen in Python. Je kunt de inhoud van zowel statische websites als dynamische websites zoals Youtube scrapen. Je moet ook Selenium proxies gebruiken voor geautomatiseerd testen. De beste proxies die je kunt gebruiken zijn de residentiële proxies omdat ze supersnel zijn en niet gemakkelijk gedetecteerd kunnen worden, in tegenstelling tot andere proxies.

Hopelijk begrijp je nu hoe je een Javascript website kunt scrapen met Python.