Tādi lasītāji kā jūs palīdz atbalstīt MUO. Veicot pirkumu, izmantojot saites mūsu vietnē, mēs varam nopelnīt filiāles komisiju. Lasīt vairāk.

Vai vēlaties apgūt tīmekļa skrāpēšanu, izmantojot Python, taču neesat apmulsis par to, vai nākamajam projektam izmantot Beautiful Soup, Selenium vai Scrapy? Lai gan visas šīs Python bibliotēkas un ietvari pašas par sevi ir spēcīgas, tās nav piemērotas visas tīmekļa skrāpēšanas vajadzības, un tāpēc ir svarīgi zināt, kurš rīks ir jāizmanto konkrētam rīkam darbs.

Apskatīsim atšķirības starp Beautiful Soup, Scrapy un Selenium, lai jūs varētu pieņemt saprātīgu lēmumu pirms nākamā Python tīmekļa skrāpēšanas projekta uzsākšanas.

1. Lietošanas ērtums

Ja esat iesācējs, jūsu pirmā prasība būtu viegli apgūstama un lietojama bibliotēka. Skaistā zupa piedāvā visus elementāros rīkus, kas nepieciešami, lai skrāpētu tīmekli, un tas ir īpaši noderīga cilvēkiem, kuriem ir minimāla pieredze darbā ar Python, bet kuri vēlas sākt strādāt ar tīmekli skrāpējot.

Vienīgais brīdinājums ir tāds, ka tā vienkāršības dēļ Beautiful Soup nav tik spēcīga kā Scrapy vai Selenium. Programmētāji ar izstrādes pieredzi var viegli apgūt gan Scrapy, gan Selenium, bet iesācējiem, pirmā projekta izveide var aizņemt daudz laika, ja viņi izvēlas izmantot šos karkasus, nevis Beautiful Zupa.

instagram viewer

Lai nokasītu virsraksta taga saturu vietnē example.com, izmantojot vietni Beautiful Soup, izmantojiet šādu kodu:

url = "https://example.com/"
res = requests.get (url).text
zupa = BeautifulSoup (res, 'html.parser')
virsraksts = zupa.atrast("virsraksts").teksts
drukāt(nosaukums)

Lai sasniegtu līdzīgus rezultātus, izmantojot selēnu, jums jāraksta:

url = "https://example.com"
draiveris = tīmekļa draiveris. Chrome("ceļš/uz/chromeddriver")
vadītājs.gūt(url)
title = driver.find_element (autors TAG_NAME, "virsraksts").get_attribute('tekstu')
drukāt(nosaukums)

Scrapy projekta failu struktūra sastāv no vairākiem failiem, kas palielina tā sarežģītību. Šis kods nokasa nosaukumu no example.com:

imports skrebīgs

klasēNosaukumsZirneklis(skrāpēts. Zirneklis):
vārds = 'virsraksts'
start_urls = ['https://example.com']

defparsēt(pats, atbilde):
raža {
'nosaukums': atbilde.css('virsraksts'),
}

Ja vēlaties iegūt datus no pakalpojuma, kas piedāvā oficiālu API, tas varētu būt saprātīgs lēmums izmantojiet API, nevis izstrādājiet tīmekļa skrāpi.

2. Skrāpēšanas ātrums un paralēlizācija

No trim, Scrapy ir nepārprotams uzvarētājs ātruma ziņā. Tas ir tāpēc, ka tas pēc noklusējuma atbalsta paralēlizāciju. Izmantojot Scrapy, varat vienlaikus nosūtīt vairākus HTTP pieprasījumus, un, kad skripts ir lejupielādējis HTML kodu pirmajai pieprasījumu kopai, tas ir gatavs sūtīt citu grupu.

Izmantojot Beautiful Soup, varat izmantot pavedienu bibliotēku, lai nosūtītu vienlaikus HTTP pieprasījumus, taču tas nav ērti, un, lai to izdarītu, jums būs jāapgūst vairākpavedienu izmantošana. Programmā Selenium nav iespējams panākt paralēlizāciju, nepalaižot vairākus pārlūkprogrammas gadījumus.

Ja jūs ierindojat šos trīs tīmekļa skrāpēšanas rīkus ātruma ziņā, ātrākais ir Scrapy, kam seko Beautiful Soup un Selenium.

3. Atmiņas lietojums

Selēns ir pārlūkprogrammas automatizācijas API, kas ir atradusi savas lietojumprogrammas tīmekļa skrāpēšanas lauks. Izmantojot Selēnu, lai notīrītu vietni, tas rada bezgalvu pārlūkprogrammas gadījumu, kas darbojas fonā. Tas padara Selēnu par resursietilpīgu rīku, salīdzinot ar Beautiful Soup un Scrapy.

Tā kā pēdējie pilnībā darbojas komandrindā, tie izmanto mazāk sistēmas resursu un piedāvā labāku veiktspēju nekā Selenium.

4. Atkarības prasības

