Web skrapning är processen för extrahera data från webbsidor i ett strukturerat format. Det är ett av de mest effektiva sätten att få data från webbsajter, särskilt om du behöver data för att matas in i en app eller en annan webbplats.
Web scraping, även känd som dataskrapning – har många tillämpningar inklusive prisjämförelse på olika webbplatser, insamling av marknadsundersökningsdata, produktspårning, research etc. Som dataforskare tycker jag att det är mest användbart för att få data som inte är tillgänglig via API. Som nybörjare eller professionell användare kan du ha nytta av det för att jämföra priser eller samla in data från webben.
I den här artikeln kommer jag att presentera dig för två metoder för webbskrapning. Den första metoden är ett nybörjarvänligt sätt att extrahera data med hjälp av en färdig att använda lösning. Den andra metoden är ett utvecklarvänligt sätt att extrahera data med hjälp av Scrapy, som stöder kraftfull skrapning om det görs rätt. Låt oss kolla dem båda.
Metod #1: Använd ett skrapverktyg
Om du inte är en utvecklare eller bekant med Python, här är en enkel lösning. Det finns många verktyg på marknaden för webbskrapning, vilket gör att du kan skrapa nätet med noll till viss programmering. Överraskande nog låter vissa webbskrapor dig skrapa webben genom deras intuitiva gränssnitt.
Octoparse är sådant ett webbskrapningsverktyg, som gör att du enkelt kan skrapa webben. Som jag kommer att beskriva senare i det här inlägget låter Octoparse dig skrapa i tre enkla steg. Lyckligtvis erbjuder den en gratis plan genom sin app för att extrahera data lokalt, vilket gör att du kan utföra små skrapuppgifter med noll investering.
Dessutom har Octoparse många avancerade funktioner för bekväm webbskrapa utan programmering. Jag tycker att deras mallar är intressanta eftersom de låter dig extrahera data från populära webbplatser utan någon konfiguration. Du kan till exempel välja en förbyggd mall för att extrahera produktdata från Amazon eller eBay.
Använder automatisk dataextrahering
Octoparse är kraftfull men användbar. Anledningen är att den stöder upptäckt och spontant extrahera data från webbsidor. Även om jag upptäckte att det främst fungerar med en lista eller tabell med data, är det det snabbaste sättet att komma igång. Det är hur:
- Ska https://www.octoparse.com/signup och registrera dig för ett gratis konto.
- När du har bekräftat din e-postadress och loggat in på Octoparse kommer du att se en skärm som säger “Kontot är klart!” > klicka Starta gratis premiumprovperiod.
- Ange dina kortuppgifter eller betala med PayPal för att aktivera provperioden.
- Klick Ladda ner vår gratis programvara för att ladda ner din app för din plattform: Windows eller macOS. Klicka sedan på 8.1 Beta knapp.
- Extrahera den nedladdade zip-filen och öppna den Konfigurera Octoparse 8.1.xx.exe för att installera din applikation. Följ sedan instruktionerna på skärmen.
- När du har installerat, öppna Octoparse och logga in på ditt konto. Kom ihåg att kontrollera Kom ihåg lösenord och Automatisk inmatning alternativ.
- Du kommer att se Octoparse-gränssnittet där du kan konsultera videohandledningarna.
- Ange webbadressen i textrutan och tryck Börja. Till exempel kommer jag att dra https://www.ebay.com/itm/Amazon-Echo-Dot-4th-Gen-With-Clock-2020-Smart-Speaker-Alexa-All-Colors-NEW/363219888368 här.
- Octoparse kommer att ladda webbsidan och försöka upptäcka och extrahera potentiella data. Avmarkera under Tips Klicka på knappen “Ladda mer”. alternativ.
- Om data som visas i den nedre halvan av appen inte är vad du letar efter, klicka Ändra resultat för automatisk upptäckt för att se mer.
- När du ser de förväntade uppgifterna klickar du på Skapa arbetsflöde knapp.
Använder manuell dataextraktion
Ibland kanske Octoparses automatiska dataextraktionsfunktioner inte räcker för dig. Kanske är webbsidan du försöker extrahera data från komplex eller dynamisk. Hur det än är, Du är i goda händer med Octoparse eftersom det också låter dig välja den data som ska extraheras manuellt. Så här gör du:
- Följ stegen i “Använder automatisk dataextrahering” till steg 8.
- Octoparse börjar ladda webbsidan och upptäcker möjliga data att extrahera. Klicka på under Tips Avbryt automatisk upptäckt för att extrahera data manuellt.
- Klicka nu på dataelementen på webbsidan för att extrahera dessa data. Till exempel klickade jag på titeln, priset och frakten för Echo Dot 4th Gen.
- I det Tips dialogrutan klickar du på Extrahera data möjlighet att testa arbetsflödet.
- Klicka slutligen Spara nära det övre vänstra hörnet av Octoparse för att spara det.
Postkrav
Okej, vi har skapat uppgiften att extrahera prisinformation från eBay via Octoparse. Det är dock inte automatiserat ännu. Det vill säga, du måste köra det manuellt tills vidare. Med det sagt, låt oss se hur man automatiserar det för att regelbundet extrahera data:
- Klicka på fliken Uppgifter Springa nära det övre vänstra hörnet av Octoparse.
- Klicka på Schemalägg uppgift (moln) i dialogrutan Kör uppgift.
- Klicka på en av En gång, veckovis, månadsvis och upprepaskonfigurera det sedan.
- Klicka slutligen på en av Spara antingen Spara och spring knappar för att spara den.
Äntligen är den klar. Din uppgift körs automatiskt på Octoparse Cloud baserat på ditt konfigurerade schema. Du kan se data genom att klicka Panelgenom att klicka på Ytterligare knappen på din uppgift och välj Visa data > Molndata.
Metod #2: Använd ett anpassat program
Om du har provat den första metoden och vill ha mer kontroll eller om du är en programmerare och vill lära dig den programmatiska metoden att skrapa webbsidor, bör du prova den här metoden. Vi kommer att använda Scrapy för att bygga lösningen. Jag antar att du har en praktisk kunskap om hur man arbetar med HTML, CSS och Python.
Scrapy är ett ramverk med öppen källkod för att extrahera data från webbplatser. Det är ett populärt verktyg för datautvinning bland dataforskare. Enligt min erfarenhet fungerar det mycket bra för stora eller små projekt, men du kan behöva konfigurera det korrekt och implementera verktyg från tredje part för att göra det effektivt för stora skrapningsprojekt.
Nödvändig förutsättning
Känner du väljare i CSS? Väljare hjälper till på vilken webbsida som helst Identifiera och välj specifika element.. Burk läs om väljare på W3Schools. Om du till exempel vill söka igenom alla huvudrubriker på en webbsida kan du använda h1 som väljare. Så här hittar du ett elements väljare i Google Chrome:
- Högerklicka på sidelementet > välj Att inspektera. Till exempel försöker jag hitta väljaren för texten “Sample Domain” nedan.
- Högerklicka på elementet i Elements, gå till Kopiera > kopieringsväljare.
Använder skrapning
Om du försöker extrahera webbsidor som inte diskuteras i det här inlägget eller vill extrahera mer data på dessa sidor, måste du hitta väljare och använda dem. Med det sagt, låt oss börja. I exemplet nedan kommer jag att ta bort priset på Amazon Echo Dot 4th Gen från eBay med Scrapy. Låt oss börja:
- Skapa en ny mapp för ditt projekt, säg “skrapa-webb-regelbundet”.
- Öppna en terminal, byt till den här mappen (dvs cd scrape-web-regelbundet), kör sedan följande för att installera Scrapy: pip install scrapy.
- Skapa en ny fil i den här mappen (“try-one.py”) och öppna den i en kodredigerare. Kopiera följande kod till den här filen, gör ändringar vid behov och spara den sedan.
- Kör följande i terminalen: scrapy runspider try-one.py för att utföra skrapning. Om du skriver för en annan sida/webbplats kan du prova att köra den några gånger för att få rätt väljare.
- Om du använde exakt samma kod som min eller använde en korrekt väljare i din anpassade kod, får du ett resultat som liknar exemplet:
- Om din kod inte är densamma som min eller om du använde fel väljare, kommer du inte att se meddelandet som innehåller DEBUG: Scraped from. Annars kommer du att se ett meddelande som innehåller {‘title’: Detta är den extraherade informationen.
Om du får ett felmeddelande, läs meddelandet noggrant för att hitta begränsningssteg. Till exempel, om felet säger “”, bör du ladda ner och installera det från länken som tillhandahålls och sedan försöka igen. I de fallen, du kan använda alternativt Anakonda för att ladda ner förbyggda paket.
import scrapy
class EBaySpider(scrapy.Spider):
# name of the scraper
name="ebay_spider"
# link or URL to scrape from
link1 = 'https://www.ebay.com/itm/Amazon-Echo-Dot-4th-Gen-With-Clock-2020-Smart-Speaker-Alexa-All-Colors-NEW/363219888368'
# links or URLs to scrape data from
start_urls = [link1]
def parse(self, response, **kwargs):
# select the element to scrape data from
for title in response.css('#prcIum'):
# extract the text data from element
yield {'price': title.css('::text').get()}
[scrapy.core.engine] INFO: Spider opened
[scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
[scrapy.extensions.telnet] INFO: Telnet console listening on 127.0.0.1:6023
[scrapy.core.engine] DEBUG: Crawled (200) <GET https://www.ebay.com/itm/Amazon-Echo-Dot-4th-Gen-With-Clock-2020-Smart-Speaker-Alexa-All-Colors-NEW/3632198
88368> (referer: None)
[scrapy.core.scraper] DEBUG: Scraped from <200 https://www.ebay.com/itm/Amazon-Echo-Dot-4th-Gen-With-Clock-2020-Smart-Speaker-Alexa-All-Colors-NEW/3632198
88368>
{'price': 'US $59.99'}
[scrapy.core.engine] INFO: Closing spider (finished)
Men om du inte ser något av dessa meddelanden, kontrollera för att se om utdata innehåller DEBUG: Crawled (200). Annars kunde Scrapy inte genomsöka eller hämta webbsidan. Det kan finnas flera orsaker, så det finns flera felsökningstips:
- Kontrollera först och främst om din internetanslutning fungerar som den ska.
- Om ja, kontrollera om du kan öppna den krypterade länken1 i en webbläsare.
- Om inte, är det en dålig länk: ändra värdet på länk1 i din kod.
- Om det fortfarande inte blir någon framgång kan det finnas flera anledningar; låt oss granska dem:
- Om du kunde få data eller ett svar minst en gång, kanske du genomsöker eller skrapar sidan för många gånger under ett kort intervall, vilket gör att webbplatsen blockerar din förfrågan. I det här fallet kan du öka intervallet mellan genomsökningar eller på varandra följande körningar.
- Annars använder målwebbplatsen förmodligen någon skrapskyddsteknik, vilket blockerar din begäran om att skrapa sidan med Scrapy. I det här fallet, se nästa avsnitt.
Använder ScrapingBee
ScrapingBee är en webbskrapningstjänst för att kringgå skrapskyddstekniker och skrapa webben utan att blockeras. Tillhandahåller ett enkelt API för att genomsöka webben med hjälp av huvudlösa webbläsare och roterande proxyservrar, vilket tillåter dig undvik repskyddsteknik medan du skrapar med Scrapy.
Jag började till exempel försöka skrapa med eBay men utan framgång. eBay upptäcker och blockerar alla förfrågningar tills de kommer från en riktig användare som använder en riktig webbläsare och därför Scrapy fungerar inte för eBay. Dessutom kan stora eller populära webbplatser fungera med Scrapy för vissa förfrågningar, men sedan börja blockera dem också. Det är där ScrapingBee kommer väl till pass.
Jag gillade att ScrapingBee erbjuder en gratis provperiod som inkluderar 1 000 gratis samtal till ditt API, så att du kan testa deras tjänst och/eller arbeta med ett litet skrapprojekt. Med det sagt, låt oss börja använda ScrapingBee API i vårt Scrapy-projekt:
- Ska https://www.scrapingbee.com/ och klicka Registrera att registrera.
- När du har bekräftat din e-postadress och loggat in på ScrapingBee kommer du att se din instrumentpanel som ger dig din kontoinformation och mer.
- Låg Begärgeneratorange länken du vill skrapa URL. Om sidan inte kräver JavaScript, avmarkera JavaScript-rendering. Jag försöker sänka priset på Amazon Echo Dot 4th Gen på eBay.
- Under lockig kopiera länken inom citattecken (utelämna ordet “curl”) och klistra in värdet i länk1 i koden. Så länk1 = ‘https://www.ebay… blir länk1 = ‘https://app.scrap….
- Fortsätt nu från steg 4 i avsnittet Använder skrapning ovan.
Postkrav
Du har slutfört konstruktionen av skrapan, det vill säga logiken för att skrapa data. Men det kommer fortfarande inte att köras med jämna mellanrum, utan du måste köra det själv manuellt, vilket inte är meningen med den här handledningen. Det är därför, Låt oss försöka automatisera vår anpassade skrapa. att köras automatiskt med schemalagda intervaller.
På Linux-operativsystem som Ubuntu och Linux Mint kan du använda ett cron-jobb för att köra din skrapa med jämna mellanrum. Du kan läsa detta cron guideoch följ dessa steg:
- Öppna en terminal och kör crontab -e för att redigera användarens cron-fil.
- Skriv in cd scrapy runspider try-one.py i cron-filen och spara den för att schemalägga ditt cron-jobb.
- CRON_SCHEDULE: Standardschemat är * * * * *, vilket innebär att köra det varje minut. Antingen 0 * * * * som betyder att köra det en gång i timmen, eller 0 0 * * * som betyder att köra det en gång varje dag.
- PROJECT_DIR: Katalogen där du skapade ditt Scrapy-projekt. Kontrollera steg #1 under Använder skrapning föregående avsnitt.
Nu kommer din skrapa att köras regelbundet vid den schemalagda tiden med cron på Linux-operativsystem. Om du använder Windows 10 kan du använda Task Scheduler för att schemalägga din skrapningsuppgift att köras med jämna mellanrum. Läs min guide till att automatisera repetitiva uppgifter.
Det innebär att skrapa en webbplats med hjälp av en färdig plattform som Octoparse och ett anpassat program med Scrapy och ScrapingBee.
