Nettskraping ved hjelp av Python

Nettskraping ved hjelp av Python
Nettskraping er en automatisert måte å trekke ut og behandle informasjon fra internettnettsteder med et veldig stort beløp. Data på internettnettstedene er ikke strukturert, som kan samles og struktureres gjennom skraping av nettet. Søkemotorer som Google, Bing, Yahoo har roboter som skraper data fra internettnettsteder og indekserer dem på søkesidene sine. Data kan også hentes ut ved hjelp av API -er, som sannsynligvis er en av de beste måtene å hente ut data fra nettet. Kjente nettsteder som Facebook, Google, Amazon gir brukere godt strukturerte API -er for å samhandle med data, men du vil ikke se disse APIene overalt.

For eksempel, hvis du vil få regelmessige oppdateringer om favorittproduktene dine for rabatttilbud, eller du vil automatisere prosessen med å laste ned episoder av din favoritt sesong en etter en, og nettstedet har ikke noe API for det, det eneste valget du sitter igjen med er nettskraping.Nettskraping kan være ulovlig på noen nettsteder, avhengig av om et nettsted tillater det eller ikke. Nettsteder bruker “Roboter.txt ”-filen for eksplisitt å definere nettadresser som ikke har lov til å bli skrotet. Du kan sjekke om nettstedet tillater det eller ikke ved å legge til "roboter.txt ”med nettstedets domenenavn. For eksempel https: // www.Google.com/roboter.tekst

I denne artikkelen bruker vi Python til skraping fordi det er veldig enkelt å konfigurere og bruke. Den har mange innebygde og tredjepartsbiblioteker som kan brukes til å skrape og organisere data. Vi bruker to Python -biblioteker “urllib” for å hente nettsiden og “Beautifules” for å analysere websiden for å bruke programmeringsoperasjoner.

Hvordan skraping av nettet fungerer?

Vi sender en forespørsel til websiden, hvor du vil skrape dataene. Nettstedet vil svare på forespørselen med HTML -innhold på siden. Deretter kan vi analysere denne nettsiden til Beautifules for videre behandling. For å hente websiden, bruker vi “Urllib” -biblioteket i Python.

Urllib vil laste ned innholdet i websiden i HTML. Vi kan ikke bruke strengoperasjoner på denne HTML -websiden for innholdsutvinning og videre behandling. Vi bruker et Python -bibliotek “BeautifulSoup” som vil analysere innholdet og trekke ut de interessante dataene.

Skraping av artikler fra Linuxhint.com

Nå som vi har en ide om hvordan nettskraping fungerer, la oss gjøre litt øvelse. Vi prøver å skrape artikkeltitler og lenker fra Linuxhint.com. Så åpen https: // linuxhint.com/ i nettleseren din.

Trykk nå CRTL+U for å se HTML -kildekoden på websiden.

Kopier kildekoden, og gå til https: // htmlformatter.com/ for å forhytte koden. Etter å ha prestert koden, er det enkelt å inspisere koden og finne interessant informasjon.

Nå, kopier igjen den formaterte koden og lim den inn i din favoritt tekstredigerer som atom, sublim tekst osv. Nå skal vi skrape den interessante informasjonen ved hjelp av Python. Skriv inn følgende

// installere vakkert suppebibliotek, urllib kommer
forhåndsinstallert i Python
ubuntu@ubuntu: ~ $ sudo pip3 installer bs4
ubuntu@ubuntu: ~ $ python3
Python 3.7.3 (standard, 7. oktober 2019, 12:56:13)
[GCC 8.3.0] på Linux

Skriv inn "hjelp", "copyright", "studiepoeng" eller "lisens" for mer informasjon.

// Importer urllib
>>> Importer urllib.be om
// Importer BeautifeSoup
>>> Fra BS4 importerer BeautifulSoup
// Angi nettadressen du vil hente
>>> my_url = 'https: // linuxhint.com/'
// Be om URL -websiden ved å bruke Urlopen -kommandoen
>>> klient = urllib.be om.Urlopen (my_url)
// Lagre HTML -websiden i "HTML_PAGE" variabel
>>> html_page = klient.lese()
// Lukk URL -tilkoblingen etter å ha hentet websiden
>>> klient.Lukk()
// analyser HTML -nettsiden til Beautifules for skraping
>>> Page_soup = BeautifulSoup (HTML_PAGE, "HTML.parser ")

