Skaista zupa pret skrepi pret selēnu: kuru tīmekļa skrāpēšanas rīku jums vajadzētu izmantot?

Skaista zupa pret skrepi pret selēnu: kuru tīmekļa skrāpēšanas rīku jums vajadzētu izmantot?
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 jaudīgas, tās neapmierina visas tīmekļa kopšanas vajadzības, un tāpēc ir svarīgi zināt, kurš rīks jāizmanto konkrētam darbam.





DIENAS VIDEO MAKEUSEOF

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. Vienkārša lietošana

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





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, taču iesācējiem pirmā projekta izveide var aizņemt daudz laika, ja viņi izvēlas izmantot šos ietvarus, nevis Beautiful Soup.

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
soup = BeautifulSoup(res, 'html.parser')
title = soup.find("title").text
print(title)

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

jūs izmantojat produktivitātes lietotnes savā ipad
url = "https://example.com"
driver = webdriver.Chrome("path/to/chromedriver")
driver.get(url)
title = driver.find_element(By.TAG_NAME, "title").get_attribute('text')
print(title)

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





import scrapy

class TitleSpider(scrapy.Spider):
name = 'title'
start_urls = ['https://example.com']

def parse(self, response):
yield {
'name': response.css('title'),
}

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 kliedzot 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

  detalizēta skrāpēšanas dokumentācija

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. Paplašinājumu un starpprogrammatūras atbalsts

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.

Windows 7 operētājsistēma nav atrasta

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

  javascript kods, kas rakstīts koda redaktorā

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, noklikšķinot un nospiežot pogas, un, kad ekrānā ir skrāpējamais saturs, izņemiet to, izmantojot Selenium CSS un XPath atlasītājus.

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. .