Spletno strganje

Spletno strganje s pomočjo Pythona

Spletno strganje s pomočjo Pythona
Spletno strganje je avtomatiziran način za pridobivanje in obdelavo informacij z spletnih mest v zelo velikem obsegu. Podatki na spletnih straneh niso strukturirani, zato jih je mogoče zbirati in strukturirati s strganjem po spletu. Iskalniki, kot so Google, Bing, Yahoo, imajo robote, ki odstranijo podatke z spletnih strani in jih indeksirajo na svojih iskalnih straneh. Podatke je mogoče pridobiti tudi z API-ji, kar je verjetno eden najboljših načinov za pridobivanje podatkov iz spleta. Znana spletna mesta, kot so Facebook, Google, Amazon, uporabnikom zagotavljajo dobro strukturirane API-je za interakcijo s podatki, vendar teh API-jev ne boste videli povsod.

Če želite na primer redno obveščati o svojih najljubših izdelkih za ponudbe s popustom ali če želite avtomatizirati postopek nalaganja epizod svoje najljubše sezone eno za drugo in spletno mesto za to nima nobenega API-ja, potem je edina izbira vam ostane samo strganje po spletu.Strganje po spletu je na nekaterih spletnih mestih morda nezakonito, odvisno od tega, ali spletno mesto to dovoljuje ali ne. Spletne strani uporabljajo »robote.txt ”za izrecno določitev URL-jev, ki jih ni dovoljeno razrezati. Ali je spletno mesto dovoljeno ali ne, lahko preverite tako, da dodate »roboti«.txt «z imenom domene spletnega mesta. Na primer https: // www.google.com / roboti.txt

V tem članku bomo uporabili Python za strganje, ker je zelo enostaven za namestitev in uporabo. Ima številne vgrajene knjižnice in knjižnice drugih proizvajalcev, ki jih je mogoče uporabiti za strganje in organiziranje podatkov. Za pridobitev spletne strani bomo uporabili dve knjižnici Python "urllib", za razčlenitev spletne strani pa "BeautifulSoup" za izvajanje operacij programiranja.

Kako deluje spletno strganje?

Zahtevo pošljemo na spletno stran, od koder želite strgati podatke. Spletno mesto bo na zahtevo odgovorilo z HTML vsebino strani. Nato lahko to spletno stran razčlenimo na BeautifulSoup za nadaljnjo obdelavo. Za pridobitev spletne strani bomo uporabili knjižnico "urllib" v Pythonu.

Urllib bo vsebino spletne strani prenesel v HTML. Na tej spletni strani HTML ne moremo uporabiti nizov za pridobivanje vsebine in nadaljnjo obdelavo. Uporabili bomo knjižnico Python “BeautifulSoup”, ki bo razčlenila vsebino in izvlekla zanimive podatke.

Strganje člankov iz Linuxhinta.com

Zdaj, ko imamo idejo, kako deluje strganje po spletu, poizkusimo nekaj. Iz Linuxhinta bomo poskušali strgati naslove člankov in povezave.com. Torej odprite https: // linuxhint.com / v brskalniku.

Zdaj pritisnite CRTL + U, da si ogledate izvorno kodo HTML spletne strani.

Kopirajte izvorno kodo in pojdite na https: // htmlformatter.com / za polepšanje kode. Po pretvarjanju kode je enostaven pregled kode in iskanje zanimivih informacij.

Zdaj znova kopirajte oblikovano kodo in jo prilepite v svoj najljubši urejevalnik besedil, kot so atom, sublimno besedilo itd. Zdaj bomo z Pythonom strgali zanimive informacije. Vnesite naslednje

// Namestite čudovito knjižnico juhe, prihaja urllib
vnaprej nameščen v Pythonu
ubuntu @ ubuntu: ~ $ sudo pip3 namestite bs4
ubuntu @ ubuntu: ~ $ python3
Python 3.7.3 (privzeto, 7. oktober 2019, 12:56:13)
[GCC 8.3.0] na Linuxu

Za več informacij vnesite »pomoč«, »avtorske pravice«, »dobropisi« ali »licenca«.

// Uvozi urllib
>>> uvoz urllib.prošnja
// Uvozi BeautifulSoup
>>> iz bs4 uvozi BeautifulSoup
// Vnesite URL, ki ga želite pridobiti
>>> my_url = 'https: // linuxhint.com / '
// Zahtevajte spletno stran URL z ukazom urlopen
>>> odjemalec = urllib.prošnja.urlopen (moj_url)
// Spletno stran HTML shranimo v spremenljivko “html_page”
>>> html_page = odjemalec.preberi ()
// Po zagonu spletne strani zaprite povezavo URL
>>> stranka.zapri ()
// razčlenimo spletno stran HTML na BeautifulSoup za strganje
>>> page_soup = BeautifulSoup (html_page, "html.razčlenjevalnik ")

Zdaj pa poglejmo izvorno kodo HTML, ki smo jo pravkar kopirali in prilepili, da bi našli stvari, ki nas zanimajo.

