Webbskrapning

Webbskrapning med Python

Webbskrapning med Python
Webbskrapning är ett automatiserat sätt att extrahera och bearbeta information från internetwebbplatser i mycket stor mängd. Uppgifterna på internetwebbplatserna är inte strukturerade, vilket kan samlas in och struktureras genom webbskrapning. Sökmotorer som Google, Bing, Yahoo har bots som skrapar data från webbplatser och indexerar dem på sina söksidor. Data kan också extraheras med API: er, vilket förmodligen är ett av de bästa sätten att extrahera data från webben. Kända webbplatser som Facebook, Google, Amazon ger användarna välstrukturerade API: er för att interagera med data, men du kommer inte se dessa API överallt.

Till exempel, om du vill få regelbundna uppdateringar om dina favoritprodukter för rabatterade erbjudanden eller om du vill automatisera processen att ladda ner avsnitt av din favoritsäsong en efter en, och webbplatsen inte har något API för det är det enda valet du sitter kvar med är webbskrapning.Webbskrapning kan vara olagligt på vissa webbplatser, beroende på om en webbplats tillåter det eller inte. Webbplatser använder ”robotar.txt ”-fil för att uttryckligen definiera webbadresser som inte får skrotas. Du kan kontrollera om webbplatsen tillåter det eller inte genom att lägga till ”robotar.txt ”med webbplatsens domännamn. Till exempel https: // www.Google.com / robotar.Text

I den här artikeln använder vi Python för skrapning eftersom det är mycket enkelt att installera och använda. Den har många inbyggda bibliotek och tredjepartsbibliotek som kan användas för att skrapa och organisera data. Vi använder två Python-bibliotek "urllib" för att hämta webbsidan och "BeautifulSoup" för att analysera webbsidan för att tillämpa programmeringsåtgärder.

Hur webbskrapning fungerar?

Vi skickar en begäran till webbsidan, varifrån du vill skrapa data. Webbplatsen kommer att svara på begäran med HTML-innehåll på sidan. Sedan kan vi analysera den här webbsidan till BeautifulSoup för vidare bearbetning. För att hämta webbsidan använder vi biblioteket "urllib" i Python.

Urllib hämtar webbsidans innehåll i HTML. Vi kan inte tillämpa strängåtgärder på denna HTML-webbsida för innehållsutvinning och vidare bearbetning. Vi använder ett Python-bibliotek "BeautifulSoup" som analyserar innehållet och extraherar intressanta data.

Skrapa artiklar från Linuxhint.com

Nu när vi har en uppfattning om hur webbskrapning fungerar, låt oss göra lite övning. Vi försöker skrapa artikeltitlar och länkar från Linuxhint.com. Så öppna https: // linuxhint.com / i din webbläsare.

Tryck nu på CRTL + U för att visa webbsidans HTML-källkod.

Kopiera källkoden och gå till https: // htmlformatter.com / för att prettifiera koden. Efter att ha prettifierat koden är det enkelt att inspektera koden och hitta intressant information.

Kopiera nu den formaterade koden igen och klistra in den i din favorittextredigerare som atom, sublim text etc. Nu ska vi skrapa den intressanta informationen med Python. Skriv följande

// Installera vackert soppbibliotek, urllib kommer
förinstallerat i Python
ubuntu @ ubuntu: ~ $ sudo pip3 installera bs4
ubuntu @ ubuntu: ~ $ python3
Python 3.7.3 (standard, 7 okt 2019, 12:56:13)
[GCC 8.3.0] på Linux

Skriv "hjälp", "copyright", "credits" eller "licens" för mer information.

// Importera urllib
>>> importera urllib.begäran
// Importera BeautifulSoup
>>> från bs4 importera BeautifulSoup
// Ange webbadressen du vill hämta
>>> my_url = 'https: // linuxhint.com / '
// Begär webbadressen med URL-kommandot
>>> klient = urllib.begäran.urlopen (min_url)
// Lagra HTML-webbsidan i variabeln "html_page"
>>> html_page = klient.läsa()
// Stäng URL-anslutningen efter hämtning av webbsidan
>>> klient.stänga()
// analysera HTML-webbsidan till BeautifulSoup för skrapning
>>> page_soup = BeautifulSoup (html_page, "html.parser ")

Låt oss nu titta på HTML-källkoden som vi bara kopierade och klistrade in för att hitta saker av vårt intresse.

Du kan se att den första artikeln som listas på Linuxhint.com heter "74 Bash Operators Exempel", hitta detta i källkoden. Det är inneslutet mellan rubriktaggar, och dess kod är



