Kaltaisesi lukijat auttavat tukemaan MUO: ta. Kun teet ostoksen käyttämällä sivustollamme olevia linkkejä, voimme ansaita kumppanipalkkion. Lue lisää.

Tietojen poimimiseen verkosta on olemassa useita Python-kirjastoja ja -kehyksiä. Jokainen aloittaa tietystä työkalusta, kunnes tajuaa, että se ei ehkä sovi parhaiten heidän seuraavaan projektiinsa. Vaikka on erittäin epätodennäköistä, että käytät kaikkia Python-työkaluja yhdessä projektissa, sinun pitäisi tietää, mitkä työkalut kannattaa pitää käsillä web-kaappaustyökalulaatikossasi.

Tässä ovat parhaat Python-kirjastot, -kehykset ja muut työkalut, joiden avulla voit kaapata tietoja verkosta vaivattomasti.

1. Kaunis keitto

Aloitetaan luettelo parhaalla verkkokaappauskirjastolla aloittelijoille: Kaunis keitto. Se on pohjimmiltaan työkalu, joka poimii tiedot jäsennetyistä HTML- ja XML-tiedostoista muuntamalla asiakirjan Python-objektiksi.

Beautiful Soupin "kauneus" piilee sen yksinkertaisuudessa. Se on helppo asentaa ja voit aloita ensimmäinen verkkokaappausprojektisi

minuuteissa. Beautiful Soup käyttää hierarkkista lähestymistapaa tietojen poimimiseen HTML-dokumentista. Voit poimia elementtejä käyttämällä tunnisteita, luokkia, tunnuksia, nimiä ja muita HTML-attribuutteja.

Enemmän odottaminen Beautiful Soupilta menisi kuitenkin liian pitkälle. Siinä ei ole sisäänrakennettua tukea väliohjelmistoille ja muille edistyneille toiminnoille, kuten välityspalvelimen kierto tai monisäie. Beautiful Soupissa tarvitset kirjastoja HTTP-pyyntöjen lähettämiseen, ladatun asiakirjan jäsentämiseen ja kopioitujen tietojen viemiseen tulostiedostoon.

2. pyynnöt

requests on epäilemättä eniten käytetty Python-kirjasto HTTP-pyyntöjen käsittelyyn. Työkalu kestää tunnuslauseensa: HTTP for Humans™. Se tukee useita HTTP-pyyntötyyppejä, jotka vaihtelevat GET- ja POST-pyynnöistä PATCH- ja DELETE-pyyntöihin. Tämän lisäksi voit hallita lähes kaikkia pyynnön näkökohtia, mukaan lukien otsikot ja vastaukset.

Jos se kuulostaa helpolta, voit olla varma, sillä pyynnöt palvelevat myös edistyneitä käyttäjiä monien ominaisuuksiensa ansiosta. Voit pelata pyynnön kanssa ja muokata sen otsikoita, ladata tiedoston palvelimelle POST-testillä ja käsitellä muun muassa aikakatkaisuja, uudelleenohjauksia ja istuntoja.

pyynnöt liittyvät yleensä Beautiful Soupiin, kun kyse on web-kaappauksesta, koska muissa Python-kehyksissä on sisäänrakennettu tuki HTTP-pyyntöjen käsittelyyn. Saat verkkosivun HTML-koodin lähettämällä GET-pyynnön palvelimelle pyyntöjen avulla, poimimalla tekstitiedot vastauksesta ja välittämällä ne Beautiful Soupille.

3. Scrapy

Kuten nimestä voi päätellä, Scrapy on Python-kehys suurten verkkokaapimien kehittämiseen. Se on sveitsin armeijan veitsi tiedon poimimiseen verkosta. Scrapy hoitaa kaiken pyyntöjen lähettämisestä ja välityspalvelinten toteuttamisesta tiedon poimimiseen ja vientiin.

