Handledning: Go Spider! Web Scraping with Python and Scrapy

Publicerad

(Schwinn Zhang) (19 jan 2019)

bildkälla: https://myfigurecollection.net/item/736413

Du har antagligen hört talas om ”webbskrapning”. Om du inte har gjort betyder webbskrapning att använda en datoralgoritm för att hämta målinformation från en webbplats. Python-biblioteket Scrapy byggdes exakt för den här uppgiften. Vacker soppa är ett annat alternativ men det är LÅNGT. Hur som helst vill du plocka upp denna färdighet för att bygga programvara, för datavetenskap eller för Kreml (blink). Det finns ett överflöd av självstudier om detta ämne. ”Vart ska jag börja?” ”Finns det en färdplan för detta?” Efter att ha tillbringat tre dagar på att söka igenom bra, dålig och föråldrad information är jag här för att ge dig den här färdplanen för webbskrapning.

Var ska jag börja

Min plan var att följa python-projekten i den här -listan . Om du bestämde dig för att börja med Twitter Mining , så LYCK (sarkastiskt) eftersom jag fortfarande väntar på Twitter för att ge mig tillgång till deras API efter 5 dagar 17 timmar och 7 minuter. Så, eftersläpningsvarning! Naturligtvis gick jag vidare till nästa: Skrapa en webbplats med Python (och MongoDB) . Jag satte MongoDB inom parentes för enkelhetens skull. MongoDB kommer att kosta mycket tid och för mitt lilla program är det inte ens nödvändigt. Jag skulle hellre få en total python-webbskrapa att fungera och sedan lägga till MongoDB-funktionalitet senare. Tidshantering innebär att klippa triggen och komma till kärnan. Software Dev 101. Hur som helst, följ den här artikeln Skrapa en webbplats med Python (och MongoDB) så får du en grundläggande känsla för hur webbskrapning fungerar.

XPath vs CSS? Jag väljer CSS

Sedan fastnade jag på något som heter XPath, i grund och botten en URL-baserad instruktion som indikerar målinformation till vår scoutspindel. Efter en omfattande tutorialsökning hittade jag det här snygga matspel som hjälper dig att lära dig och öva dig att skriva XPath. Om du fortfarande fruktar XPath finns det ett annat sätt som den självstudieartikeln inte nämnde …

Från Scrapys tutorial i dess dokumentation, jag hittade min vän CSS, som har en enkel och mer rak syntax. Faktum är att Scrapy-dokumentation är den bästa handboken. Det är den mest uppdaterade, grundliga och många blogghandledningar bygger på detta. I den här handledningen hittade jag det bästa sättet att öva webbinformationsinriktning genom Scrapys IPython-skal, i princip en Jupyter Notebook på din terminal. På kommandoraden använder du

scrapy shell [url in quotes]

Följ bara Scrapy-tutorialen på quotes.toscrape.com. Det är ett perfekt exempel eftersom webbplatsen är enkel med mycket få lager av inbäddad CSS. Efter några omgångar är du redan en juniorskrapa-ninja. Vid det här laget kände jag mig tillräckligt säker på att skrapa alla rubriker från New York Times förstasida . Se och se, det var en omöjlig uppgift just nu eftersom förstasidan har en imponerande mängd inbäddning. Tja, förstasidan är bara en sammanställd kombination av artiklar från varje avsnitt, eller hur? Efter denna logik kunde jag gå till det enklare avsnittet Op-Ed och Art för att lyckas skrapa alla rubriker. Här är min repo på git.

Så här är min första spindel. Jag måste bygga in fler funktioner och funktioner. Men för tillfället fungerar det. Du kan se alla titlar på NYT Op-Ed-sidan har lagrats i en json-fil här. Här är en skärmdump. Du kan hitta dubbletter här. Det är ok. Vi kan bygga upp en duplikatdetektor efteråt. Jag planerar också att skrapa från flera nyhetskällor och lägga deras resultat i samma fil.

NYT OpEdTitles Scraper-resultat. Källa: Schwinn Zhang

Sammanfattning av spindelalgoritmen

Nästa steg

  1. Felsöka och / eller lägg till funktioner i din spindel
  2. Försök för att skrapa en dataset. Här är en bra handledning: Använda Scrapy för att bygga ditt eget dataset .

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *