Web struganje

Web struganje pomoću Pythona

Web struganje pomoću Pythona
Web struganje je automatizirani način za izdvajanje i obradu podataka s internetskih web stranica u vrlo velikoj količini. Podaci na internetskim web mjestima nisu strukturirani, što se može prikupiti i strukturirati struganjem weba. Tražilice poput Googlea, Binga, Yahooa imaju botove koji stružu podatke s internetskih stranica i indeksiraju ih na svojim stranicama za pretraživanje. Podaci se također mogu izdvojiti pomoću API-ja, što je vjerojatno jedan od najboljih načina za izdvajanje podataka s weba. Poznate web stranice kao što su Facebook, Google, Amazon pružaju korisnicima dobro strukturirane API-je za interakciju s podacima, ali te API-je nećete vidjeti svugdje.

Na primjer, ako želite redovito primati ažuriranja o svojim omiljenim proizvodima za ponude s popustom ili želite automatizirati postupak preuzimanja epizoda vaše omiljene sezone jednu po jednu, a web lokacija za to nema API, jedini izbor ostaje vam struganje s weba.Web struganje može biti nezakonito na nekim web mjestima, ovisno o tome dopušta li to web mjesto ili ne. Web stranice koriste „robote.txt ”za izričito definiranje URL-ova kojima nije dopušteno brisanje. Možete li provjeriti dopušta li to web mjesto dodavanjem "robota.txt ”s nazivom domene web mjesta. Na primjer, https: // www.google.com / roboti.txt

U ovom ćemo članku koristiti Python za struganje jer je vrlo jednostavan za postavljanje i upotrebu. Ima brojne ugrađene knjižnice i biblioteke trećih strana koje se mogu koristiti za struganje i organiziranje podataka. Upotrijebit ćemo dvije Python biblioteke "urllib" za dohvaćanje web stranice, a "BeautifulSoup" za raščlanjivanje web stranice za primjenu programskih operacija.

Kako funkcionira struganje weba?

Šaljemo zahtjev na web stranicu odakle želite strugati podatke. Web stranica će odgovoriti na zahtjev HTML sadržajem stranice. Zatim ovu web stranicu možemo raščlaniti na BeautifulSoup za daljnju obradu. Da bismo dohvatili web stranicu, upotrijebit ćemo knjižnicu “urllib” u Pythonu.

Urllib će preuzeti sadržaj web stranice u HTML-u. Ne možemo primijeniti niske operacije na ovoj HTML web stranici za izdvajanje sadržaja i daljnju obradu. Upotrijebit ćemo Python biblioteku "BeautifulSoup" koja će raščlaniti sadržaj i izvući zanimljive podatke.

Struganje članaka s Linuxhinta.com

Sad kad imamo ideju o tome kako mrežno struganje djeluje, odradimo malo vježbe. Pokušat ćemo ukloniti naslove članaka i poveznice s Linuxhinta.com. Dakle, otvorite https: // linuxhint.com / u vašem pregledniku.

Sada pritisnite CRTL + U za prikaz HTML izvornog koda web stranice.

Kopirajte izvorni kod i idite na https: // htmlformatter.com / za pretvaranje koda. Nakon pretvaranja koda lako ga je pregledati i pronaći zanimljive informacije.

Sada opet kopirajte formatirani kod i zalijepite ga u svoj omiljeni uređivač teksta poput atoma, uzvišenog teksta itd. Sada ćemo strugati zanimljive informacije pomoću Pythona. Upišite sljedeće

// Instalirajte prekrasnu knjižnicu juha, dolazi urllib
unaprijed instaliran u Pythonu
ubuntu @ ubuntu: ~ $ sudo pip3 instaliraj bs4
ubuntu @ ubuntu: ~ $ python3
Python 3.7.3 (zadano, 7. listopada 2019., 12:56:13)
[OUU 8.3.0] na Linuxu

Upišite "pomoć", "autorska prava", "krediti" ili "licenca" za više informacija.

// Uvoz urlliba
>>> uvoz urllib.zahtjev
// Uvoz BeautifulSoup
>>> iz bs4 uvoza BeautifulSoup
// Unesite URL koji želite dohvatiti
>>> my_url = 'https: // linuxhint.com / '
// Zatražite URL web stranicu pomoću naredbe urlopen
>>> klijent = urllib.zahtjev.urlopen (moj_url)
// Spremite HTML web stranicu u varijablu “html_page”
>>> html_page = klijent.čitati()
// Zatvorite URL vezu nakon dohvaćanja web stranice
>>> klijent.Zatvoriti()
// raščlanite HTML web stranicu na BeautifulSoup radi struganja
>>> page_soup = BeautifulSoup (html_page, "html.parser ")

Pogledajmo sada izvorni HTML kod koji smo upravo kopirali i zalijepili kako bismo pronašli stvari koje nas zanimaju.

Vidite da je prvi članak naveden na Linuxhintu.com nazvan je "74 Bash Operators Primjeri", pronađite to u izvornom kodu. Zatvoren je između oznaka zaglavlja i njegov je kôd



class = "category-1561"> BASH programiranje


title = "Primjeri 74 Bash operatora"> 74 Bash operatora
Primjeri


Isti se kod uvijek iznova ponavlja s promjenom samo naslova članaka i poveznica. Sljedeći članak sadrži sljedeći HTML kôd



class = "category-1343"> Ubuntu
Lak


title = "Kako postaviti predmemoriju lakova na Ubuntu 18.04 ">
Kako postaviti predmemoriju lakova na Ubuntu 18.04


Možete vidjeti da su svi članci, uključujući ova dva, zatvoreni u isti “

"I koristite istu klasu" entry-title ". Možemo koristiti funkciju "findAll" u knjižnici Beautiful Soup za pronalaženje i popis svih "

"S razredom" entry-title ". Upišite sljedeće u svoju Python konzolu

// Ova naredba će pronaći sve “

”Elementi oznake s imenom klase
“Unos-naslov”. Izlaz će biti pohranjen u polje.
>>> članci = page_soup.findAll ("h2" ,
"class": "entry-title")
// Broj članaka nađenih na naslovnoj stranici Linuxhinta.com
>>> len (članci)
102
// Prvo izvađeno “

”Element oznake koji sadrži naziv članka i vezu
>>> članci [0]


title = "74 Primjeri bash operatora">
74 Primjeri bash operatora


// Drugo izdvojeno “

”Element oznake koji sadrži naziv članka i vezu
>>> članci [1]


title = "Kako postaviti predmemoriju lakova na Ubuntu 18.04 ">
Kako postaviti predmemoriju lakova na Ubuntu 18.04


// Prikazivanje samo teksta u HTML oznakama pomoću funkcije teksta
>>> članci [1].tekst
'Kako postaviti predmemoriju lakova na Ubuntu 18.04 '

Sad kad imamo popis svih 102 HTML “

”Označi elemente koji sadrže vezu i naslov članka. Možemo izdvojiti i linkove i naslove članaka. Da biste izdvojili veze iz "”, Možemo koristiti sljedeći kod

// Sljedeći će kôd izdvojiti vezu iz prvog

element oznake
>>> za poveznicu u člancima [0].find_all ('a', href = True):
... ispis (veza ['href'])
..
https: // linuxhint.com / bash_operator_examples /

Sada možemo napisati for petlju koja se ponavlja kroz svaki "

Element oznake na popisu članaka i izdvojite vezu i naslov članka.

>>> za i u rasponu (0,10):
… Ispis (članci [i].tekst)
... za vezu u člancima [i].find_all ('a', href = True):
… Ispis (veza ['href'] + "\ n")
..
74 Primjeri bash operatora
https: // linuxhint.com / bash_operator_examples /
Kako postaviti predmemoriju lakova na Ubuntu 18.04
https: // linuxhint.com / varnish_cache_ubuntu_1804 /
PineTime: SmartWatch prilagođen Linuxu
https: // linuxhint.com / pinetime_linux_smartwatch /
10 najboljih jeftinih Linux prijenosnih računala s povoljnim cijenama
https: // linuxhint.com / best_cheap_linux_laptops /
HD Remastered igre za Linux koje nikada nisu imale Linux izdanje ..
https: // linuxhint.com / hd_remastered_games_linux /
60 FPS aplikacija za snimanje zaslona za Linux
https: // linuxhint.com / 60_fps_screen_recording_apps_linux /
74 Primjeri bash operatora
https: // linuxhint.com / bash_operator_examples /
... odreži ..

Slično tome, ove rezultate spremate u JSON ili CSV datoteku.

Zaključak

Vaši svakodnevni zadaci nisu samo upravljanje datotekama ili izvršavanje naredbi sustava. Također možete automatizirati mrežne zadatke poput automatizacije preuzimanja datoteka ili izdvajanja podataka struganjem weba u Pythonu. Ovaj je članak bio ograničen na samo jednostavno izdvajanje podataka, ali možete obaviti ogromnu automatizaciju zadataka pomoću "urllib" i "BeautifulSoup".

5 najboljih arkadnih igara za Linux
U današnje vrijeme računala su ozbiljni strojevi koji se koriste za igre na sreću. Ako ne uspijete dobiti novi visoki rezultat, znat ćete na što misli...
Bitka za Wesnoth 1.13.6 Razvoj objavljen
Bitka za Wesnoth 1.13.6 objavljeno prošlog mjeseca, šesto je razvojno izdanje u izdanju 1.13.x series i donosi niz poboljšanja, ponajviše korisničkog ...
Kako instalirati League Of Legends na Ubuntu 14.04
Ako ste ljubitelj League of Legends, ovo je prilika za vas da testirate League of Legends. Imajte na umu da je LOL podržan na PlayOnLinux ako ste kori...