Als u vaak merkt dat u gegevens van websites haalt, moet u waarschijnlijk overwegen om het proces te automatiseren. Soms aangeduid als "webscraping", is het proces gebruikelijk voor sites die geen formele API of feed bieden. Natuurlijk kom je nergens als de site die je probeert op te halen niet beschikbaar is.

Als u uw eigen site beheert, heeft u waarschijnlijk al eerder met downtime te maken gehad. Het kan frustrerend zijn, waardoor u bezoekers verliest en de activiteit waar uw site verantwoordelijk voor is, onderbreekt. In dergelijke omstandigheden loont het om eenvoudig de beschikbaarheid van uw website te kunnen controleren.

Python is een geweldige taal voor scripting, en de beknopte maar leesbare syntaxis maakt het implementeren van een sitechecker een eenvoudige taak.

Uw gepersonaliseerde website-checker maken

De website checker is op maat gemaakt om meerdere websites tegelijk te kunnen bedienen. Hiermee kunt u eenvoudig sites die u niet meer interesseren uitschakelen, of sites die u in de toekomst lanceert, gaan controleren. De checker is een ideale "skeleton-app" waarop u verder zou kunnen bouwen, maar het demonstreert een basisbenadering voor het ophalen van webgegevens.

Bibliotheken importeren in Python

Om het project te starten, moet u de verzoeken bibliotheek in Python met de importeren functie.

importeren verzoeken

De bibliotheek Verzoeken is handig voor communicatie met websites. U kunt het gebruiken om HTTP-verzoeken te verzenden en responsgegevens te ontvangen.

Bewaar de website-URL's in een lijst

Nadat u de bibliotheek hebt geïmporteerd, moet u de website-URL's definiëren en opslaan in een lijst. Met deze stap kunt u meerdere URL's behouden, die u kunt controleren met de website-checker.

importeren verzoeken

website_url = [
" https://www.google.co.in",
" https://www.yahoo.com",
" https://www.amazon.co.in",
" https://www.pipsnacks.com/404",
" http://the-internet.herokuapp.com/status_codes/301",
" http://the-internet.herokuapp.com/status_codes/500"
]

de variabele Website URL slaat de lijst met URL's op. Definieer in de lijst elke URL die u wilt controleren als een afzonderlijke tekenreeks. U kunt de voorbeeld-URL's in de code gebruiken om te testen of u kunt ze vervangen om meteen uw eigen sites te controleren.

Sla vervolgens de berichten op voor common HTTP-antwoordcodes. U kunt deze in een woordenboek bewaren en elk bericht indexeren op de bijbehorende statuscode. Uw programma kan deze berichten dan gebruiken in plaats van statuscodes voor een betere leesbaarheid.

statussen = {
200: "Website beschikbaar",
301: "Permanente omleiding",
302: "Tijdelijke omleiding",
404: "Niet gevonden",
500: "Interne Server Fout",
503: "Service onbeschikbaar"
}

Een lus maken om de websitestatus te controleren

Om elke URL achtereenvolgens te controleren, moet u het volgende doen: door de lijst bladeren van websites. Controleer binnen de lus de status van elke site door een verzoek te verzenden via de verzoekenbibliotheek.

voor url in Website URL:
proberen:
web_response = verzoeken.get (url)
print (url, statussen[web_response.status_code])

behalve:
print (url, statussen[web_response.status_code])

Waar:

  • voor url...herhaalt de lijst met URL's.
  • url is de variabele waaraan de for-lus elke URL toewijst.
  • probeer/behalvebehandelt eventuele uitzonderingen dat kan ontstaan.
  • web_response is een variabele die een eigenschap voorziet van de statuscode van het antwoord

Het volledige codefragment

Als u liever de hele code in één keer wilt bekijken, vindt u hier een volledige codelijst ter referentie.

importeren verzoeken

website_url = [
" https://www.google.co.in",
" https://www.yahoo.com",
" https://www.amazon.co.in",
" https://www.pipsnacks.com/404",
" http://the-internet.herokuapp.com/status_codes/301",
" http://the-internet.herokuapp.com/status_codes/500"
]

statussen = {
200: "Website beschikbaar",
301: "Permanente omleiding",
302: "Tijdelijke omleiding",
404: "Niet gevonden",
500: "Interne Server Fout",
503: "Service onbeschikbaar"
}

voor url in Website URL:
proberen:
web_response = verzoeken.get (url)
print (url, statussen[web_response.status_code])

behalve:
print (url, statussen[web_response.status_code])

En hier is een voorbeelduitvoering van de code:

Python's coderingsmogelijkheden bij webscraping

De bibliotheken van derden van Python zijn ideaal voor taken zoals webscraping en het ophalen van gegevens via HTTP.

U kunt geautomatiseerde verzoeken naar websites sturen om verschillende soorten taken uit te voeren. Dit kan het lezen van nieuwskoppen, het downloaden van afbeeldingen en het automatisch verzenden van e-mails zijn.