Webscraping en bots · Les

Gedistribueerd scrapen met Scrapy

Beheers Scrapy, een krachtig Python-framework voor het bouwen van grootschalige, gedistribueerde webcrawlers en scrapers.

Les 1 van 412 stappen

Gedistribueerd scrapen met Scrapy is een gratis Webscraping en bots-les op CoddyKit. Dit is les 1 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Webscraping en bots. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Webscraping en bots bevat in totaal 4 lessen.

Wat is Scrapy?

Scrapy is een krachtig en snel opensourceframework voor webcrawling en webscraping in Python. Het is ontworpen om het bouwen van grootschalige projecten voor gegevensextractie veel eenvoudiger en efficiënter te maken.

Zie het als een compleet ecosysteem voor het ophalen van webpagina's, het parseren van hun inhoud en het opslaan van de geëxtraheerde gegevens.

Waarom Scrapy gebruiken?

Scrapy biedt verschillende voordelen, vooral voor complexe of grootschalige scrapingtaken:

  • Asynchrone verwerking: Verwerkt verzoeken gelijktijdig, waardoor het zeer snel is.
  • Ingebouwde hulpmiddelen: Biedt robuuste mechanismen voor het parseren van HTML/XML met CSS-selectors en XPath.
  • Uitbreidbaarheid: Pas gedrag eenvoudig aan met middleware en verwerkingspijplijnen.
  • Geschikt voor distributie: Ontworpen met een architectuur die over meerdere machines kan worden geschaald.

Structuur van een Scrapy-project

Wanneer je een nieuw Scrapy-project start, wordt een standaard mappenstructuur gemaakt om je bestanden te ordenen. Deze structuur helpt om je scrapinglogica overzichtelijk en onderhoudbaar te houden.

Je maakt doorgaans een project met de opdracht: scrapy startproject myproject

  • myproject/spiders/: Bevat je spiderbestanden.
  • myproject/items.py: Definieert de gegevens die je wilt scrapen.
  • myproject/pipelines.py: Verwerkt gescrapete items.
  • myproject/settings.py: Configureert projectbrede instellingen.

Spiders: de kerncrawlers

Spiders zijn klassen die je definieert om Scrapy te vertellen hoe het een site moet crawlen en gegevens moet extraheren. Elke spider heeft een unieke naam en definieert een beginpunt (of meerdere beginpunten) voor het crawlen.

De belangrijkste onderdelen van een spider zijn:

  • name: Een unieke identificatie voor je spider.
  • start_urls: Een lijst met URL's waar de spider begint met crawlen.
  • De parse()-methode: Deze methode wordt aangeroepen voor elke gedownloade reactie van de start_urls. Hier schrijf je de logica voor gegevensextractie.

Een eenvoudige spider bouwen

Laten we een eenvoudige spiderdefinitie bekijken. Deze spider is ontworpen om inhoud van één URL op te halen en een bevestiging af te drukken. In een echte situatie zou de methode parse gedetailleerde extractielogica bevatten.

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}')

Items: je gegevens structureren

Items zijn eenvoudige klassen waarmee je de structuur kunt definiëren van de gegevens die je wilt scrapen. Ze lijken op woordenboeken, maar bieden meer structuur en zijn gemakkelijker te gebruiken.

Door een Item te definiëren, geef je duidelijk aan welke velden (zoals 'title', 'author' en 'price') je uit een webpagina verwacht te extraheren.

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-pijplijnen: gegevensverwerking

Item Pipelines zijn onderdelen die een Item verwerken nadat het door een spider is gescrapet. Ze zijn bijzonder nuttig voor verschillende taken:

  • HTML-tags of ongewenste tekens opschonen.
  • Geëxtraheerde gegevens valideren.
  • Het item opslaan in een database (SQL, NoSQL).
  • Items opslaan in bestanden (CSV, JSON).

Je activeert verwerkingspijplijnen in het settings.py-bestand van je project.

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,
# }

Selectors voor gegevensextractie

In de parse()-methode van je spider biedt Scrapy krachtige hulpmiddelen om specifieke gegevens te extraheren: CSS-selectors en XPath-expressies.

  • CSS-selectors: Gebruiken een syntaxis die lijkt op wat je in CSS-stylesheets vindt (bijvoorbeeld .quote-text::text).
  • XPath: Een querytaal voor het selecteren van knooppunten in een XML- of HTML-document (bijvoorbeeld //span[@class='author']/text()).

Beide zijn zeer effectief om elementen nauwkeurig te vinden en hun inhoud of attributen te extraheren.

Een Scrapy-spider uitvoeren

Nadat je je spider hebt gedefinieerd en je project hebt ingesteld, voer je deze uit vanaf de opdrachtregel. Ga naar de hoofdmap van je project (waar scrapy.cfg staat).

Met de opdracht scrapy crawl <spider_name> start je het scrapingproces. Je kunt ook uitvoerindelingen opgeven.

# 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

De schaalbaarheid van Scrapy

Door de architectuur is Scrapy van nature geschikt voor gedistribueerd scrapen. Dankzij het asynchrone ontwerp kan het veel verzoeken efficiënt verwerken, en onderdelen zoals de Scheduler en Downloader kunnen worden geconfigureerd voor gedistribueerde opstellingen.

Hoewel voor een volledig gedistribueerde implementatie vaak aanvullende hulpmiddelen nodig zijn (zoals Scrapy-Redis of berichtenwachtrijen), biedt Scrapy het fundament voor het bouwen van zeer schaalbare oplossingen voor webscraping.

Quiz over Scrapy-onderdelen

Welke van de volgende onderdelen zou je doorgaans definiëren of configureren binnen een Scrapy-project?

Samenvatting van Scrapy

In deze les hebben we Scrapy geïntroduceerd, een krachtig Python-framework voor webscraping. We hebben behandeld:

  • De voordelen van Scrapy voor schaalbare projecten.
  • De standaardprojectstructuur en de belangrijkste onderdelen ervan.
  • Hoe je een Spider definieert om webpagina's te crawlen.
  • De rol van Items bij het structureren van gescrapete gegevens.
  • De functie van Item Pipelines voor gegevensverwerking.
  • Hoe het ontwerp van Scrapy gedistribueerd scrapen ondersteunt.

Met Scrapy kun je robuuste en efficiënte systemen voor gegevensverzameling bouwen voor vrijwel elke uitdaging op het gebied van webscraping.

Gratis beginnen

Leer Python met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
12
Lessen
48

Veelgestelde vragen

Is de les “Gedistribueerd scrapen met Scrapy” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Webscraping en bots, waaronder “Gedistribueerd scrapen met Scrapy”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Webscraping en bots bevat in totaal 4 lessen.

Wat leer ik in “Gedistribueerd scrapen met Scrapy”?

Beheers Scrapy, een krachtig Python-framework voor het bouwen van grootschalige, gedistribueerde webcrawlers en scrapers. Je oefent met Webscraping en bots door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Webscraping en bots te beginnen?

Ervaring vooraf is niet nodig. Webscraping en bots op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.

Hoe lang duurt de les “Gedistribueerd scrapen met Scrapy”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Webscraping en bots?

Ja. Elke les over Webscraping en bots bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Gedistribueerd scrapen met Scrapy
  2. Cloud Functions voor scraping
  3. Monitoring en logging
  4. Taakverdeling op basis van queues
← Terug naar Webscraping en bots