Verkkosivujen kaavinta ja botit · Oppitunti

Hajautettu scraping Scrapylla

Ottakaa haltuun Scrapy, tehokas Python-kehys laajamittaisten ja hajautettujen web crawlerien ja scraperien rakentamiseen.

Oppitunti 1/412 vaihetta

Hajautettu scraping Scrapylla on ilmainen Verkkosivujen kaavinta ja botit-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Verkkosivujen kaavinta ja botit-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Verkkosivujen kaavinta ja botit-kurssilla on yhteensä 4 oppituntia.

Mikä Scrapy on?

Scrapy on tehokas ja nopea avoimen lähdekoodin web-crawling- ja web-scraping-kehys Pythonille. Se on suunniteltu helpottamaan suurten tiedonpoimintaprojektien rakentamista ja tehostamaan niitä.

Voitte ajatella sitä kokonaisena ekosysteeminä verkkosivujen hakemiseen, niiden sisällön jäsentämiseen ja poimitun datan tallentamiseen.

Miksi käyttää Scrapyä?

Scrapy tarjoaa useita etuja erityisesti monimutkaisiin tai laajoihin scraping-tehtäviin:

  • Asynkroninen käsittely: Käsittelee pyynnöt samanaikaisesti, mikä tekee siitä erittäin nopean.
  • Sisäänrakennetut työkalut: Tarjoaa tehokkaat mekanismit HTML:n ja XML:n jäsentämiseen CSS-valitsimilla ja XPathilla.
  • Laajennettavuus: Toimintaa voi mukauttaa helposti middleware-komponenteilla ja putkilla.
  • Valmius hajautettuun käyttöön: Arkkitehtuuri on suunniteltu skaalautumaan useille koneille.

Scrapy-projektin rakenne

Kun aloitatte uuden Scrapy-projektin, se luo tiedostojen järjestämistä varten vakiomuotoisen hakemistorakenteen. Tämä rakenne auttaa pitämään scraping-logiikan siistinä ja helposti ylläpidettävänä.

Projekti luodaan yleensä komennolla: scrapy startproject myproject

  • myproject/spiders/: Sisältää spider-tiedostot.
  • myproject/items.py: Määrittelee kaavittavat tiedot.
  • myproject/pipelines.py: Käsittelee kaavitut itemit.
  • myproject/settings.py: Määrittää koko projektin asetukset.

Spiderit: keskeiset crawlerit

Spiderit ovat luokkia, joiden avulla määrittelette, miten Scrapy käy sivuston läpi ja poimii tietoja. Jokaisella spiderillä on yksilöllinen nimi, ja siinä määritellään yksi tai useampi aloituspiste crawlingia varten.

Spiderin tärkeimmät osat ovat:

  • name: Spiderin yksilöllinen tunniste.
  • start_urls: Luettelo URL-osoitteista, joista spider aloittaa crawlingin.
  • parse()-metodi: Tätä metodia kutsutaan jokaiselle kohteesta start_urls ladatulle vastaukselle. Siihen kirjoitetaan tietojen poimintalogiikka.

Perusspiderin rakentaminen

Tarkastellaan yksinkertaista spider-määrittelyä. Tämä spider hakee sisällön yhdestä URL-osoitteesta ja tulostaa vahvistuksen. Todellisessa tilanteessa parse-metodi sisältäisi yksityiskohtaisen poimintalogiikan.

import scrapy

class MyFirstSpider(scrapy.Spider):
    name = 'first_spider'
    start_urls = ['http://quotes.toscrape.com/']

    def parse(self, response):
        # This method is called for each page in start_urls
        # For now, we'll just log that a page was parsed.
        # In a real spider, you'd extract data here.
        self.log(f'Visited {response.url}')

Itemit: datan jäsentäminen

Itemit ovat yksinkertaisia luokkia, joiden avulla määrittelette kaavittavien tietojen rakenteen. Ne muistuttavat sanakirjoja, mutta tarjoavat enemmän rakennetta ja ovat helpompia käsitellä.

Määrittelemällä Itemin ilmoitatte selkeästi, mitä kenttiä, kuten 'title', 'author' ja 'price', odotatte poimivanne verkkosivulta.

import scrapy

class QuoteItem(scrapy.Item):
    # Define the fields for your item here
    text = scrapy.Field()
    author = scrapy.Field()
    tags = scrapy.Field()

# In your spider, you would create instances of this Item
# and populate its fields with extracted data.

Item-putket: datan käsittely

