Scrapy-zelfstudie: hoe maak je een webcrawler met Scrapy?



In dit Scrapy Tutorial-artikel leert u een webcrawler te maken met verschillende gegevensextractietechnieken en manieren om de gegevens in een database op te slaan.

Webscraping is een effectieve manier om gegevens van de webpagina's te verzamelen, het is een effectief hulpmiddel geworden in . Met diverse bibliotheken aanwezig voor webschrapen zoals wordt het werk van een datawetenschapper optimaal. Scrapy is een krachtig webframework dat wordt gebruikt voor het extraheren, verwerken en opslaan van gegevens. We zullen leren hoe we een webcrawler kunnen maken in deze scrapy tutorial, de volgende onderwerpen zijn besproken in deze blog:

Wat is Scrapy?

Scrapy is een gratis en open-source framework voor webcrawlen, geschreven in python. Het was oorspronkelijk ontworpen om te presteren , maar kan ook worden gebruikt voor het extraheren van gegevens met behulp van API's. Het wordt onderhouden door Scrapinghub ltd.





Scrapy is een compleet pakket als het gaat om het downloaden van de webpagina's, het verwerken en opslaan van de gegevens op het .

Het is als een krachtpatser als het gaat om webschrapen met meerdere manieren om een ​​website te schrapen. Scrapy verwerkt grotere taken met gemak, scrap meerdere pagina's of een groep URL's in minder dan een minuut. Het gebruikt een twister die asynchroon werkt om gelijktijdigheid te bereiken.



Het biedt spider-contracten waarmee we zowel generieke als diepe crawlers kunnen maken. Scrapy biedt ook itempijplijnen om functies in een spider te maken die verschillende bewerkingen kunnen uitvoeren, zoals het vervangen van waarden in gegevens enz.

scrapy architectuur-scrapy tutorial-edureka

Wat is een webcrawler?

Een webcrawler is een programma dat automatisch naar documenten op internet zoekt. Ze zijn voornamelijk geprogrammeerd voor herhaalde acties voor automatisch browsen.

Hoe het werkt?



Een webcrawler lijkt veel op een bibliothecaris. Het zoekt naar informatie op internet, categoriseert de informatie en indexeert en catalogiseert vervolgens de informatie zodat de gecrawlde informatie kan worden opgehaald en dienovereenkomstig wordt opgeslagen.

De bewerkingen die door de crawler worden uitgevoerd, worden van tevoren gemaakt, waarna de crawler al die bewerkingen automatisch uitvoert, waardoor een index wordt gemaakt. Deze indexen zijn toegankelijk voor uitvoersoftware.

Laten we eens kijken naar verschillende toepassingen waarvoor een webcrawler kan worden gebruikt:

  • Prijsvergelijkingsportals zoeken naar specifieke productdetails om prijzen op verschillende platforms te vergelijken met behulp van een webcrawler.

  • Een webcrawler speelt een zeer belangrijke rol op het gebied van datamining voor het ophalen van informatie.

  • Gegevensanalysetools gebruiken webcrawlers om ook de gegevens voor paginaweergaven, inkomende en uitgaande links te berekenen.

  • Crawlers dienen ook voor informatiehubs om gegevens te verzamelen, zoals nieuwsportalen.

Hoe Scrapy te installeren?

Om scrapy op uw systeem te installeren, wordt aanbevolen om het op een speciale virtualenv te installeren. De installatie werkt ongeveer hetzelfde als elk ander pakket in python, als u conda omgeving, gebruik dan de volgende opdracht om scrapy te installeren:

conda install -c conda-forge scrapy

je kunt ook de pip-omgeving gebruiken om scrapy te installeren,

pip scrapy installeren

Afhankelijk van uw besturingssysteem kunnen er enkele compilatieafhankelijkheden zijn. Scrapy is geschreven in pure python en kan afhankelijk zijn van een paar python-pakketten zoals:

  • lxml - Het is een efficiënte XML- en HTML-parser.

  • parcel - Een HTML / XML-extractiebibliotheek bovenaan geschreven op lxml

  • W3lib - Het is een multifunctionele helper voor het omgaan met URL's en webpagina-coderingen

    gegevenstype voor datum in sql
  • twisted - Een asynchroon netwerkraamwerk

  • cryptografie - Het helpt bij verschillende beveiligingsbehoeften op netwerkniveau

Uw eerste Scrapy-project starten