Beautiful Soup ir parsēšanas rīku kolekcija, kas palīdz iegūt datus no HTML un XML failiem. Tas tiek piegādāts ar neko citu. Jums ir jāizmanto tādas bibliotēkas kā pieprasījumus vai urllib lai veiktu HTTP pieprasījumus, iebūvētos parsētājus HTML/XML parsēšanai un papildu bibliotēkas, lai ieviestu starpniekserverus vai datu bāzes atbalstu.

No otras puses, Scrapy nāk ar visu šebanu. Jūs saņemat rīkus, lai nosūtītu pieprasījumus, parsētu lejupielādēto kodu, veiktu darbības ar iegūtajiem datiem un saglabātu izkopto informāciju. Varat pievienot Scrapy citas funkcijas, izmantojot paplašinājumus un starpprogrammatūru, taču tas būs vēlāk.

Izmantojot Selenium, jūs lejupielādējat tīmekļa draiveri pārlūkprogrammai, kuru vēlaties automatizēt. Lai ieviestu citas funkcijas, piemēram, datu glabāšanu un starpniekservera atbalstu, ir nepieciešami trešās puses moduļi.

5. Dokumentācijas kvalitāte

Kopumā katra projekta dokumentācija ir labi strukturēta un apraksta katru metodi, izmantojot piemērus. Taču projekta dokumentācijas efektivitāte lielā mērā ir atkarīga arī no lasītāja.

Skaistās zupas dokumentācija ir daudz labāka iesācējiem, kuri sāk ar tīmekļa skrāpēšanu. Selenium un Scrapy, bez šaubām, ir detalizēta dokumentācija, taču tehniskais žargons var uztvert daudzus jaunpienācējus, kas nav aizsardzīgi.

Ja jums ir pieredze programmēšanas koncepciju un terminu lietošanā, tad jebkura no trim dokumentācijām būtu vienkārša, lai izlasītu.

6. Atbalsts paplašinājumiem un starpprogrammatūrai

Scrapy ir visvairāk paplašināms tīmekļa kasīšanas Python ietvars, punkts. Tā atbalsta starpprogrammatūru, paplašinājumus, starpniekserverus un daudz ko citu, kā arī palīdz izstrādāt rāpuļprogrammu liela mēroga projektiem.

Varat rakstīt drošas un efektīvas rāpuļprogrammas, Scrapy ieviešot starpprogrammatūru, kas būtībā ir āķi, kas pievieno pielāgotu funkcionalitāti ietvara noklusējuma mehānismam. Piemēram, HttpErrorMiddleware rūpējas par HTTP kļūdām, lai zirnekļiem nebūtu ar tām jātiek galā, apstrādājot pieprasījumus.

Starpprogrammatūra un paplašinājumi ir tikai Scrapy, taču līdzīgus rezultātus varat sasniegt ar Beautiful Soup un Selenium, izmantojot papildu Python bibliotēkas.

7. JavaScript renderēšana

Selēnam ir viens lietošanas gadījums, kad tas pārspēj citas tīmekļa skrāpēšanas bibliotēkas, tas ir, JavaScript iespējotu vietņu nokasīšana. Lai gan JavaScript elementus varat nokasīt, izmantojot Scrapy starpprogrammatūru, Selēna darbplūsma ir vienkāršākā un ērtākā no visām.

Jūs izmantojat pārlūkprogrammu, lai ielādētu vietni, mijiedarbotos ar to, izmantojot klikšķus un pogu nospiešanu, un kad jums ir saturs, kas jāizskrāpē uz ekrāna, izņemiet to, izmantojot Selenium CSS un XPath atlasītāji.

Skaista zupa var atlasīt HTML elementus, izmantojot XPath vai CSS atlasītājus. Tomēr tas nepiedāvā funkcionalitāti, lai tīmekļa lapā nokasītu JavaScript renderētus elementus.

Vienkārša tīmekļa nokasīšana, izmantojot Python

Internets ir pilns ar neapstrādātiem datiem. Tīmekļa skrāpēšana palīdz pārvērst šos datus jēgpilnā informācijā, ko var lietderīgi izmantot. Selēns, visticamāk, ir jūsu drošākā izvēle, ja vēlaties notīrīt vietni ar JavaScript vai pirms datu iegūšanas ir jāaktivizē daži ekrānā redzamie elementi.

Scrapy ir pilnvērtīga tīmekļa kopēšanas sistēma visām jūsu vajadzībām neatkarīgi no tā, vai vēlaties rakstīt nelielu rāpuļprogrammu vai liela mēroga skrāpi, kas atkārtoti pārmeklē internetu, lai iegūtu atjauninātus datus.

Varat izmantot Beautiful Soup, ja esat iesācējs vai jums ātri jāizstrādā skrāpis. Neatkarīgi no tā, kādu ietvaru vai bibliotēku izmantojat, ir viegli sākt apgūt tīmekļa kopēšanu, izmantojot Python.