Item-putket ovat komponentteja, jotka käsittelevät Itemin sen jälkeen, kun spider on kaapinut sen. Ne ovat erittäin hyödyllisiä esimerkiksi seuraavissa tehtävissä:

  • HTML-tunnisteiden tai tarpeettomien merkkien puhdistaminen.
  • Poimittujen tietojen tarkistaminen.
  • Itemin tallentaminen tietokantaan (SQL, NoSQL).
  • Itemien tallentaminen tiedostoihin (CSV, JSON).

Putket otetaan käyttöön projektin settings.py-tiedostossa.

class MyDataPipeline:
    def process_item(self, item, spider):
        # Example: Convert author's name to uppercase
        if 'author' in item:
            item['author'] = item['author'].upper()
        return item

# In settings.py, you would enable this:
# ITEM_PIPELINES = {
#    'myproject.pipelines.MyDataPipeline': 300,
# }

Tietojen poiminnan valitsimet

Spiderin parse()-metodissa Scrapy tarjoaa tehokkaat työkalut tiettyjen tietojen poimintaan: CSS-valitsimet ja XPath-lausekkeet.

  • CSS-valitsimet: Käyttävät syntaksia, joka muistuttaa CSS-tyylitiedostoissa käytettävää syntaksia (esim. .quote-text::text).
  • XPath: Kyselykieli XML- tai HTML-dokumentin solmujen valitsemiseen (esim. //span[@class='author']/text()).

Molemmat soveltuvat erittäin hyvin elementtien tarkkaan kohdentamiseen sekä niiden sisällön tai attribuuttien poimintaan.

Scrapy-spiderin suorittaminen

Kun spider on määritelty ja projekti määritetty, suoritatte sen komentoriviltä. Siirtykää projektin juurihakemistoon, jossa scrapy.cfg sijaitsee.

Komento scrapy crawl <spider_name> käynnistää scraping-prosessin. Voitte myös määrittää tulostusmuotoja.

# To run your spider named 'my_first_spider':
# Open your terminal and navigate to your project folder.
# Type the following command:
# scrapy crawl my_first_spider

# To save the output to a JSON file:
# scrapy crawl my_first_spider -o output.json

Scrapyn skaalautuvuus

Scrapyn arkkitehtuuri tekee siitä luonnostaan sopivan hajautettuun scraping-käyttöön. Sen asynkroninen rakenne mahdollistaa useiden pyyntöjen tehokkaan käsittelyn, ja komponentit, kuten Scheduler ja Downloader, voidaan määrittää hajautettuja ympäristöjä varten.

Täysin hajautettu käyttöönotto vaatii usein lisätyökaluja, kuten Scrapy-Redisin tai viestijonoja, mutta Scrapy tarjoaa perustan erittäin skaalautuvien web-scraping-ratkaisujen rakentamiseen.

Scrapy-komponenttien tietovisa

Mitkä seuraavista ovat keskeisiä komponentteja, jotka yleensä määritellään tai määritetään Scrapy-projektissa?

Scrapy-kertaus

Tässä oppitunnissa tutustuimme tehokkaaseen Python-kehykseen Scrapyyn web-scrapingia varten. Käsittelimme seuraavia aiheita:

  • Scrapyn käytön hyödyt skaalautuvissa projekteissa.
  • Projektin vakiomuotoinen rakenne ja sen keskeiset komponentit.
  • Spiderin määrittäminen verkkosivujen läpikäyntiä varten.
  • Itemien rooli kaavitun datan jäsentämisessä.
  • Item-putkien tehtävä datan käsittelyssä.
  • Scrapyn rakenteen tuki hajautetulle scrapingille.

Scrapyn avulla voitte rakentaa vankkoja ja tehokkaita tiedonkeruujärjestelmiä lähes kaikkiin web-scraping-haasteisiin.

Aloita maksutta

Opi Python tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
12
Oppitunnit
48

Usein kysytyt kysymykset

Onko oppitunti ”Hajautettu scraping Scrapylla” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Verkkosivujen kaavinta ja botit-oppimispolun 3 oppituntia, myös oppitunnin “Hajautettu scraping Scrapylla”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Verkkosivujen kaavinta ja botit-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Hajautettu scraping Scrapylla”?

Ottakaa haltuun Scrapy, tehokas Python-kehys laajamittaisten ja hajautettujen web crawlerien ja scraperien rakentamiseen. Harjoittelet Verkkosivujen kaavinta ja botit-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Verkkosivujen kaavinta ja botit-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Verkkosivujen kaavinta ja botit-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”Hajautettu scraping Scrapylla”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Verkkosivujen kaavinta ja botit-oppitunnilla?

Kyllä. Jokainen Verkkosivujen kaavinta ja botit-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Hajautettu scraping Scrapylla
  2. Cloud Functions scrapingia varten
  3. Valvonta ja lokitus
  4. Tehtävien jakaminen jonojen avulla
← Takaisin: Verkkosivujen kaavinta ja botit