Toisin kuin Beautiful Soup, Scrapyn todellinen voima on sen hienostunut mekanismi. Mutta älä anna sen monimutkaisuuden pelotella sinua. Scrapy on tämän luettelon tehokkain verkkokaappauskehys nopeuden, tehokkuuden ja ominaisuuksien suhteen. Sen mukana tulee valitsimet, joiden avulla voit valita tietoja HTML-dokumentista XPath- tai CSS-elementtien avulla.

Lisäetu on nopeus, jolla Scrapy lähettää pyyntöjä ja poimii tiedot. Se lähettää ja käsittelee pyyntöjä asynkronisesti, ja tämä erottaa sen muista verkkokaappaustyökaluista.

Perusominaisuuksien lisäksi saat tuen väliohjelmistoille, jotka ovat koukkujen kehys, joka tuo lisätoimintoja oletusarvoiseen Scrapy-mekanismiin. Et voi raaputtaa JavaScript-pohjaisia ​​verkkosivustoja Scrapylla, mutta voit käyttää väliohjelmistoja, kuten scrapy-seleeni, scrapy-splash ja scrapy-scrapingbee toteuttaaksesi nämä toiminnot projektiisi.

Lopuksi, kun olet purkanut tiedot, voit viedä ne useisiin tiedostomuotoihin. CSV, JSON ja XML, muutamia mainitakseni.

Scrapy on yksi monista syistä, miksi Python on paras ohjelmointikieli kaikille web-kaappaajille. Ensimmäisen Scrapy-projektin perustaminen voi viedä jonkin aikaa, varsinkin jos sinulla ei ole kokemusta Python-luokista ja kehyksistä. Scrapyn työnkulku on jaettu useisiin tiedostoihin, ja aloittelijoille tämä saattaa osoittautua ei-toivottua monimutkaisuutta.

4. Seleeni

Jos haluat kaapata dynaamista JavaScriptillä renderöityä sisältöä, tarvitset seleeniä. Monikäyttöisenä verkkotestauskehyksenä Selenium auttaa sinua renderöimään HTML-, CSS- ja JavaScript-koodit sekä poimimaan tarvittavat tiedot. Voit myös jäljitellä todellista käyttäjän vuorovaikutusta koodaamalla näppäimistön ja hiiren toimintoja, mikä on täydellinen pelinmuutos.

Selenium luo selaimen ilmentymän verkko-ohjaimen avulla ja lataa sivun. Joitakin Seleniumin tukemia suosittuja selaimia ovat Google Chrome, Mozilla Firefox, Opera, Microsoft Edge, Apple Safari ja Internet Explorer. Se käyttää CSS- ja XPath-paikantimia, jotka ovat samanlaisia ​​kuin Scrapy-valitsimet, sisällön etsimiseen ja poimimiseen sivun HTML-elementeistä.

Jos sinulla ei ole kokemusta Pythonista, mutta osaat muita ohjelmointikieliä, voit käyttää Seleniumia C#:n, JavaScriptin, PHP: n, Perlin, Rubyn ja Javan kanssa.

Ainoa rajoitus on, että koska Selenium käynnistää verkkoselaimen taustalla, kaavin suorittamiseen tarvittavat resurssit kasvavat merkittävästi, verrattuna Scrapy tai Beautiful Soup. Mutta kun otetaan huomioon seleenin pöytään tuomat lisäominaisuudet, se on täysin perusteltua.

5. urllib

Python urllib -kirjasto on yksinkertainen mutta välttämätön työkalu verkkokaappausarsenaalissasi. Sen avulla voit käsitellä ja käsitellä URL-osoitteita Python-skripteissäsi.

Sopiva urllibin käytännön sovellus on URL-osoitteen muokkaaminen. Harkitse, että olet kaappaamassa useita sivuja sisältävää verkkosivustoa ja sinun on muutettava osaa URL-osoitteesta päästäksesi seuraavalle sivulle.

