Norite išmokti rinkti žiniatinklį naudodami Python, bet nežinote, ar kitam projektui naudoti „Beautiful Soup“, „Selenium“ ar „Scrapy“? Nors visos šios Python bibliotekos ir sistemos yra savaime galingos, jos netenkina visų žiniatinklio rinkimo poreikių, todėl svarbu žinoti, kurį įrankį turėtumėte naudoti konkrečiam darbui darbas.
Pažvelkime į skirtumus tarp Beautiful Soup, Scrapy ir Selenium, kad galėtumėte priimti protingą sprendimą prieš pradėdami kitą Python žiniatinklio grandymo projektą.
1. Naudojimo paprastumas
Jei esate pradedantysis, pirmiausia turite turėti biblioteką, kurią būtų lengva išmokti ir naudoti. „Beautiful Soup“ siūlo visus pradinius įrankius, kurių reikia norint naršyti žiniatinklį, ir tai ypač svarbu naudinga žmonėms, kurie turi minimalią Python patirtį, bet nori pradėti dirbti su žiniatinkliu grandymas.
Vienintelis įspėjimas yra tai, kad dėl savo paprastumo „Beautiful Soup“ nėra tokia galinga, kaip „Scrapy“ ar „Selenium“. Programuotojai, turintys kūrimo patirties, gali lengvai įvaldyti ir Scrapy, ir Selenium, bet pradedantiesiems, Pirmojo projekto kūrimas gali užtrukti daug laiko, jei jie pasirinks naudoti šiuos karkasus, o ne Beautiful Sriuba.
Norėdami nubraukti pavadinimo žymos turinį example.com naudodami gražią sriubą, naudokite šį kodą:
url = "https://example.com/"
res = prašymai.get (url).tekstas
sriuba = BeautifulSoup (res, 'html.parser')
pavadinimas = sriuba.rasti("titulą").tekstas
spausdinti(pavadinimas)
Norėdami pasiekti panašių rezultatų naudodami seleną, parašykite:
url = "https://example.com"
vairuotojas = žiniatinklio tvarkyklė. Chrome ("kelias/į/chromedriver")
vairuotojas.gauti(url)
title = driver.find_element (pagal TAG_NAME, "titulą").get_attribute('tekstą')
spausdinti(pavadinimas)
„Scrapy“ projekto failų struktūra susideda iš kelių failų, o tai dar labiau apsunkina projektą. Šis kodas nubraukia pavadinimą iš example.com:
importuoti skrebučiaiklasėTitle Spider(skraidymas. voras):
vardas = 'titulą'
start_urls = ['https://example.com']
defanalizuoti(pats, atsakymas):
derlius {
'vardas': atsakymas.css('titulą'),
}
Jei norite išgauti duomenis iš paslaugos, kuri siūlo oficialią API, tai gali būti protingas sprendimas naudoti API, o ne kurti žiniatinklio grandiklį.
2. Šveitimo greitis ir lygiagretumas
Iš trijų Scrapy yra aiškus nugalėtojas, kai kalbama apie greitį. Taip yra todėl, kad pagal numatytuosius nustatymus jis palaiko lygiagretavimą. Naudodami „Scrapy“ galite siųsti kelias HTTP užklausas vienu metu, o kai scenarijus atsisiunčia HTML kodą pirmajam užklausų rinkiniui, jis yra paruoštas siųsti kitą paketą.
Naudodami „Beautiful Soup“ galite naudoti gijų biblioteką vienu metu vykstančioms HTTP užklausoms siųsti, tačiau tai nėra patogu ir turėsite išmokti kelių gijų kūrimo. Naudojant Seleną neįmanoma pasiekti lygiagretumo nepaleidus kelių naršyklės egzempliorių.
Jei vertintumėte šiuos tris žiniatinklio grandymo įrankius pagal greitį, greičiausias yra „Scrapy“, po to seka „Beautiful Soup“ ir „Selenium“.
3. Atminties naudojimas
Selenas yra naršyklės automatizavimo API, kuri rado savo programas tinklo grandymo laukas. Kai naudojate seleną svetainei išgryninti, tai sukuria begalvį naršyklės egzempliorių, kuris veikia fone. Dėl to selenas yra daug išteklių reikalaujantis įrankis, palyginti su „Beautiful Soup“ ir „Scrapy“.
Kadangi pastarieji veikia tik komandinėje eilutėje, jie naudoja mažiau sistemos išteklių ir siūlo geresnį našumą nei Selenas.
4. Priklausomybės reikalavimai
„Beautiful Soup“ yra analizės įrankių rinkinys, padedantis išgauti duomenis iš HTML ir XML failų. Jis siunčiamas be nieko kito. Turite naudoti tokias bibliotekas kaip prašymus arba urllib pateikti HTTP užklausas, integruotus analizatorius HTML/XML analizei ir papildomas bibliotekas tarpiniams serveriams arba duomenų bazės palaikymui įgyvendinti.
Kita vertus, „Scrapy“ ateina kartu su visa šneka. Gaunate įrankius, skirtus siųsti užklausas, analizuoti atsisiųstą kodą, atlikti operacijas su išgautais duomenimis ir saugoti nuskaitytą informaciją. Galite pridėti kitų „Scrapy“ funkcijų naudodami plėtinius ir tarpinę programinę įrangą, bet tai bus vėliau.
Naudodami Seleną atsisiunčiate žiniatinklio tvarkyklę naršyklei, kurią norite automatizuoti. Norint įdiegti kitas funkcijas, pvz., duomenų saugojimą ir tarpinio serverio palaikymą, jums reikės trečiųjų šalių modulių.
5. Dokumentacijos kokybė
Apskritai, kiekviena projekto dokumentacija yra gerai struktūrizuota ir aprašomas kiekvienas metodas naudojant pavyzdžius. Tačiau projekto dokumentacijos efektyvumas labai priklauso ir nuo skaitytojo.
„Beautiful Soup“ dokumentacija yra daug geresnė pradedantiesiems, kurie pradeda rinkti žiniatinklį. Be abejo, Selenium ir Scrapy turi išsamią dokumentaciją, tačiau techninis žargonas gali sugauti daugybę naujokų.
Jei turite programavimo sąvokų ir terminų patirties, bet kurį iš trijų dokumentų būtų lengva perskaityti.
6. Plėtinių ir tarpinės programinės įrangos palaikymas
„Scrapy“ yra labiausiai išplečiama žiniatinklio grandymo „Python“ sistema, taškas. Jis palaiko tarpinę programinę įrangą, plėtinius, tarpinius serverius ir dar daugiau, taip pat padeda sukurti tikrinimo programą didelio masto projektams.
Galite sukurti patikimus ir veiksmingus tikrinimo programas, įdiegę Scrapy tarpinę programinę įrangą, kuri iš esmės yra kabliukai, kurie prideda tinkintų funkcijų prie numatytojo sistemos mechanizmo. Pavyzdžiui, „HttpErrorMiddleware“ pasirūpina HTTP klaidomis, todėl vorams nereikės su jomis susidurti apdorojant užklausas.
Tarpinė programinė įranga ir plėtiniai yra išskirtiniai „Scrapy“, tačiau panašių rezultatų galite pasiekti naudodami „Beautiful Soup“ ir „Selenium“ naudodami papildomas „Python“ bibliotekas.
7. „JavaScript“ atvaizdavimas
Selenas turi vieną naudojimo atvejį, kai jis pranoksta kitas žiniatinklio duomenų rinkimo bibliotekas, ty „JavaScript“ įgalintų svetainių grandymą. Nors „JavaScript“ elementus galite nubraukti naudodami „Scrapy“ tarpinę programinę įrangą, „Selenium“ darbo eiga yra pati lengviausia ir patogiausia.
Naudodami naršyklę įkeliate svetainę, sąveikaujate su ja spustelėdami ir paspaudę mygtukus ir kada turite turinį, kurį reikia nubraukti ekrane, išskleiskite jį naudodami Selenium CSS ir XPath selektoriai.
„Beautiful Soup“ gali pasirinkti HTML elementus naudodami XPath arba CSS parinkiklius. Tačiau jis nesiūlo „JavaScript“ pateiktų elementų išgryninimo tinklalapyje funkcijų.
Lengvas žiniatinklio rinkimas naudojant Python
Internetas pilnas neapdorotų duomenų. Žiniatinklio rinkimas padeda paversti šiuos duomenis reikšminga informacija, kurią galima tinkamai panaudoti. Selenas tikriausiai yra jūsų saugiausias pasirinkimas, jei norite išgryninti svetainę su „JavaScript“ arba prieš išgaunant duomenis reikia suaktyvinti kai kuriuos ekrano elementus.
„Scrapy“ yra visavertė žiniatinklio rinkimo sistema, skirta visiems jūsų poreikiams, nesvarbu, ar norite sukurti mažą skaitytuvą, ar didelio masto grandiklį, kuris pakartotinai naršo internete, kad gautų atnaujintus duomenis.
Galite naudoti Gražią sriubą, jei esate pradedantysis arba jums reikia greitai sukurti grandiklį. Kad ir kokią sistemą ar biblioteką naudotumėte, su Python lengva pradėti mokytis žiniatinklio rinkimo.