Opplæring: Go Spider! Nettskraping med Python og Scrapy

(Schwinn Zhang) (19. jan. 2019)

bildekilde: https://myfigurecollection.net/item/736413

Du har sannsynligvis hørt om “nettskraping”. Hvis du ikke har gjort det, betyr nettskraping å bruke en datalgoritme til å hente målinformasjon fra et nettsted. Python-biblioteket Scrapy ble bygget nøyaktig for denne oppgaven. Vakker suppe er et annet alternativ, men det er SLOW. Uansett vil du hente denne ferdigheten for å bygge programvare, for datavitenskap eller for Kreml (blunk). Det finnes en overflod av opplæringsprogrammer om dette emnet. «Hvor begynner jeg?» «Er det en veikart for dette?» Etter å ha brukt tre dager på å sile gjennom god, dårlig og utdatert informasjon, er jeg her for å gi deg denne veikartet for nettskraping.

Hvor du skal begynne

Planen min var å følge python-prosjektene på denne listen . Hvis du bestemte deg for å begynne med Twitter Mining , så LYKKE (sarkastisk) fordi jeg fremdeles venter på Twitter for å gi meg tilgang til deres API etter 5 dager 17 timer og 7 minutter. Så, ettersvarsvarsel! Naturligvis gikk jeg videre til det neste: Skrap et nettsted med Python (og MongoDB) . Jeg satte MongoDB i parentes for enkelhets skyld. MongoDB vil koste mye tid, og for det lille programmet mitt er det ikke engang nødvendig. Jeg vil helst få en total python-nettskrape til å fungere og deretter legge til MongoDB-funksjonalitet senere. Tidsstyring betyr å kutte trigene og komme til kjernen. Software Dev 101. Uansett, følg denne artikkelen Skrap et nettsted med Python (og MongoDB) , så får du en grunnleggende følelse av hvordan nettskraping fungerer.

XPath vs CSS? Jeg velger CSS

Så ble jeg sittende fast på noe som heter XPath, i utgangspunktet en URL-basert instruksjon som indikerer målinformasjon til speideren vår. Etter en omfattende opplæringssurfing fant jeg dette ryddige matspill som hjelper deg å lære og øve deg på å skrive XPath. Hvis du fremdeles gruer deg til XPath, er det en annen måte som den opplæringsartikkelen ikke nevnte …

Fra Scrapys tutorial i dokumentasjonen, fant jeg min venn CSS, som har en enkel og mer rett frem syntaks. Faktisk er skrapete dokumentasjon den beste opplæringen. Det er den mest oppdaterte, grundige og mange bloggopplæringer er basert på dette. I denne opplæringen fant jeg den beste måten å øve på webinformasjonsmålretting gjennom Scrapys IPython-skall, i utgangspunktet en Jupyter Notebook på terminalen din. På kommandolinjen bruker du

skrapete skall [url i anførselstegn]

Følg bare Scrapy-opplæringen på quotes.toscrape.com. Det er et ideelt eksempel fordi nettstedet er enkelt med svært få lag med innebygd CSS. Etter noen runder er du allerede en juniorskrapende Ninja. På dette tidspunktet følte jeg meg trygg nok til å skrape alle overskriftene fra forsiden av New York Times . Se, det var en umulig oppgave på dette tidspunktet fordi forsiden har en imponerende mengde innebygging. Forsiden er bare en kuratert kombinasjon av artikler fra hver seksjon, ikke sant? Etter denne logikken var jeg i stand til å gå til den enklere delen av Op-Ed og Art for å skrape alle overskriftene. Her er min repo på git.

Så her er min første edderkopp. Jeg må bygge inn flere funksjoner og funksjoner. Men foreløpig fungerer det. Du kan se alle titlene på NYT Op-Ed-siden er lagret i en json-fil her. Her er et skjermbilde. Du kan finne duplikater her. Det er greit. Vi kan bygge opp en duplikat detektor etterpå. Jeg har også tenkt å skrape fra flere nyhetskilder og legge resultatene i den samme filen.

NYT OpEdTitles skraperesultater. Kilde: Schwinn Zhang

Sammendrag av edderkoppalgoritmen

Neste trinn

  1. Feilsøk og / eller legg til funksjoner i edderkoppen din
  2. Prøv for å skrape et datasett. Her er en god veiledning: Bruk av Scrapy til å lage ditt eget datasett .

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *