Veebi kraapimine

Veebikraapimine Pythoni abil

Veebikraapimine Pythoni abil
Veebi kraapimine on automatiseeritud viis Interneti-veebisaitidelt teabe eraldamiseks ja töötlemiseks väga suures koguses. Interneti-veebisaitide andmed ei ole struktureeritud, mida saab veebi kraapimise kaudu koguda ja struktureerida. Otsingumootoritel nagu Google, Bing, Yahoo on robotid, mis kraapivad andmeid Interneti-veebisaitidelt ja indekseerivad neid oma otsingulehtedel. Andmeid saab eraldada ka API-de abil, mis on tõenäoliselt üks parimaid viise andmete veebist väljavõtmiseks. Kuulsad veebisaidid nagu Facebook, Google, Amazon pakuvad kasutajatele andmetega suhtlemiseks hästi struktureeritud API-sid, kuid te ei näe neid API-sid kõikjal.

Näiteks kui soovite oma lemmiktooteid regulaarselt värskendada sooduspakkumiste jaoks või soovite automatiseerida oma lemmikhooaja episoodide allalaadimise protsessi ükshaaval ja veebisaidil pole selle jaoks ühtegi API-d, siis on ainus valik teile jääb veebi kraapimine.Veebikraapimine võib mõnel veebisaidil olla ebaseaduslik, olenevalt sellest, kas veebisait seda lubab või mitte. Veebisaidid kasutavad roboteid.txt ”fail, et määratleda selgesõnaliselt URL-id, mida pole lubatud tühistada. Robotite lisamisega saate kontrollida, kas veebisait lubab seda või mitte.txt ”koos veebisaidi domeeninimega. Näiteks https: // www.google.com / robotid.txt

Selles artiklis kasutame kraapimiseks Pythoni, kuna seda on väga lihtne seadistada ja kasutada. Sellel on palju sisseehitatud ja kolmandate osapoolte raamatukogusid, mida saab kasutada andmete kraapimiseks ja korrastamiseks. Veebilehe toomiseks kasutame kaht Pythoni teeki "urllib" ja programmeerimisoperatsioonide rakendamiseks veebilehe sõelumiseks "BeautifulSoup".

Kuidas veebi kraapimine töötab?

Saadame päringu veebilehele, kust soovite andmeid kraapida. Veebisait vastab päringule lehe HTML-sisuga. Seejärel saame selle veebilehe parsida BeautifulSoupi edasiseks töötlemiseks. Veebilehe toomiseks kasutame Pythonis teeki „urllib”.

Urllib laadib veebilehe sisu alla HTML-vormingus. Me ei saa sellele HTML-i veebisaidile sisu väljatõmbamiseks ja edasiseks töötlemiseks rakendada stringitoiminguid. Kasutame Pythoni teeki “BeautifulSoup”, mis sõelub sisu ja eraldab huvitavad andmed.

Artiklite kraapimine Linuxhintist.com

Nüüd, kui meil on ettekujutus veebi kraapimise toimimisest, teeme natuke harjutusi. Püüame kraapida artiklite pealkirju ja linke Linuxhintist.com. Nii et avage https: // linuxhint.com / teie brauseris.

Veebilehe HTML-lähtekoodi kuvamiseks vajutage nüüd klahve CRTL + U.

Kopeerige lähtekood ja minge saidile https: // htmlformatter.com / koodi täpsustamiseks. Pärast koodi täpsustamist on seda lihtne kontrollida ja leida huvitavat teavet.

Nüüd kopeerige uuesti vormindatud kood ja kleepige see oma lemmiktekstiredaktorisse, näiteks aatom, ülev tekst jne. Nüüd kraapime huvitava teabe Pythoni abil. Sisestage järgmine

// Paigaldage ilus supiraamatukogu, urllib tuleb
eelinstallitud Pythoni
ubuntu @ ubuntu: ~ $ sudo pip3 installib bs4
ubuntu @ ubuntu: ~ $ python3
Python 3.7.3 (vaikimisi, 7. oktoober 2019, kell 12:56:13)
[GCC 8.3.0] Linuxil

Lisateabe saamiseks sisestage „help“, „copyright“, „credits“ või „litsents“.

// Importige urllib
>>> importige urllib.taotlus
// Imeta BeautifulSoup
>>> bs4-st importige BeautifulSoup
// Sisestage URL, mille soovite tuua
>>> my_url = 'https: // linuxhint.com / '
// URL-i veebisaidi taotlemine käsu urlopen abil
>>> klient = urllib.taotlus.urlopen (my_url)
// Salvestage HTML-veebileht muutuja „html_page”
>>> html_page = klient.loe ()
// Pärast veebilehe toomist sulgege URL-i ühendus
>>> klient.Sulge()
// parsige HTML-i veebileht kraapimiseks väärtuseks BeautifulSoup
>>> page_soup = BeautifulSoup (html_leht, "html.parser ")

Vaatame nüüd huvipakkuvate asjade leidmiseks lihtsalt kopeeritud ja kleebitud HTML-i lähtekoodi.