La oss nå se på HTML -kildekoden vi nettopp kopierte og limte inn for å finne ting av vår interesse.

Du kan se at den første artikkelen som er oppført på Linuxhint.com heter “74 Bash Operators Eksempler”, finn dette i kildekoden. Det er vedlagt mellom topptagger, og koden er



klasse = "Kategori-1561"> Bash-programmering


tittel = "74 Bash Operators Eksempler"> 74 Bash -operatører
Eksempler


Den samme koden gjentas om og om igjen med endring av bare artikkeltitler og lenker. Neste artikkel har følgende HTML -kode



klasse = "kategori-1343"> ubuntu
lakk


tittel = "Hvordan sette opp lakkbuffer på Ubuntu 18.04 ">
Hvordan sette opp lakkbuffer på Ubuntu 18.04


Du kan se at alle artikler inkludert disse to er vedlagt i samme "

”Merk og bruk den samme klassen“ Entry-Title ”. Vi kan bruke "FindAll" -funksjon i vakkert suppebibliotek for å finne og liste opp alle "

”Å ha klasse“ inngangstittel ”. Skriv inn følgende i Python -konsollen din

// denne kommandoen vil finne alle “

”Tagelementer som har kalt klasse
“Inngangstitel”. Utgangen blir lagret i en matrise.
>>> artikler = side_soup.FindAll ("H2" ,
"Class": "entry-title")
// Antall artikler som er funnet på forsiden av Linuxhint.com
>>> Len (artikler)
102
// først hentet ut "

”Tagelement som inneholder artikkelnavn og lenke
>>> artikler [0]


title = "74 Bash Operators Eksempler">
74 BASH Operatører eksempler


// sekundet ekstrahert "

”Tagelement som inneholder artikkelnavn og lenke
>>> artikler [1]


tittel = "Hvordan sette opp lakkbuffer på Ubuntu 18.04 ">
Hvordan sette opp lakkbuffer på Ubuntu 18.04


// Vis bare tekst i HTML -tagger ved hjelp av tekstfunksjon
>>> artikler [1].tekst
'Hvordan sette opp lakkbuffer på Ubuntu 18.04 '

Nå som vi har en liste over alle 102 html “

”Tagelementer som inneholder artikkelkobling og artikkeltittel. Vi kan trekke ut begge artiklene lenker og titler. For å hente ut lenker fra "" -merker, kan vi bruke følgende kode

// Følgende kode vil trekke ut lenken fra først

tagelement
>>> for lenke i artikler [0].find_all ('a', href = true):
... skriv ut (lenke ['href'])
..
https: // linuxhint.com/bash_operator_examples/

Nå kan vi skrive en for loop som itererer gjennom hver "

”Tagelement i“ Artikler ”-liste og trekke ut artikkelen og tittelen.

>>> for I in Range (0,10):
... skriv ut (artikler [i].tekst)
... for lenke i artikler [i].find_all ('a', href = true):
... skriv ut (lenke ['href']+"\ n")
..
74 BASH Operatører eksempler
https: // linuxhint.com/bash_operator_examples/
Hvordan sette opp lakkbuffer på Ubuntu 18.04
https: // linuxhint.com/lakk_cache_ubuntu_1804/
Pinetime: En Linux -vennlig smartur
https: // linuxhint.com/pinetime_linux_smartwatch/
10 beste billige Linux -bærbare datamaskiner å kjøpe på et budsjett
https: // linuxhint.com/best_cheap_linux_laptops/
HD Remastered Games for Linux som aldri hadde en Linux -utgivelse ..
https: // linuxhint.com/hd_remastered_games_linux/
60 fps skjermopptakende apper for linux
https: // linuxhint.com/60_fps_screen_recording_apps_linux/
74 BASH Operatører eksempler
https: // linuxhint.com/bash_operator_examples/
... Snip ..

Tilsvarende lagrer du disse resultatene i en JSON- eller CSV -fil.

Konklusjon

Dine daglige oppgaver er ikke bare filadministrasjon eller utførelse av systemkommandoer. Du kan også automatisere nettrelaterte oppgaver som filnedlasting Automasjon eller datautvinning ved å skrape nettet i Python. Denne artikkelen var begrenset til bare enkel datautvinning, men du kan gjøre enorm oppgaveautomatisering ved å bruke "urllib" og "BeautifulSoup".