Vidite, da je prvi članek naveden na Linuxhintu.com se imenuje »74 Primeri operaterjev bash«, to poiščite v izvorni kodi. Zaprta je med oznakami glave in njena koda je



class = "category-1561"> BASH programiranje


title = "Primeri 74 Bash operaterjev"> 74 Bash operaterjev
Primeri


Ista koda se vedno znova ponavlja s spremembo samo naslovov člankov in povezav. Naslednji članek vsebuje naslednjo kodo HTML



class = "category-1343"> Ubuntu
Lak


title = "Kako nastaviti predpomnilnik lakov v Ubuntu 18.04 ">
Kako nastaviti predpomnilnik Varnish na Ubuntu 18.04


Vidite, da so vsi članki, vključno s tema dvema, zaprti v isti “

"In uporabite isti razred" entry-title ". V knjižnici Beautiful Soup lahko uporabimo funkcijo "findAll", da poiščemo in spravimo vse "

"Z razredom" entry-title ". V konzolo Python vnesite naslednje

// Ta ukaz bo našel vse “

”Elementi oznake z imenom razreda
“Vnos-naslov”. Izhodni podatki bodo shranjeni v matriki.
>>> članki = page_soup.findAll ("h2" ,
"class": "entry-title")
// Število člankov na prvi strani Linuxhinta.com
>>> len (članki)
102
// prvič izvlečeno “

”Element oznake, ki vsebuje ime članka in povezavo
>>> članki [0]


title = "74 primeri bash operaterjev">
74 Primeri bash operaterjev


// drugi izvleček “

”Element oznake, ki vsebuje ime članka in povezavo
>>> članki [1]


title = "Kako nastaviti predpomnilnik lakov v Ubuntu 18.04 ">
Kako nastaviti predpomnilnik Varnish na Ubuntu 18.04


// Prikaz besedila v oznakah HTML z uporabo besedilne funkcije
>>> članki [1].besedilo
'Kako nastaviti predpomnilnik Varnish na Ubuntu 18.04 '

Zdaj, ko imamo seznam vseh 102 HTML “

”Elementi oznake, ki vsebuje povezavo do članka. Izvlečemo lahko povezave do člankov in naslove. Če želite izvleči povezave iz”, Lahko uporabimo naslednjo kodo

// Naslednja koda bo izvlekla povezavo iz prve

element oznake
>>> za povezavo v člankih [0].find_all ('a', href = True):
… Natisni (povezava ['href'])
..
https: // linuxhint.com / bash_operator_examples /

Zdaj lahko napišemo zanko for, ki se ponovi skozi vsako "

Element oznake na seznamu člankov in izvlecite povezavo do članka.

>>> za i v območju (0,10):
… Tiskanje (članki [i].besedilo)
… Za povezavo v člankih [i].find_all ('a', href = True):
… Natisni (povezava ['href'] + "\ n")
..
74 Primeri bash operaterjev
https: // linuxhint.com / bash_operator_examples /
Kako nastaviti predpomnilnik Varnish na Ubuntu 18.04
https: // linuxhint.com / varnish_cache_ubuntu_1804 /
PineTime: Linuxu prijazna pametna ura
https: // linuxhint.com / pinetime_linux_smartwatch /
10 najboljših poceni prenosnih računalnikov Linux, ki jih lahko kupite s poceni
https: // linuxhint.com / best_cheap_linux_laptops /
Preoblikovane igre HD za Linux, ki še nikoli niso izdale Linuxa ..
https: // linuxhint.com / hd_remastered_games_linux /
Aplikacije za snemanje zaslona 60 FPS za Linux
https: // linuxhint.com / 60_fps_screen_recording_apps_linux /
74 Primeri bash operaterjev
https: // linuxhint.com / bash_operator_examples /
... odreži ..

Podobno te rezultate shranite v datoteko JSON ali CSV.

Zaključek

Vaša vsakodnevna opravila niso samo upravljanje datotek ali izvajanje sistemskih ukazov. S spletnimi nalogami, kot sta avtomatizacija prenosa datotek ali pridobivanje podatkov, lahko avtomatizirate tudi s strganjem spleta v Pythonu. Ta članek je bil omejen le na preprosto pridobivanje podatkov, vendar lahko naredite ogromno avtomatizacijo opravil z uporabo urllib in BeautifulSoup.

WinMouse vam omogoča prilagajanje in izboljšanje premikanja kazalca miške v računalniku z operacijskim sistemom Windows
Če želite izboljšati privzete funkcije kazalca miške, uporabite brezplačno programsko opremo WinMouse. Dodaja več funkcij, s pomočjo katerih boste kar...
Levi gumb miške ne deluje v sistemu Windows 10
Če s prenosnikom ali namiznim računalnikom uporabljate namensko miško, vendar gumb miške z levim klikom ne deluje v operacijskem sistemu Windows 10/8/...
Kazalec skoči ali se naključno premika med tipkanjem v sistemu Windows 10
Če ugotovite, da kazalec miške med tipkanjem v prenosnem računalniku ali računalniku Windows samodejno, naključno preskakuje ali se premika sam, vam l...