Näete, et esimene artikkel on loetletud Linuxhinis.com kannab nime “74 Bash Operators Examples”, leidke see lähtekoodist. See on suletud päise siltide vahele ja selle kood on



class = "category-1561"> BASH-i programmeerimine


title = "74 Bash Operaatori näidet"> 74 Bash Operaatorit
Näited


Sama kood kordub vaid artiklite pealkirjade ja linkide muutmisega. Järgmises artiklis on järgmine HTML-kood



class = "category-1343"> Ubuntu
Lakk


title = "Kuidas seadistada laki vahemälu Ubuntu 18-s.04 ">
Kuidas seadistada laki vahemälu Ubuntu 18-s.04


Näete, et kõik artiklid, kaasa arvatud need kaks, on suletud samasse

”Märgendit ja kasutage sama klassi“ entry-title ”. Saame kõigi funktsioonide leidmiseks ja loetlemiseks kasutada funktsiooni FindAll ilusas supis

”Millel on klassi“ kande pealkiri ”. Sisestage oma Pythoni konsoolile järgmine

// See käsk leiab kõik

”Sildielemendid, millel on klassi nimi
„Kande pealkiri”. Väljund salvestatakse massiivi.
>>> artiklid = leht_supp.findAll ("h2" ,
"class": "entry-title")
// Linuxhindi esilehelt leitud artiklite arv.com
>>> len (artiklid)
102
// Esmalt välja võetud “

”Sildielement, mis sisaldab artikli nime ja linki
>>> artiklid [0]


title = "74 Bash Operaatorite näidet">
74 Bashi operaatorite näited


// Teine väljavõte “

”Sildielement, mis sisaldab artikli nime ja linki
>>> artiklid [1]


title = "Kuidas seadistada laki vahemälu Ubuntu 18-s.04 ">
Kuidas seadistada laki vahemälu Ubuntu 18-s.04


// Ainult teksti kuvamine HTML-i siltides, kasutades tekstifunktsiooni
>>> artiklid [1].teksti
'Kuidas seadistada laki vahemälu Ubuntu 18-s.04 '

Nüüd, kui meil on kõigi 102 HTML-i loend,

”Sildielemendid, mis sisaldavad artikli linki ja artikli pealkirja. Saame välja võtta nii artiklite lingid kui ka pealkirjad. Linkide väljavõtmiseks”Silte, saame kasutada järgmist koodi

// Järgmine kood eraldab lingi esimesest

sildi element
>>> link artiklites [0].find_all ('a', href = True):
... print (link ['href'])

https: // linuxhint.com / bash_operator_examples /

Nüüd saame kirjutada for loopi, mis kordub iga

”Sildielement loendis“ artiklid ”ning väljavõtte artikli link ja pealkiri.

>>> i vahemikus (0,10):
... print (artiklid [i].tekst)
... link artiklites [i].find_all ('a', href = True):
... print (link ['href'] + "\ n")

74 Bashi operaatorite näited
https: // linuxhint.com / bash_operator_examples /
Kuidas seadistada laki vahemälu Ubuntu 18-s.04
https: // linuxhint.com / varnish_cache_ubuntu_1804 /
PineTime: Linux-sõbralik nutikell
https: // linuxhint.com / pinetime_linux_smartwatch /
10 parimat odavat Linuxi sülearvutit, mida saab eelarvega osta
https: // linuxhint.com / best_cheap_linux_laptops /
HD-vormingus uuendatud versioonid Linuxile mõeldud mängud, millel pole kunagi olnud Linuxi versiooni
https: // linuxhint.com / hd_remastered_games_linux /
60 FPS ekraani salvestamise rakendust Linuxile
https: // linuxhint.com / 60_fps_screen_recording_apps_linux /
74 Bashi operaatorite näited
https: // linuxhint.com / bash_operator_examples /
... jupp ..

Samamoodi salvestate need tulemused JSON- või CSV-faili.

Järeldus

Teie igapäevased ülesanded pole ainult failihaldus ega süsteemi käskude täitmine. Samuti saate veebiga seotud ülesandeid, näiteks failide allalaadimise automatiseerimist või andmete väljavõtet, automatiseerida, kraapides veebi Pythonis. See artikkel piirdus ainult lihtsa andmete väljavõtmisega, kuid saate tohutult automatiseerida ülesandeid, kasutades „urllib” ja „BeautifulSoup”.

Viis parimat ergonoomilist arvutihiiretoodet Linuxile
Kas pikaajaline arvuti kasutamine põhjustab valu randmes või sõrmedes?? Kas teil on liigeste jäikus ja peate pidevalt käsi suruma? Kas tunnete põletav...
How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...
X-Mouse Button Control abil saate hiire nupud erinevates tarkvarades erinevalt ümber teha
Võib-olla vajate tööriista, mis võiks muuta teie hiire juhtimissüsteemi iga kasutatava rakendusega. Sel juhul võite proovida rakendust nimega X hiiren...