urllib voi auttaa sinua jäsentämään URL-osoitteen ja jakamaan sen useisiin osiin, joita voit sitten muokata ja purkaa uuden URL-osoitteen luomiseksi. Vaikka kirjaston käyttäminen merkkijonojen jäsentämiseen saattaa tuntua liioitellulta, urllib on hengenpelastaja ihmisille, jotka koodaavat verkkokaapimia huvin vuoksi eivätkä halua joutua tietorakenteiden jyrkästi.

Lisäksi, jos haluat tutkia verkkosivuston robots.txt-tiedostoa, joka on tekstitiedosto, joka sisältää Google-indeksointirobotin ja muiden kaavinten käyttösäännöt, urllib voi auttaa sinua myös tässä. On suositeltavaa seurata verkkosivuston robots.txt-tiedostoa ja raaputtaa vain ne sivut, jotka ovat sallittuja.

6. JSON-, CSV- ja XML-kirjastot

Koska Beautiful Soupissa tai Seleniumissa ei ole sisäänrakennettuja ominaisuuksia tietojen viemiseen, tarvitset Python-kirjaston viedä tiedot JSON-tiedostoon, CSV- tai XML-tiedosto. Onneksi on olemassa lukuisia kirjastoja, joiden avulla voit saavuttaa tämän, ja yksinkertaisimpia kirjastoja suositellaan, nimittäin json, csv ja xml JSON-, CSV- ja XML-tiedostoille.

Tällaisten kirjastojen avulla voit luoda tiedoston, lisätä siihen tietoja ja lopuksi viedä tiedoston paikalliseen tallennustilaan tai etäpalvelimeen.

7. Mekaaninen keitto

Mekaaninen keitto? Onko tämä halpa Beautiful Soup ripoff? Ei. Inspiroitunut Koneellistaa Python-pyyntöihin ja Beautiful Soupiin perustuva MechanicalSoup auttaa automatisoimaan ihmisten käyttäytymisen ja poimimaan tietoja verkkosivulta. Voit pitää sitä kauniin keiton ja seleenin puolivälissä. Ainoa saalis? Se ei käsittele JavaScriptiä.

Vaikka nimet ovat samankaltaisia, MechanicalSoupin syntaksi ja työnkulku ovat erittäin erilaisia. Luot selainistunnon MechanicalSoupilla ja kun sivu ladataan, käytät Beautiful Soupin menetelmiä, kuten löytö() ja etsi_kaikki() poimimaan tietoja HTML-dokumentista.

Toinen MechanicalSoupin vaikuttava ominaisuus on, että sen avulla voit täyttää lomakkeita käsikirjoituksen avulla. Tämä on erityisen hyödyllistä, kun joudut syöttämään jotain kenttään (esimerkiksi hakupalkkiin) päästäksesi sivulle, jonka haluat kaapata. MechanicalSoupin pyyntöjen käsittely on upeaa, koska se pystyy automaattisesti käsittelemään uudelleenohjauksia ja seuraamaan sivulla olevia linkkejä, mikä säästää osion manuaalisen koodaamisen vaivaa.

Koska se perustuu Beautiful Soupiin, molempien kirjastojen haitoissa on huomattavaa päällekkäisyyttä. Ei esimerkiksi sisäänrakennettua menetelmää tietojen tuottamisen, välityspalvelimen kierron ja JavaScript-renderöinnin käsittelemiseksi. Ainoa Beautiful Soup -ongelma, jonka MechanicalSoup on korjannut, on tuki pyyntöjen käsittelylle, joka on ratkaistu koodaamalla Python-pyyntökirjaston kääre.

Web-kaappaus Pythonissa on tehty helpommaksi

Python on epäilemättä tehokas ohjelmointikieli verkon kaapimiseen, mutta käytetyt työkalut ovat vain osa ongelmaa. Näkyvin ongelma, jonka ihmiset kohtaavat kaavinta koodattaessa, on HTML-dokumenttihierarkian oppiminen.

Web-sivun rakenteen ymmärtäminen ja elementin nopean paikallistamisen tunteminen on välttämätöntä, jos haluat kehittää edistyneitä verkkokaapimia.