Vejledning: Go Spider! Webskrabning med Python og Scrapy

(Schwinn Zhang) (19. jan. 2019)

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

Du har sandsynligvis hørt om “webskrabning”. Hvis du ikke har gjort det, betyder webskrabning at bruge en computeralgoritme til at hente måloplysninger fra et websted. Python-biblioteket Scrapy blev bygget nøjagtigt til denne opgave. Smuk suppe er en anden mulighed, men den er langsom. Under alle omstændigheder vil du hente denne færdighed til at opbygge software, til datalogi eller til Kreml (blink). Der findes en overflod af tutorials om dette emne. “Hvor skal jeg starte?” “Er der en køreplan for dette?” Efter at have brugt tre dage på at søge igennem gode, dårlige og forældede oplysninger er jeg her for at give dig denne køreplan for webskrabning.

Hvor skal jeg starte

Min plan var at følge python-projekterne på denne -liste . Hvis du besluttede at starte med Twitter Mining , så LYK (sarkastisk), fordi jeg stadig venter på Twitter for at give mig adgang til deres API efter 5 dage 17 timer og 7 minutter. Så efterslæb alarm! Naturligvis gik jeg videre til det næste: Skrab et websted med Python (og MongoDB) . Jeg satte MongoDB i parentes for enkelhedens skyld. MongoDB vil koste meget tid, og for mit lille program er det ikke engang nødvendigt. Jeg vil hellere få en total python-webskraber til at arbejde og derefter tilføje MongoDB-funktionalitet senere. Tidsstyring betyder at skære trigs og komme til kernen. Software Dev 101. Under alle omstændigheder skal du følge denne artikel Skrab et websted med Python (og MongoDB) , så får du en grundlæggende fornemmelse af, hvordan webskrabning fungerer.

XPath vs CSS? Jeg vælger CSS

Så blev jeg fast på noget, der hedder XPath, dybest set en URL-baseret instruktion, der angiver måloplysninger til vores spejder edderkop. Efter en omfattende tutorial-browsing fandt jeg dette pæne madspil der hjælper dig med at lære og øve dig i at skrive XPath. Hvis du stadig gruer dig til XPath, er der en anden måde, som den tutorial-artikel ikke nævnte…

Fra Scrapys tutorial i sin dokumentation, jeg fandt min ven CSS, som har en enkel og mere ligetil syntaks. Faktisk er Scrapy-dokumentation den BEDSTE tutorial. Det er den mest opdaterede, grundige, og mange blog-tutorials er baseret på dette. I denne vejledning fandt jeg den bedste måde at øve webinformationsmålretning gennem Scrapys IPython-skal, dybest set en Jupyter Notebook på din terminal. På kommandolinjen skal du bruge

scrapy shell [url in quotes]

Følg derefter Scrapy-tutorialen på quotes.toscrape.com. Det er et ideelt eksempel, fordi hjemmesiden er enkel med meget få lag af indlejret CSS. Efter et par runder er du allerede en junior skrabende Ninja. På dette tidspunkt følte jeg mig selvsikker nok til at skrabe alle overskrifterne fra New York Times forside . Se, det var en umulig opgave på dette tidspunkt, fordi forsiden har en imponerende mængde indlejring. Forsiden er bare en kurateret kombination af artikler fra hvert afsnit, ikke? Efter denne logik var jeg i stand til at gå til den enklere Op-Ed sektion og Art sektion for at skrabe alle overskrifter med succes. Her er min repo på git.

Så her er min første edderkop. Jeg bliver nødt til at bygge flere funktioner og funktioner. Men for nu fungerer det. Du kan se alle titlerne på NYT Op-Ed-siden er blevet gemt i en json-fil her. Her er et screenshot. Du kan finde dubletter her. Det er ok. Vi kan opbygge en duplikat detektor bagefter. Jeg planlægger også at skrabe fra flere nyhedskilder og lægge deres resultater i den samme fil.

NYT OpEdTitles skraberesultater. Kilde: Schwinn Zhang

Resumé af edderkoppealgoritmen

Næste trin

  1. Fejlfind og / eller tilføj funktioner til din edderkop
  2. Prøv at skrabe et datasæt. Her er en god tutorial: Brug af Scrapy til at opbygge dit eget datasæt .

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *