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?
- Wat is een webcrawler?
- Hoe Scrapy te installeren?
- Uw eerste Scrapy-project starten
- Je eerste spin maken
- Gegevens extraheren
- De geëxtraheerde gegevens opslaan
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.
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.