Web schrapen

Webscraping met Python

Webscraping met Python
Webscraping is een geautomatiseerde manier om in zeer grote hoeveelheden informatie van internetwebsites te extraheren en te verwerken. Gegevens op internetwebsites zijn niet gestructureerd, wat kan worden verzameld en gestructureerd via webscraping. Zoekmachines zoals Google, Bing en Yahoo hebben bots die gegevens van internetwebsites schrapen en indexeren op hun zoekpagina's. Gegevens kunnen ook worden geëxtraheerd met behulp van API's, wat waarschijnlijk een van de beste manieren is om gegevens van internet te extraheren. Beroemde websites zoals Facebook, Google, Amazon bieden gebruikers goed gestructureerde API's om met gegevens te communiceren, maar u zult deze API's niet overal zien.

Als u bijvoorbeeld regelmatig updates over uw favoriete producten wilt ontvangen voor kortingsaanbiedingen of als u het proces van het één voor één downloaden van afleveringen van uw favoriete seizoen wilt automatiseren, en de website heeft er geen API voor, dan is de enige keuze je blijft zitten met webschrapen.Webscraping kan op sommige websites illegaal zijn, afhankelijk van of een website dit toestaat of niet. Websites gebruiken 'robots'.txt"-bestand om expliciet URL's te definiëren die niet mogen worden geschrapt. U kunt controleren of de website dit toestaat of niet door "robots" toe te voegen.txt" met de domeinnaam van de website. Bijvoorbeeld https://www.google.com/robots.tekst

In dit artikel gebruiken we Python om te scrapen, omdat het heel eenvoudig is in te stellen en te gebruiken. Het heeft veel ingebouwde bibliotheken en bibliotheken van derden die kunnen worden gebruikt voor het schrapen en organiseren van gegevens. We gebruiken twee Python-bibliotheken "urllib" om de webpagina op te halen en "BeautifulSoup" om de webpagina te ontleden om programmeerbewerkingen toe te passen.

Hoe webscraping werkt?

We sturen een verzoek naar de webpagina, van waaruit u de gegevens wilt schrapen. Website zal op het verzoek reageren met HTML-inhoud van de pagina. Vervolgens kunnen we deze webpagina ontleden naar BeautifulSoup voor verdere verwerking. Om de webpagina op te halen, gebruiken we de "urllib" -bibliotheek in Python.

Urllib downloadt de inhoud van de webpagina in HTML. We kunnen geen tekenreeksbewerkingen toepassen op deze HTML-webpagina voor inhoudsextractie en verdere verwerking. We gebruiken een Python-bibliotheek "BeautifulSoup" die de inhoud zal ontleden en de interessante gegevens zal extraheren.

Artikelen schrapen uit Linuxhint.com

Nu we een idee hebben van hoe webschrapen werkt, laten we wat oefenen. We zullen proberen titels en links van artikelen uit Linuxhint te schrapen.com. Dus open https://linuxhint.com/ in uw browser.

Druk nu op CRTL+U om de HTML-broncode van de webpagina te bekijken.

Kopieer de broncode en ga naar https://htmlformatter.com/ om de code mooier te maken. Na het verfraaien van de code, is het gemakkelijk om de code te inspecteren en interessante informatie te vinden.

Kopieer nu opnieuw de opgemaakte code en plak deze in je favoriete teksteditor zoals atoom, sublieme tekst enz. Nu zullen we de interessante informatie schrapen met Python. Typ het volgende:

// Installeer prachtige soepbibliotheek, urllib komt
vooraf geïnstalleerd in Python
ubuntu@ubuntu:~$ sudo pip3 installeer bs4
ubuntu@ubuntu:~$ python3
Python 3.7.3 (standaard, 7 oktober 2019, 12:56:13)
[GCC 8.3.0] op linux

Typ "help", "copyright", "credits" of "licentie" voor meer informatie.

//Import urllib
>>> urllib importeren.verzoek
//Mooie Soep importeren
>>> van bs4 import BeautifulSoup
//Voer de URL in die u wilt ophalen
>>> mijn_url = 'https://linuxhint.com/'
//Vraag de URL-webpagina aan met de opdracht urlopen
>>> cliënt = urllib.verzoek.urlopen(mijn_url)
// Bewaar de HTML-webpagina in de variabele "html_page"
>>> html_page = klant.lezen()
//Sluit de URL-verbinding na het ophalen van de webpagina
>>> klant.dichtbij()
// ontleden de HTML-webpagina naar BeautifulSoup om te schrapen
>>> page_soup = BeautifulSoup(html_page, "html .).parser")

Laten we nu eens kijken naar de HTML-broncode die we zojuist hebben gekopieerd en geplakt om dingen te vinden die ons interesseren.

Je kunt zien dat het eerste artikel op Linuxhint.com heet "74 Bash Operators Voorbeelden", vind dit in de broncode. Het is ingesloten tussen header-tags en de code is



class="category-1561">BASH-programmering


title="74 Bash-operators Voorbeelden">74 Bash-operators
Voorbeelden


Dezelfde code wordt keer op keer herhaald met de verandering van alleen artikeltitels en links. Het volgende artikel heeft de volgende HTML-code:



class="category-1343">Ubuntu
Vernis


title="Hoe Varnish-cache in te stellen op Ubuntu 18.04">
Varnish-cache instellen op Ubuntu 18.04


U kunt zien dat alle artikelen, inclusief deze twee, in dezelfde "

” tag en gebruik dezelfde klasse “entry-title”. We kunnen de functie "findAll" in de Beautiful Soup-bibliotheek gebruiken om alle "

” met klasse “entry-titel”. Typ het volgende in uw Python-console:

// Deze opdracht vindt alle “

” tag-elementen met de naam klasse
"invoertitel". De uitvoer wordt opgeslagen in een array.
>>> artikelen = pagina_soep.findAll("h2" ,
"class" : "entry-titel")
// Het aantal artikelen gevonden op de voorpagina van Linuxhint.com
>>> len (artikelen)
102
// Eerst geëxtraheerd "

” tag-element met artikelnaam en link
>>> artikelen[0]


title="74 voorbeelden van bash-operators">
74 voorbeelden van bash-operators


// Tweede geëxtraheerd "

” tag-element met artikelnaam en link
>>> artikelen[1]


title="Hoe Varnish-cache in te stellen op Ubuntu 18.04">
Varnish-cache instellen op Ubuntu 18.04


// Alleen tekst weergeven in HTML-tags met de tekstfunctie
>>> artikelen[1].tekst
'Hoe Varnish-cache in te stellen op Ubuntu 18'.04'

Nu we een lijst hebben van alle 102 HTML "

” tag-elementen die artikellink en artikeltitel bevatten. We kunnen zowel links naar artikelen als titels extraheren. Om links te extraheren van “”-tags, we kunnen de volgende code gebruiken:

// De volgende code haalt de link eerst uit

tag-element
>>> voor link in artikelen[0].find_all('a', href=True):
…    print(link['href'])

https://linuxhint.com/bash_operator_examples/

Nu kunnen we een for-lus schrijven die door elke "

” tag-element in de lijst “artikelen” en extraheer de artikellink en titel.

>>> voor i binnen bereik (0,10):
…    print(artikelen[i].tekst)
…    voor link in artikelen[i].find_all('a', href=True):
…              print(link['href']+"\n")

74 voorbeelden van bash-operators
https://linuxhint.com/bash_operator_examples/
Varnish-cache instellen op Ubuntu 18.04
https://linuxhint.com/varnish_cache_ubuntu_1804/
PineTime: een Linux-vriendelijke smartwatch
https://linuxhint.com/pinetime_linux_smartwatch/
10 beste goedkope Linux-laptops om met een beperkt budget te kopen
https://linuxhint.com/best_cheap_linux_laptops/
HD Remastered Games voor Linux die nooit een Linux-release hebben gehad ..
https://linuxhint.com/hd_remastered_games_linux/
60 FPS Schermopname Apps voor Linux
https://linuxhint.com/60_fps_screen_recording_apps_linux/
74 voorbeelden van bash-operators
https://linuxhint.com/bash_operator_examples/
... knip ..

Op dezelfde manier slaat u deze resultaten op in een JSON- of CSV-bestand.

Conclusie

Uw dagelijkse taken zijn niet alleen bestandsbeheer of het uitvoeren van systeemopdrachten. U kunt ook webgerelateerde taken automatiseren, zoals automatisering van het downloaden van bestanden of gegevensextractie door het web te scrapen in Python. Dit artikel was beperkt tot alleen eenvoudige gegevensextractie, maar u kunt enorme taakautomatisering uitvoeren met "urllib" en "BeautifulSoup".

Vulkan voor Linux-gebruikers
Met elke nieuwe generatie grafische kaarten zien we game-ontwikkelaars de grenzen van grafische betrouwbaarheid verleggen en een stap dichter bij foto...
OpenTTD versus Simutrans
Je eigen transportsimulatie maken kan leuk, ontspannend en buitengewoon aanlokkelijk zijn. Daarom moet je ervoor zorgen dat je zoveel mogelijk spellen...
OpenTTD-zelfstudie
OpenTTD is een van de meest populaire simulatiegames voor bedrijven die er zijn. In dit spel moet je een geweldig transportbedrijf creëren. U begint e...