class = "category-1561"> BASH-programmering


title = "74 Bash Operators Exempel"> 74 Bash Operators
Exempel


Samma kod upprepas om och om igen med ändring av bara artikeltitlar och länkar. Nästa artikel har följande HTML-kod



class = "category-1343"> Ubuntu
Lack


title = "Så här ställer du in Varnish-cache på Ubuntu 18.04 ">
Så här ställer du in Varnish-cache på Ubuntu 18.04


Du kan se att alla artiklar inklusive dessa två finns i samma ”

”Tagg och använd samma klass” entry-title ”. Vi kan använda "findAll" -funktionen i Beautiful Soup-biblioteket för att hitta och lista ner alla "

”Med klass“ entry-title ”. Skriv följande i din Python-konsol

// Detta kommando hittar alla “

”Taggelement med klass namngiven
“Entry-title”. Utdata lagras i en matris.
>>> artiklar = page_soup.findAll ("h2" ,
"class": "entry-title")
// Antalet artiklar som finns på framsidan av Linuxhint.com
>>> len (artiklar)
102
// Första extraherade “

”Taggelement som innehåller artikelnamn och länk
>>> artiklar [0]


title = "74 Exempel på basoperatörer">
74 Exempel på basoperatörer


// Andra extraherade “

”Taggelement som innehåller artikelnamn och länk
>>> artiklar [1]


title = "Så här ställer du in Varnish-cache på Ubuntu 18.04 ">
Så här ställer du in Varnish-cache på Ubuntu 18.04


// Visar endast text i HTML-taggar med hjälp av textfunktion
>>> artiklar [1].text
'Hur man ställer in Varnish-cache på Ubuntu 18.04 '

Nu när vi har en lista över alla 102 HTML “

”Taggelement som innehåller artikellänk och artikelrubrik. Vi kan extrahera både artikellänkar och titlar. För att extrahera länkar från “”-Taggar kan vi använda följande kod

// Följande kod extraherar länken från första

taggelement
>>> för länk i artiklar [0].find_all ('a', href = True):
... skriv ut (länk ['href'])
..
https: // linuxhint.com / bash_operator_examples /

Nu kan vi skriva en for loop som går igenom varje ”

”Taggelement i” artiklar ”-listan och extrahera artikellänken och titeln.

>>> för i inom intervallet (0,10):
... skriv ut (artiklar [i].text)
... för länk i artiklar [i].find_all ('a', href = True):
... skriv ut (länk ['href'] + "\ n")
..
74 Exempel på Bash-operatörer
https: // linuxhint.com / bash_operator_examples /
Så här ställer du in Varnish-cache på Ubuntu 18.04
https: // linuxhint.com / varnish_cache_ubuntu_1804 /
PineTime: En Linux-vänlig Smartwatch
https: // linuxhint.com / pinetime_linux_smartwatch /
10 bästa billiga Linux-bärbara datorer att köpa med en budget
https: // linuxhint.com / best_cheap_linux_laptops /
HD Remastered-spel för Linux som aldrig hade en Linux-release ..
https: // linuxhint.com / hd_remastered_games_linux /
60 FPS-skärminspelningsappar för Linux
https: // linuxhint.com / 60_fps_screen_recording_apps_linux /
74 Exempel på basoperatörer
https: // linuxhint.com / bash_operator_examples /
... klipp ..

På samma sätt sparar du dessa resultat i en JSON- eller CSV-fil.

Slutsats

Dina dagliga uppgifter är inte bara filhantering eller körning av systemkommandon. Du kan också automatisera webbrelaterade uppgifter som filhämtningsautomatisering eller dataextraktion genom att skrapa webben i Python. Den här artikeln var begränsad till endast enkel dataextraktion men du kan göra enorma uppgiftsautomatiseringar med "urllib" och "BeautifulSoup".

Hur man laddar ner och spelar Sid Meier's Civilization VI på Linux
Introduktion till spelet Civilization 6 är ett modernt intag av det klassiska konceptet som introducerades i serien Age of Empires-spel. Idén var gans...
Hur man installerar och spelar Doom på Linux
Introduktion till Doom Doom-serien har sitt ursprung på 90-talet efter att den ursprungliga Doom släpptes. Det blev en omedelbar hit och från den tide...
Vulkan för Linux-användare
Med varje ny generation grafikkort ser vi spelutvecklare driva gränserna för grafisk trohet och komma ett steg närmare fotorealism. Men trots all kred...