Andmete veebist eraldamiseks on mitu Pythoni teeki ja raamistikku. Igaüks alustab konkreetse tööriistaga, kuni mõistab, et see ei pruugi nende järgmise projekti jaoks kõige paremini sobida. Kuigi on väga ebatõenäoline, et kasutate kõiki Pythoni tööriistu ühes projektis, peaksite teadma, milliseid neid oma veebikraapimise tööriistakastis käepärast hoida.
Siin on parimad Pythoni teegid, raamistikud ja muud tööriistad, mis aitavad teil vaevata andmeid veebist kraapida.
1. Ilus supp
Alustades nimekirjast parima veebikraapimise teegiga algajatele: ilus supp. See on sisuliselt tööriist, mis eraldab andmeid sõelutud HTML- ja XML-failidest, muutes dokumendi Pythoni objektiks.
Kauni supi "ilu" peitub selle lihtsuses. Seda on lihtne seadistada ja saate alustage oma esimese veebikraapimise projektiga minutite jooksul. Beautiful Soup kasutab HTML-dokumendist andmete eraldamiseks hierarhilist lähenemist. Saate eraldada elemente siltide, klasside, ID-de, nimede ja muude HTML-i atribuutide abil.
Kaunilt supilt enamat ootamine oleks aga liiale viimine. Vahevara ja muude täiustatud funktsioonide, nagu puhverserveri pööramine või mitme lõimega töötlemine, sisseehitatud tugi puudub. Kauni supi abil vajate HTTP-päringute saatmiseks, allalaaditud dokumendi sõelumiseks ja kogutud teabe eksportimiseks väljundfaili teeke.
2. taotlusi
Päringud on kahtlemata enimkasutatav Pythoni teek HTTP-päringute käsitlemiseks. Tööriist peab vastu oma tunnuslausele: HTTP for Humans™. See toetab mitut HTTP päringu tüüpi, alates GET ja POST kuni PATCH ja DELETE. Lisaks sellele saate juhtida peaaegu kõiki päringu aspekte, sealhulgas päiseid ja vastuseid.
Kui see kõlab lihtsalt, võite olla kindel, sest paljude funktsioonide abil on päringud ka kogenud kasutajatele. Saate päringuga mängida ja selle päiseid kohandada, faili POST-i abil serverisse üles laadida ning muu hulgas käsitleda ajalõppe, ümbersuunamisi ja seansse.
päringuid seostatakse tavaliselt veebikraapimisel kauni supiga, kuna teistel Pythoni raamistikel on HTTP-päringute käsitlemiseks sisseehitatud tugi. Veebilehe HTML-i hankimiseks kasutage taotlusi, et saata serverile GET-päring, seejärel eraldada vastusest tekstiandmed ja edastada need kaunile supile.
3. Scrapy
Nagu nimigi ütleb, on Scrapy Pythoni raamistik suuremahuliste veebikaabitsate arendamiseks. See on Šveitsi armee nuga veebist andmete väljavõtmiseks. Scrapy tegeleb kõigega alates päringute saatmisest ja puhverserveri rakendamisest kuni andmete ekstraheerimise ja eksportimiseni.
Erinevalt Beautiful Soupist on Scrapy tõeline jõud selle keerukas mehhanism. Kuid ärge laske sellel keerukusel teid hirmutada. Scrapy on kiiruse, tõhususe ja funktsioonide poolest selle loendi kõige tõhusam veebikraapimise raamistik. Kaasas valijad, mis võimaldavad teil XPathi või CSS-i elemente kasutades HTML-dokumendist andmeid valida.
Täiendav eelis on kiirus, millega Scrapy päringuid saadab ja andmed välja võtab. See saadab ja töötleb taotlusi asünkroonselt ning see eristab seda teistest veebikraapimise tööriistadest.
Lisaks põhifunktsioonidele saate tuge ka vahevarale, mis on konksude raamistik, mis lisab Scrapy vaikemehhanismile täiendavaid funktsioone. Scrapy abil ei saa JavaScripti juhitud veebisaite karbist välja kraapida, kuid saate kasutada vahevara, näiteks scrapy-seleen, scrapy-splash ja scrapy-scrapingbee, et rakendada see funktsioon oma projekti.
Lõpuks, kui olete andmete ekstraktimise lõpetanud, saate need eksportida erinevates failivormingutes; CSV, JSON ja XML, kui nimetada vaid mõnda.
Scrapy on üks paljudest põhjustest, miks Python on parim programmeerimiskeel kõigile, kes soovivad veebi kraapida. Oma esimese Scrapy projekti seadistamine võib võtta aega, eriti kui teil pole Pythoni klasside ja raamistikega kogemusi. Scrapy töövoog on jagatud mitmeks failiks ja algajatele võib see ilmneda soovimatu keerukusega.
4. Seleen
Kui soovite koguda dünaamilist JavaScripti renderdatud sisu, siis seleen on see, mida vajate. Platvormideülese veebitestimise raamistikuna aitab Selenium HTML-i, CSS-i ja JavaScripti renderdada ning vajalikku välja võtta. Samuti saate jäljendada tegelikku kasutaja interaktsiooni, kasutades kõvasti kodeeritud klaviatuuri ja hiire toiminguid, mis muudab mängu täielikult.
Seleen loob veebidraiveri abil brauseri eksemplari ja laadib lehe. Mõned Seleniumi toetatud populaarsed brauserid on Google Chrome, Mozilla Firefox, Opera, Microsoft Edge, Apple Safari ja Internet Explorer. See kasutab CSS-i ja XPathi lokaatoreid, mis on sarnased Scrapy-selektoritega, et leida ja eraldada lehe HTML-elementidest sisu.
Kui te pole Pythoniga kogenud, kuid tunnete teisi programmeerimiskeeli, saate Seleniumi kasutada koos C#, JavaScripti, PHP, Perli, Ruby ja Javaga.
Ainus piirang on see, et kuna Selenium käivitab taustal veebibrauseri, suurenevad skreeperi käivitamiseks vajalikud ressursid märkimisväärselt, võrreldes Scrapy või Beautiful Soupiga. Kuid arvestades seleeni lisafunktsioone, on see täiesti õigustatud.
5. urllib
Pythoni urllib teek on lihtne, kuid oluline tööriist, mida teie veebikraapimise arsenalis kasutada. See võimaldab teil Pythoni skriptides käsitleda ja töödelda URL-e.
Urllib-i sobiv praktiline rakendus on URL-i muutmine. Arvestage, et kraapite mitme lehega veebisaiti ja peate järgmisele lehele jõudmiseks muutma osa URL-ist.
urllib aitab teil URL-i sõeluda ja selle mitmeks osaks jagada, mida saate seejärel uue URL-i loomiseks muuta ja lahti sõeluda. Ehkki teegi kasutamine stringide sõelumiseks võib tunduda üleliigne, on urllib päästja inimestele, kes kodeerivad oma lõbuks veebikaabitsaid ega soovi sattuda andmestruktuuride keerulistesse asjadesse.
Kui soovite uurida veebisaidi faili robots.txt, mis on Google'i roomaja ja muude skreeperite juurdepääsureegleid sisaldav tekstifail, võib urllib teid ka selles aidata. Soovitatav on järgida veebisaidi faili robots.txt ja kraapida ainult lubatud lehti.
6. JSON-, CSV- ja XML-teegid
Kuna rakendusel Beautiful Soup või Selenium ei ole andmete eksportimiseks sisseehitatud funktsioone, on teil vaja Pythoni teeki eksportige andmed JSON-i, CSV- või XML-faili. Õnneks on selle saavutamiseks palju teeke ja soovitatakse kõige elementaarsemaid, nimelt JSON-, CSV- ja XML-failide jaoks json, csv ja xml.
Sellised teegid võimaldavad teil luua faili, lisada sellele andmeid ja seejärel eksportida faili oma kohalikku salvestusruumi või kaugserverisse.
7. Mehaaniline supp
Mehaaniline supp? Kas see on odav ilus supp? Ei. Inspireeritud Mehhaniseerida Pythoni päringutel ja Beautiful Soupil põhinev MechanicalSoup aitab teil automatiseerida inimeste käitumist ja eraldada veebilehelt andmeid. Seda võib pidada ilusaks supi ja seleeni vahepealseks. Ainus saak? See ei käsitle JavaScripti.
Kuigi nimed on sarnased, on MechanicalSoupi süntaks ja töövoog äärmiselt erinevad. Loote brauseri seansi kasutades MechanicalSoup ja kui leht on alla laaditud, kasutate Beautiful Soup meetodeid, nagu leia () ja leia_kõik() HTML-dokumendist andmete eraldamiseks.
Veel üks MechanicalSoupi muljetavaldav funktsioon on see, et see võimaldab teil täita vorme skripti abil. See on eriti kasulik, kui peate kraapima leheküljele jõudmiseks väljale midagi sisestama (näiteks otsinguribale). MechanicalSoupi päringute käsitlemine on suurepärane, kuna see suudab automaatselt käsitleda ümbersuunamisi ja järgida lehel olevaid linke, säästes sellega sektsiooni käsitsi kodeerimise vaeva.
Kuna see põhineb kaunil supil, kattuvad mõlema raamatukogu puudused märkimisväärselt. Näiteks puudub sisseehitatud meetod andmeväljundi, puhverserveri pööramise ja JavaScripti renderdamise käsitlemiseks. Ainus ilusa supi probleem, mille MechanicalSoup on lahendanud, on taotluste käsitlemise tugi, mis on lahendatud Pythoni taotluste teegi ümbrise kodeerimisega.
Pythonis veebikraapimine on tehtud lihtsamaks
Python on kahtlemata võimas programmeerimiskeel veebi kraapimiseks, kuid kasutatavad tööriistad on vaid osa probleemist. Kõige silmatorkavam probleem, millega inimesed kaabitsa kodeerimisel kokku puutuvad, on HTML-dokumendi hierarhia õppimine.
Veebilehe struktuuri mõistmine ja elemendi kiire asukoha leidmine on hädavajalikud, kui soovite arendada täiustatud veebikaabitsaid.