Om uw eerste scrapy-project te starten, gaat u naar de map of locatie waar u uw bestanden wilt opslaan en voert u de volgende opdracht uit

scrapy startproject projectnaam

Nadat u deze opdracht hebt uitgevoerd, worden de volgende mappen op die locatie aangemaakt.

  • Naam van het project/

    • scrapy.cfg: het implementeert het configuratiebestand

  • Naam van het project/

    • __init__.py: de python-module van projecten

    • items.py: definitiebestand voor projectitems

    • middlewares.py: project middlewares-bestand

    • pipelines.py: bestand met projectpijplijnen

    • settings.py: bestand met projectinstellingen

  • spinnen /

    • __init__.py: een map waar je later je spiders gaat plaatsen

Je eerste spin maken

Spinnen zijn klassen die we definiëren en scrapy gebruiken om informatie van internet te verzamelen. Je moet scrapy.Spider in een subklasse brengen en de initiële verzoeken definiëren die je moet doen.

methode overbelasting en overschrijven in java-voorbeeld

Je schrijft de code voor je spider in een apart python-bestand en slaat het op in de map projectnaam / spiders in je project.

quotes_spider.py

importeer scrapy class QuotesSpider (scrapy.Spider): name = 'quotes' def start_request (self): urls = ['http://quotes.toscrape.com/page/1/', http://quotes.toscrape.com / page / 2 /,] voor url in URL's: yield scrapy.Request (url = url, callback = self.parse) def parse (self, response): page = response.url.split ('/') [- 2 ] filename = 'quotes-% s.html'% pagina met open (bestandsnaam, 'wb') als f: f.write (response.body) self.log ('opgeslagen bestand% s'% bestandsnaam)

Zoals je kunt zien, hebben we verschillende functies in onze spiders gedefinieerd,

  • naam: het identificeert de spin, het moet uniek zijn gedurende het hele project.

  • start_requests (): Moet een iterabel van verzoeken retourneren waarmee de spider begint te crawlen.

  • parse (): het is een methode die wordt aangeroepen om het antwoord dat bij elk verzoek wordt gedownload, af te handelen.

Gegevens extraheren

Tot nu toe haalt de spider geen gegevens op, hij heeft alleen het hele HTML-bestand opgeslagen. Een scrapy spider genereert doorgaans veel woordenboeken met de gegevens die van de pagina zijn geëxtraheerd. We gebruiken het trefwoord yield in python in de callback om de gegevens te extraheren.

import scrapy class QuotesSpider (scrapy.Spider): name = 'quotes' start_urls = [http://quotes.toscrape.com/page/1/ ', http://quotes.toscrape.com/page/2/,] def parse (self, response): voor quote in response.css ('div.quote'): yield {'text': quote.css (span.text :: text '). get (),' author ': quote .css (small.author::text ') get (),' tags ': quote.css (div.tags a.tag :: text'). getall ()}

Wanneer u deze spider uitvoert, voert deze de geëxtraheerde gegevens uit met het logboek.

Opslaan van de gegevens

De eenvoudigste manier om de geëxtraheerde gegevens op te slaan, is door feedexports te gebruiken. Gebruik de volgende opdracht om uw gegevens op te slaan.

scrapy crawl quotes -o quotes.json

Met deze opdracht wordt een quotes.json-bestand gegenereerd met alle geschraapte items, geserialiseerd in JSON .

Dit brengt ons aan het einde van dit artikel waar we hebben geleerd hoe we een webcrawler kunnen maken met scrapy in python om een ​​website te schrapen en de gegevens in een JSON-bestand te extraheren. Ik hoop dat je duidelijk bent met alles wat in deze tutorial met je is gedeeld.

Als je dit artikel over 'Scrapy Tutorial' relevant vond, bekijk dan het een vertrouwd online leerbedrijf met een netwerk van meer dan 250.000 tevreden leerlingen verspreid over de hele wereld.

We zijn hier om je te helpen bij elke stap op je reis en om een ​​curriculum te bedenken dat is ontworpen voor studenten en professionals die een . De cursus is ontworpen om u een voorsprong te geven in het programmeren van Python en u te trainen in zowel kern- als geavanceerde Python-concepten, samen met verschillende Leuk vinden

Mocht je vragen tegenkomen, stel dan gerust al je vragen in de commentarensectie van 'Scrapy Tutorial' en ons team zal je graag beantwoorden.