>> [Prehrávanie hudby]
ROBERT Krábek: Ahoj, chlapci.
Volám sa Robert Krábek, a Budem učiť vám chlapci
ako škriabať web s Nokogiri, čo je knižnica Ruby,
a Kimono, čo je rozšírenie Chrome.
>> Takže najprv je tu pár vecí, ktoré vás
môže robiť, ak možno ste boli robí všetky psets doteraz
a váš pracovný priestor je Začínam byť trochu plná.
Môžeme vlastne len ísť a vytvoriť nový pracovný priestor pre vás
len urobiť úplne nový projekt v.
Takže ak si chcete pokračovať pracuje v CS50 šablóny ID
že máte v súčasnej dobe, neváhajte, a môžete len
nainštalovať Nokogiri s CFLAGS equals-- gem install nokogiri.
Ale inak Ukážem vám, ako nastaviť nový jeden hore.
A potom je to v podstate zvrhnutie ďalšie kolieska.
A vy kódovanie, ako by ste boli len kódovanie v Sublime alebo tak niečo.
Takže keď sme sa presunúť ju.
>> Tak hovoria, že toto je vaša súčasná SK 50 ID.
Stačí si len ísť do Cloud9 tu.
Môžete ísť na palubnú dosku.
To by malo priniesť až karte schôdzok.
A potom môžete stačí kliknúť tu Vytvoriť nový pracovný priestor.
Pomenujte nový pracovný priestor, Možno test, alebo škrabanie.
A potom kliknite tu túto záložku vlastné, miesto na karte CS50 šablón.
A potom stačí ísť a vytvorte nový pracovný priestor.
>> Už som vytvoril pracovný priestor tu.
Takže budeme pracovať s tým.
A ak ste vytvorili nový Pracovná plocha tak s karte Vlastné
môžete zadať gem install nokogiri, ktorý sa nebude tu.
OK, je to trochu zmrznutý.
Ale môžete zadať gem install nokogiri.
A, ktorá by mala byť tak je na inštaláciu.
>> Ako som už povedal skôr, ak ste stále prácu vo vašom CS50 šablóny ID,
stačí zadať CFLAGS rovná gem install nokogiri.
A ja som už nainštalovaný to tu, takže nebudem robiť.
Ale pre tých, ktorí po spolu, neváhajte tak urobiť.
>> Takže akonáhle ste sa dostali svoj Nokogiri inštalovaný pracovný priestor alebo knižnicu,
Chystám sa vám trochu z intenzívneho kurzu syntaxe Ruby
pretože Nokogiri je knižnica Ruby.
Takže budete potrebovať poznať niektoré základné Ruby syntax pre prácu s Nokogiri.
Takže niektoré základné rozdiely z toho, čo ste zvyknutí
Možno, že keby ste pracovali doteraz len v C a PHP,
deklarujete premenné bez typu.
Nemusíte používať bodkočiarkami, čo je tak trochu úľava.
Neexistuje žiadne zátvorky teraz okolo pre alebo pri slučky, napr.
Musíte len blok kódu, a potom si dať koniec na konci to.
Nie je a navyše alebo mínus mínus, tak len
vedia, že, keď robíte pre slučky,
len plus mínus a rovná sa rovná.
A miesto hash patrí, budete používať potrebovať a potom
čo sa snaží knižnica načítať do vášho programu.
>> Ruby nie je zostavený jazyk.
Takže to je ďalší úľava.
Je to viac podobá PHP kde to je interpretovaný jazyk.
Môžete spustiť ľubovoľný skript, Ruby, že píšete s Ruby nasledoval
podľa mena vášho skriptu alebo programu.
Znamenať, že sa jedná o program, Ruby, stačí skončiť s .rb miesto .c.
A tam sú variabilné veľkosti poľa v Ruby,
čo je super pohodlné, keď ste škrabanie a snáď chcete pripojiť
Údaje, ktoré ste zoškrabovanie a odstraňovanie do poľa.
Nemusíte sa malloc nové pole a skopírovať pôvodný poľa do nového poľa.
Stačí si len pripojiť sa obe označenia šípkami.
A nie sú tam žiadne znaky, tam len jednotlivé struny list.
Tak, že by mala byť o niečo jednoduchšie.
>> Takže my vám len dať nejaké Príklady niektorých základných syntaxe Ruby.
Takže tu môžete vidieť, že namiesto toho, lomítko lomítko, aby sa vyjadril v Ruby,
stačí použiť libry.
A deklarácie premenných, vy stačí napísať premennú rovná
čo chcete premennú byť.
Môžu byť reťazca.
Môžete mať polia, ktorá vyplníte s hodnotami.
puts a potlače sú podobné.
Pre naše účely je Jediný rozdiel je, v skutočnosti
ktorý kladie, čo je skratka pre puts, práve stavia nový riadok
znak na čokoľvek, čo tlačíte.
>> Takže ak dáme malý Demonštrácie tu,
môžeme spustiť tento with-- otvoriť nový terminál.
Môžete vidieť všetky tieto súbory, ktoré sú v mojom termináli.
A keď som jednoducho utiecť Ruby, Ruby intro.rb to,
vyhlási päť Hello Mather, Quincy, Carrier.
Adams.
Tak to je všetko, na konštatovanie pole.
Publikum: Robert, môžete Vaše písmo trochu väčšie?
Robert Krábek: Áno.
A môžem priblížiť, pretože nemôžete priblíženie k terminálu písma zdanlivo.
>> Tak to je, ako tlačiť premenné do vášho terminálu.
Môžete tiež použiť premenné vnútri reťazca.
Takže v poslednej dobe v PHP, môžete sa naučili
že je reťazec interpolácie.
Takže ak ste sa pozrieť sem, ak I deklarovať tri premenné, názov, knižnicu,
a jazykové, a kladie I, I napísať reťazec Ahoj, volám sa.
A potom namiesto PHP verzia reťazca interpolácia
ktorý vyzerá trochu ako je tento, Máte libry, a potom
zložená rovnátka, a potom meno premennej.
A to je to, ako by ste vytlačiť, povedal, bez ohľadu na názov premennej je.
>> A potom sa môžete tiež zřetězit reťazca.
Ruby robí to výborný ľahko sa znamienkom plus.
Musíte len jeden reťazec na ľavej strane a navyše premenné
alebo iný reťazec a reťazec.
Takže keď som vytlačiť na to, by mal len povedať Ahoj, volám sa Robert.
Budem učiť vás nokogiri v Ruby.
>> A nech to len potvrdzujú, že je naozaj case-- rubín intro.
Dobrý deň, volám sa Robert.
Budem učiť vás nokogiri v Ruby.
>> Pohybujúce sa na, ak else, je to trochu inak
z toho, čo by sa mohlo použiť na ak ste pracoval v C.
Nepotrebujete zátvorky.
Nemusíte sa zložené zátvorky.
A miesto else if, je to zlúčia elsif.
Takže tu, či som deklaroval x up Tu, ako vidíme, x je stále 5.
Takže ak x je menšia ako 3, bude to dať malý.
Ak je to menej ako 7, médiá, inak veľké.
Takže 5 je stredná číslo.
A ja ukončiť tento blok kódu s koncom.
>> Tu je moja pre slučke.
A to je tiež syntax mierne odlišné.
0 až piatich v podstate len je deklarovať pole 0 až 5.
Takže tam je päť pozícií v poli.
A potom pre každý slot v tom, že pole, budem postupne i.
A teda by mala vytlačiť 0 až 5, alebo 0 až 4.
A to by malo tlačové médium.
>> A ja budem len požiar cez.
Vy chlapci budú mať prístup K tomuto kódu neskôr.
Takže vy môžete spustiť tento sami.
>> Takže toto je vaša základná while.
To bude len tlač j, postupne o 1 až sme narazili 5.
>> Super rýchla Ruby rýchlokurz o tom, ako napísať funkciu.
Namiesto toho, aby, povedzme, int faktoriál číslo, len musíme def.
A v podstate ty si definovanie funkcie tu.
To sa deje, že je názov funkcie,
a to ich všetky premenné, ktoré chcete odovzdať do funkcie.
Môžete mať, ak príkazy v rámci.
Môžete sa vrátiť.
V tomto prípade, my sme definovanie rekurzívne
realizovaný faktoriál funkcie.
Takže sme len zavolať funkcie Ruby, ako je tento.
>> Takže keď som definovaná To, ako som môžu volať faktoriál, prejsť v 3,
a potom sa 3 sa rovná počtu premenná že môžem použiť vo funkcii.
A to je práve to_s otáčaním vracia hodnotu faktoriálu na reťazec.
V opačnom prípade to bude hodiť chyba hovoriť oh, ja
Nemožno vytlačiť string-- pretože, ako si spomeniete,
kladie je kladený string--, pretože to factorial vrátila číslo.
Takže môžeme previesť, že na reťazec, ako je napríklad.
A naopak, môžete tiež previesť reťazec na celé číslo s to_i.
>> Takže robiť všetko super jednoduché, keby som komentár na to, uložiť
a spustiť faktoriálu funkcie.
Mali by sme byť schopní vidieť že faktoriál z 3. 6.
A to je skutočne pravda.
>> Tak to je váš rýchlokurz v Ruby.
A teraz, keď viete, Ruby, môžeme ísť na do základného Nokogiri stieraním nastaviť.
V podstate všetko, čo musíte urobiť, je, v Ruby, vyžadujú knižnice.
A pre naše účely budeme pomocou knižnica OpenURI rovnako ako Nokogiri.
A potom to, čo vy do-- a bude to vám syntaxe pre tohle--
je otvorenie adresy URL rovnako ako by ste v lokne žiadosť, čo je skratka pre C URL.
>> Takže budete mať URL webové stránky sa jedná.
Môžete uložiť ho do premennej.
A potom sa môžete preberať, že variabilné pre jedinečné HTML tagy použitím
CSS príkaz.
A potom môžete výstup obsah kamkoľvek budete chcieť.
Môžete začať v databáze.
Môžete výstup do súboru, alebo i len vytlačiť na obrazovku.
>> Tak my vám ukážeme základné škrabkou.
Takže tu vidíte, máme vyžadujúce nokogiri, vyžadujú open-URI.
Vaše základné nastaviť, poďme nazývajú dokument alebo doc,
rovná Nokogiri :: HTML otvorený, čo je Príkaz pripravili nám OpenURI
knižnicu.
A budeme vyhľadávania, pre tých, tých, kto by mohol žiť v štvorkolke,
pre bicykle, ktoré sú uvedené v Bostone na úseku Boston Craigslist kole
miesto.
>> Takže ak ste oboznámení s Curl, budem len
ukázať vám naozaj rýchlo, čo cURL bude robiť.
Keby som chcel získať všetky URL z Na stránkach Craigslist, keď som zadajte lokne,
to jednoducho skládky všetky adresy URL z bicykla webu Craigslist
na môj terminálu.
To nie je zvlášť užitočné, pretože sa mi nepáči
chcete ručne prejsť a nájsť tú vec, ktorý hľadám.
Ale len tak si môžete vidieť, že som vlastne
pomocou správny kód, keď sa pozriete na URL pre Craigslist v bikes--
z nejakého dôvodu to nie je nájdený.
Ak sa pozriete na túto stránku a pozriete na URL,
to by mal byť zhodný s cURL požiadavku, ktorý som práve poslať.
A naozaj, to je to, čo je uložený v premennej doc.
>> Takže keď sa vrátite do nášho kódu, my potom môže pracovať na tejto premennej doc
pomocou CSS.
Takže povedať, chcel som sa dostať všetky tagy, ktoré sú span.txt,
a všetky A tagy v rámci tohto tagu.
A prečo my by sme mohli chcieť to, počujem ťa plakať?
>> Ak by sme Skontrolujte element, to vám dáva na členenie, ako je štruktúrovaný URL.
Keby som prechádzajte Tu môžete vidieť
, Čo každý z nich iný prvky zastupuje.
Takže možno chcem pristupovať tento konkrétny prvok.
Takže som s použitím Chrome vývojky nástroje pre Skontrolujte Element.
Vidím tu dole, že tento je značka v rámci rozpätia
tag s triedou txt.
>> Takže sa to dostane na náš prvá operácia, ktorá
je doc.css rozpätie, čo je značka, ktorá Hľadám rámci všetkého tejto adresy URL.
A potom .txt funguje podobne ako CSS robí, keď ste len písanie CSS
v súboroch HTML strany zadaním triedu.
Takže tento konkrétny operátor bude zadať span značku s triedou txt.
A potom, keď som sa nechať priestor, to bude potom ísť v tomto tagu
a potom nájsť tag jej rámci.
>> Takže keď som len dať to terminál, mal by som
byť schopní vidieť v podstate všetko, že je v rámci tohto rozpätia triedy txt.
Takže dáme, že na cestách.
ruby Craigslist-škrabka.
A naozaj, že nám všetky tieto dáva tagy rôznych zoznamoch, ktoré
sú na stránke Craigslist.
>> Takže keď sa vrátime, môžeme obrátiť to do niečoho trochu užitočný.
Možno, že chceme len tie odkazy.
Vzhľadom k tomu, v rámci tejto značky, ja tiež majú na hypertextový odkaz dráhy
že táto stránka ide.
Takže keď sa pozriete na tento kód tu, čo budem robiť, je miesto CSS,
Môžem ísť at_css.
A to bude len dostať prvý prvok všetky tie veci.
Takže ak by som mal na to, že sa v kód, ktorý som práve predtým preukázal,
namiesto vracia všetkých Z toho by to jednoducho
vráti prvý z nich.
Tak to je to, ako sa operátor at_css funguje.
>> Takže chceme ukladať cesta celú prvú tagu.
A pretože nám dá je-- tak sme stále bude používať .css.
Ale pretože to bude dať nás späť celá rada značiek,
budeme prístup prvý prvok.
Takže toto je ďalší spôsob, ktorý môžete prístup k akejkoľvek konkrétnej prvok, ak si
majú celý rad prvkov ktorá je vrátená,
pretože si môžete liečiť čokoľvek, .css sa vracia ako pole, v podstate.
A potom budeme pre prístup k hypertext referencie atribútom tohto.
>> Takže ak ste sa pozrieť, ak ste sa pozerali naozaj blízko tu,
Ak ste práve v podstate sa pozrieť na adresného riadku,
To je cesta, ktorú budete sa škrabanie.
Takže keď sme jednoducho spustiť to znova, a uistite sa, že sme chytá.
Môžete skontrolovať doma.
Toto vlastne zhoduje s týmto odkazom.
>> Tak prečo môžeme chcieť použiť?
Ak chcete škriabať stránky a má
stránka odkazov, ako je Craigslist dôjde,
chcieť ísť potom do každej z týchto odkazov
a potom škrípanie Obsah, ktorý, čo
je presne to, čo budeme robiť.
>> Takže až budete mať cestu ako variabilný, ja už naozaj
starostlivosť o tlači to.
Ja len potrebujete uložiť ho ako premennú.
A potom som si prístup k ďalšej strana rovnakým spôsobom pristupovať k
doc na prvom mieste.
S výnimkou URL, ideme použiť reťazec interpoláciu
ako by som bol popisujúci Ruby skôr pripojiť
cesta ku koncu koreňa.
>> Tak čo to bude robiť, je to bude dať na cestu
že som poškriabaný skôr a potom zase, že
do novej položky, čo chcete volajte to-- first_listing, napríklad.
Ale budem opustiť je na bode pre túto chvíľu,
pretože to je to, čo som pomocou tu.
>> Tak že som chcel získať popis prvý vysielania v Craigslist.
Takže by som ísť sem dole.
Chcel by som kliknite na Preskúmať prvok opäť, pretože toto je opis.
Ja by som ísť sem a vidieť či nájdem, ako by som mohol
môcť vyhľadávať pre túto jedinečnú značku.
A v tomto prípade, že má ID, čo nás vedie
na ďalší spôsob vyhľadávania tagy, čo je s hashtag.
>> Takže pre triedy, môžete používate operátor bodky.
Takže .txt udáva triedu txt, keďže, hash špecifikuje identifikátor.
Takže v tomto prípade, značka je sekciu, a ID je postingbody.
>> Tak to ide a zistí, first-- pretože sme
použitím at_css-- to ide a nájde prvý prvok, ktorý
príde s tag úseku a ID postingbody.
A potom môžete pristupovať k textový prvok tejto položky sa vrátil s .Texty.
A potom môžeme uložiť že v popise.
>> Takže teraz, že máme variabilný opis,
by sme mohli byť schopní urobiť, povedzme, I / O súboru. Takže I / O súboru v Ruby
je veľmi podobný súboru I / O v jazyku C, kde sme sa otvoriť súbor.
Mohli by sme do nej zapisovať.
A potom budeme zatvorte tento súbor.
>> Tak tu, sme len pomenovanie súboru, nejaké ľubovoľné premenné.
Mohli by sme tiež len dať to tu.
Máme premennú, že sme ukladanie súbor otvoriť ako s File.open.
A my píšete do tohto súboru, takže sme ho otvoriť w operátorom.
A potom dáme reťazec do súbor s operátorom .puts.
A potom dáme premenné, ktoré sme chcú zapísať do súboru v to.
A potom sme len zatvorte súbor.
>> Takže ak budeme pokračovať a spustiť to, to by malo vytvoriť dokument
s description.txt ktorý bude majú tento opis v ňom.
Takže keď som bežať to-- no.
Je to produkoval textový súbor s, Dúfajme, že to isté.
Takže tam by mohol byť nový vyslanie že to príde, keď som hovoril.
A skutočne to vyzerá, ako by tam bol.
Takže keď ideme do tejto klasickej koleso, 1962 až 1966, ktorý sa zdá na zápas.
A je to.
>> Tak to je najzákladnejšie funkčnosť škrabanie.
Mohli by sme mať miesto len písanie do tohto súboru,
môžeme pridať veci do poľa.
Takže ak Prehlasujem tri polia, názvu, ceny, a popis.
A my sme pôsobiaci na položku doc ​​teraz.
Môžeme prejsť a nájsť všetky span.txt.
A pamätajte si, to vráti pole všetkých položiek, ktoré nájde.
A potom sa v Ruby, stačí použiť .each iterovat každú položku
matice.
A potom pre každú položku, Ja som jednoducho ísť na to nazvať
odkaz, pretože to je podstate to, čo to je.
>> Takže keď som dal každý link.css dot a.hdrlnk, je to vlastne bude odkaz
a zistenia v rámci tohto odkazu iného HTML prvok a zodpovedajúce triedy.
Takže ak si spomenieme, čo to bolo so span.txt,
môžete See- dovoľte mi vrátiť sa real quick-- rámci span.txt
Máme veľa ďalších tried.
Takže vnútri span.txt hľadáme pre tag s triedou hdrlnk.
Dovoľte mi teda len zistiť, že pre vás naozaj rýchlo.
>> Takže si môžete pozrieť tu, to je značka že je v rámci rozpätia triedy txt
ktorá má triedy hdrlnk.
A to je skutočne to, čo snažíme sa dostať.
>> Takže sme teraz sa snaží ukladať všetky týchto väzieb vnútri titulu.
A potom budeme tlačiť z každej z týchto odkazov.
Nie, je mi ľúto.
Chystáme sa vytlačiť cena každého z nich.
Takže poďme bežať to naozaj rýchle a uvidíte, čo to robí.
>> Tak to proste v podstate šlo cez každého z odkazov
naopak, prístup značku sa jedná, a potom vytiahol cenu.
A to urobil preto, že po máte všetko v názve,
sme práve uložené titul tam.
Práve sme uložili odkaz v názve poľa.
A v tomto pre prevádzku slučky, kde namiesto aby išiel do a.hdrlnk,
hľadáme na span.price.
Takže keď som si len naozaj rýchlo nájsť cena, ak si prezrieť prvok,
uvidíte, že sa jedná o rozpätie s triedou ceny.
A to je v podstate, ako dostávame cenu tam.
>> Tak to je naozaj základný prípad škrabanie.
To je to, ako sa dostať všetky prvky na strane
že, povedzme, už viete, URL.
>> Takže ak chceme získať trochu viac do hĺbky,
môžeme škriabať stránok v rámci stránok.
A pre tento príklad, budem bude výstup do súboru CSV.
Takže som vyžadujúce csv tady pretože Ruby nie je, vo vnútri seba samého,
majú funkcie len výstupné CSV súborov.
Tak to je super jednoduché.
Dovoľte mi ísť na ďalšie.
Kryté sme súbor I / O. Tak toto je podobné, ako je to v C.
A predtým, než prejdeme k Kimono, Budem len ukázať vám naozaj rýchlo, ako
škrípanie miest v pamiatok.
>> Tak sme sa už naučili, ako vyhlásiť pole v Ruby.
Takže som len vyhlasujúce banda ľubovoľných polí
že budem ukladanie dát vnútri.
doc pracuje rovnakým spôsobom ako tomu bolo v predchádzajúcom súbore.
Ideme, hľadanie každý z span.txt rokov.
Už vieme, že.
To je nádoba, v ktorej každý odkaz má všetky údaje, ktoré chceme.
>> Tak tu to, čo robíme, je pre každého odkaz na span class txt, ideme dovnútra
a my sme nájsť značku, nájdenie prvý prvok, ktorý.
Pamätajte si, že CSS vráti pole, takže môžete nielen pristupovať, ako je.
Ideme nájsť prvý prvok.
Aj v prípade, že je to pole jedného položka, budete musieť použiť túto syntax,
a potom vytiahnite atribút href.
>> Tak sme to urobili skôr.
Tak by to malo vyzerať povedome.
A tak teraz máme rad zvané cesty všetkých našich odkazov
že budeme chcieť použiť.
Takže ak máme túto radu all z ciest, ktoré chceme použiť,
potom môžeme vytvoriť položku pre každého z týchto strán, keď sme sa otvoriť túto stránku.
Tak, ako sme tiež videli na syntaxe pred, kde
robí reťazec interpoláciu s cestou tu, tak syntax je len pre cestu.
A mohol by som menovať to variabilný akýkoľvek ľubovoľný názov.
>> To je dôležitý.
Toto je pole, že budete byť prístup každý prvok.
Ale keď hovoríte, že pre cestu v cestách, to znamená, že pre každý prvok v cestách,
nazývať to cesta, a použiť.
To je v podstate ako keď vás urobiť pre slučku a použiť int i.
Takže môžete zaobchádzať ceste ako premenná, ktorá je postupne.
>> A potom na každom z nich, ísť do každej z týchto odkazov.
Vzhľadom k tomu, že sme ich ukladanie v položke stránky, takže sme vytvoriť novú stránku zakaždým
k nemu dostaneme.
A potom sa v tejto novej stránky, nájsť span.postingtitletext, span.price,
a potom časť # postingbody.
Už sme sa vzťahuje oddiel # postingbody keď sme sa pozreli na popisu.
>> Takže môžeme ísť pozrieť na Craigslist poštou, ak ste práve pri pohľade na titul,
môžete vidieť tu, span postingtitletext.
A to je dôvod, prečo je to tam.
A potom za cenu, môžete pristupovať s span class ceny.
>> Tak sme tiež možno by mohol Chcete uložiť URL.
Tak sme si len spustiť tento znova, uložte ho v poli,
pretože ak hľadáte na Craigslist, že ste
pravdepodobne bude chcieť cestu k, ak Vidíte niečo, čo vás zaujíma,
vrátiť sa na tomto mieste.
Takže si len chcete uložiť URL pre odkazy záujmu.
>> To je len v podstate ďalšie syntax pre pre sláčiky.
Mohol by som si paths.each miesto , Pre cesty v cestách s indexom.
A to je syntaxe Ruby for-- Cesta je to, čo sme urobili tu,
deklarovanie premennej pre každú položku.
A index sa chová ako Aj v C pre slučky.
Takže môžete sledovať z toho, čo je index.
>> Takže tu je len málo vhodné vec
, Keď vediete škrabku.
Ak ste škrabanie stovky stránok, aby sa uistil, že to nie je visí,
to bude len výstup, Ja som prístup na túto stránku,
a uistiť sa, že je to stále pokračuje.
Ale pre naše účely, pretože tam je sto položiek,
Chystám sa prístup iba tri z nich tak, že nemáme čas vypršal tu.
>> Ale skôr, než sa dostaneme k tomu, ja som len chystá ukázať vám naozaj rýchlo,
Budem výstupu titul, cena, popis a URL
každého z odkazov, ktoré som Zaškrabávanie.
A potom je to len Syntax pre knižnicu CSV.
Otvorenie CSV.
To je to, čo budem hovoriť.
Otvorte ho s pre zápis do.
A potom CSV bude súbor, ktorý ste zadaním všetko do.
To je len šek pre zdravý rozum aby som vedel, že to beží.
A toto je môj zdravý rozum kontrola vedieť, že je to dokončené.
Takže som uvedenie titulu na riadku v CSV, cena, url, opis,
všetko do riadkov v CSV.
>> Takže keď ideme a beh tento now-- a ja som
uistite sa, že som namiesto toho zachránil to-- toho len výstup je ku koncovke,
by sme mali mať CSV Súbor, ktorý je produkovaný.
Takže tu môžeme vidieť CSV Súbor, ktorý sa vyrába.
Toto je výstup z scape, že som bežal.
Ako si môžete pozrieť tu, Prístup k stránky 0, 1, 2, 3.
Jedná sa o tituly, ceny, popisy.
A ak sa pozrieme na tomto formáte CSV súbor, ktorý sme generované,
si môžete pozrieť tu jeho výstup.
To nie je Excel, takže to nie je formátovaný v riadkoch a stĺpcoch.
Ale môžete si predstaviť, ako to by mohlo byť vo formáte.
>> CSV znamená hodnoty oddelené čiarkami.
Takže si viete predstaviť to môže byť niekoľko.
A každá čiarka by ukazujú samostatný stĺpec.
Len slovo caution-- niekedy, že ste
škrabanie veci s množstvom čiarkami.
Takže ak ste výstup že do súboru CSV,
To nemusí výstup spôsob, ako si možno myslíte.
>> Tak to je v podstate všetko tam je škrabanie základné HTML
stránky s Nokogiri.
>> Takže Internetom inovatívne, ako to má prísť
s viac automatizované a GUI verzie, aj keď menej robustné
verzia škrabanie rôznych internetových stránkach.
A pre naše účely Budem demonštrovať
rozšírenie Chrome s názvom kimono.
A všetko, čo musíte urobiť, je pri navigácii na stránku, ktorú chcete škriabať.
Ak kliknete na pole záujmu.
Môžete kalibrovať poľa, preto, že sa automaticky
zistiť, čo si myslia, chcete byť škrabanie,
a potom stačí len vytvoriť API.
>> Takže ak by sme mali demonštrovať to na Craigslist, že v skutočnosti by to fungovať.
A to je to, čo som šiel späť do hovorí o to nie je tak robustný.
Má problémy s vytvorením API.
Ale ako demonštrácia o tom, čo to urobí,
Ak nainštalujete rozšírenie Chrome, všetko, čo urobiť, je na neho kliknete.
To Kimonofies stránku, a potom vás kliknite na vec, ktorú chcete skript.
>> Takže ak by som mal kliknite na že by bolo zdôrazniť
to, čo si myslia, že to chcem byť oškrabaním túto stránku.
Takže som možno volať toto výpisy.
To je, koľko položiek sa Vybrala som.
A ja si len potvrdiť alebo vyvrátiť niektoré z ďalších navrhovaných výpisy
aby si ho pridať do čo sa bude poškriabaný.
>> Takže teraz môžeme vidieť, že je vybralo sto položiek.
Ak chcem mať ďalšie pole, ktoré som Tiež škrípanie čo súvisí s tým
že chcem, aby škrípanie cenu rovnako, potom môžem urobiť to isté.
>> Takže tu je ukážka toho, ako je to oveľa menej robustné, pretože teraz je to
Miesto vyzdvihnutia mesto toho len cena, ktorú chcem.
A teraz je to zdvihol 200 vecí.
Môžete sa vrátiť a odstrániť.
Môžete skúsiť znova.
Ale žiadne záruky.
To je, ako to funguje občas.
Ako vidíte tu, teraz sa hovorí, že 96 až sem.
Je to zdvihol väčšinu odkazov že chcete, aby škrípanie, ale nie
nutne všetky z nich.
>> Ďalším užitočným nástrojom Kimono hoci ich môžete ísť na pokročilými funkciami
tu, choďte na Rozšírené a to vám ukáže,
rozpis jedinečný spôsob, ako získať prístup k HTML
tagy, ktoré chcete škriabať.
Takže pre výpisy, keď sa pozriete na tú, ak máte prístup div p span span,
môžete skutočne stačí použiť to do Nokogiri kódu,
kde predtým, než sme sa span.txt pre prístup k každý z výpisov.
Ak Chcem len text v výpisy,
Mohol by som vstup div priestor p space space span span priestor a,
a to by dosiahnutie rovnakého účinku.
A pre tých z vás, ktorí majú záujem v pomocou regulárnych výrazov,
to sa stane aj vám pravidelný Expresie druh reťazca na vstupe
nájsť veci sa snažíte nájsť.
>> Takže je tu ďalšie zaujímavé funkcie kimono, kde si môžete na stránky,
ktorá je nielen môžem škriabať výsledky tejto stránke,
Môžem kliknúť na tento malý Tlačidlo tu, stránkovanie,
zadať tlačidlo, ktoré by vziať ma na ďalšiu stránku,
a potom to bude len viem, že to môže opakovať na ďalšiu stránku,
a potom škrípanie všetky the-- tak dlho ako je to rovnaký formát course--
scape všetky tie odkazy rovnako.
>> Takže pretože Kimono nechce práca s Craigslist, čo sme urobili
Je som Kimonofied Harvard Crimson.
Ja som vytiahol niektoré z druhu top Najlepšie články, potvrďte tu.
Povedzme, že všetky z nich.
Ja som zostavil toto rozhranie API pre vás dopredu.
Ale inak to, čo by ste robili Je by ste práve kliknite na tlačidlo Hotovo.
Zadajte vaše údaje API.
Nastavte ju buď automatické alebo ručné, kraul.
Takže ste mohli aktualizovať svoj Údaje každých 15 minút,
týždenné, denné, čo chcete.
Pomenujte API.
Vytvorte API.
K vášmu prospechu, som vytvorený Crimson už titulnej strane API.
>> Takže si jednoducho vytvoriť Účet na kimono, a to
bude ukladať všetky svoje API pre vás.
Takže v podstate, že to všetko tvoja samostatné rôzne odreniny.
>> Takže ak sa pozrieme tu, to je Názory odkazy, ktoré som zhromaždených.
Jedná sa o predstavoval odkazy, ktoré som zhromaždených.
A títo sú najčítanejší odkazy, ktoré som zhromaždených
Z tohto posledného API stvol.
>> Takže ak si môžete pozrieť tu, títo boli by predstavoval,
Tie by mali byť názory, ktorý je v tomto príklade,
Ja som ich kombinovať všetky do jednej kolekcie.
Ale ak si len hrať sa s ním trochu, môžete rozdeliť to
a rozdeliť ho však Ak chcete tak dlho,
ako formátovanie sa mierne líšia.
>> Len hrať sa s toto, kraul nastavenie, jeden z tienisté stránky
sa môžete len prechádzať hore 25 strán naraz.
To je jeden z limitujúcich faktorov.
Ale tu, ak nastavíte na ručné kraul, toto
je, ako môžete povedať, že k aktualizácii svojich informácií.
A tu môžete vidieť históriu prehliadania všetkého, čo ste liezol.
A vy môžete ísť späť, prihláste sa, hrať sa so všetkými rôznymi spôsobmi
ktoré môžete upravovať a používať vaše dáta.
>> Kimono môže byť nastavený tak, aby škrípanie odkazov v rámci odkazy.
A vy by ste tak urobiť tým, že najprv škrabanie zoznam odkazov,
a potom sa pomocou tejto API vo forme skočiť bod pre ďalší API
že ste vytvoriť skript.
Ale to je zložitejšie, než čo budeme sa dostať do dnes.
>> Tak to je Kimono.
Porozprávame sa o výhodách a zápory Nokogiri a kimono.
>> Nokogiri, je to naozaj rýchlo.
Je to ľahké otestovať.
Stačí si len stavajú nič konzoly, ľahko konfigurovať.
Môžete sa rozhodnúť, čo presne Ak chcete šrot a obchod.
Neexistujú žiadne obmedzenia stránok.
Vlastne som používal to, aby škrípanie, ako 1800 juhoafrických webové stránky školy
e-mailov na stáž že som to urobil.
>> Tak to je možné, aj keď osvedčených postupov by bolo rozdeliť skript.
Pretože ak to zlyhá, potom nechcete dostať nič.
Ale ak si stovku, Možno 200 strán v čase,
potom máte nejaké šancu aspoň ako sa to po častiach, a to najmä
ak máte zlé pripojenie k internetu.
>> Bohužiaľ to môže škriabať len HTML.
Takže ak máte dynamicky namáhané pages--
a ja vám ukážem príklad ako kajaku v A second--
Nokogiri bohužiaľ Nemožno škriabať to.
>> Ale Kimono je tiež jednoduché použitie.
Ako ste videli, že je to v podstate bod a kliknite na tlačidlo.
To môže škriabať JavaScript.
Bohužiaľ, tam je maximum na koľko stránok môžete škriabať.
Niekedy je to trochu ťažko konfigurovať.
To dostane zmätený.
Ale je to určite niečo, aby zvážila
ak nie ste sa snaží mať Super robustný udržiavateľný škrabanec.
Ak si len chcete dostať všetko sa rýchlo preč stránky,
potom Kimono je naozaj dobrý nástroj na použitie.
A ako som sa zmienil predtým, je tu pokročilý rys Kimono
že, ako ukazuje Prístup k jedinečnej HTML
prvok, čo je super užitočné aj Ak pracujete v Nokogiri.
>> Takže keď ideme na stránky Kayak, pre Napríklad môžete vidieť, že je--
alebo možno nie je vidieť.
Ale keď ti ukážem URL pre Kayak, to vlastne je len zdrojom adresa URL.
Toto je URL predchádzajúcej k bytiu modifikovaná akýmikoľvek skriptoch JavaScript
že majú deje.
A bude to vyzerať inak od kontroly prvok.
>> Takže ak si prejsť a vy Zápas sa Skontrolujte Element
Kód do zdrojového kódu, je to v skutočnosti bude inak.
A to je v podstate dôvod, prečo Nokogiri Nemožno škriabať dynamicky načítané stránky.
Vzhľadom k tomu, Nokogiri je škrabanie zdroj URL,
keďže, Kimono je vlastne škrabanie, čo ste v podstate
videnie vo vybraných Element.
>> Takže keď som sa prejsť a ja pokúsiť Kimonofy Kajak,
Ja si skutočne prejsť a vyberte cenu.
Je to trochu ťažšie, a v tomto prípade, je to
v skutočnosti vidieť túto cenu za odlišné od nich.
Takže vzhľadom k tomu, môžete configure-- alebo ak to nebolo dynamicky načítaný,
môžete konfigurovať Nokogiri získať všetky tieto.
>> Vzhľadom k tomu, formátovanie je mierne odlišné pre tento záznam
ako to je v porovnaní so zvyškom z nich, a môžete vidieť tu
je to vlastne preč a vybrané všetky ceny letu.
Možno, že chcem vybrať Doba letu rovnako.
A môžem prejsť a nejako nastaviť, ktoré.
Nechcem to.
Chcem len čas na ďalší let je.
A potom sa po niekoľkých z nich prechádza, dostane obraz.
Takže Kimono je celkom šikovný.
Je to jednoducho nie je tak robustný.
>> Tam sú niektoré ďalšie alternatívy, ktoré môžete použiť.
A ja ti ukážem je tu.
Ak ste pohodlnejšie Python miesto Ruby možno,
K dispozícii je knižnica volal Krásne polievka.
Môžete ju využiť.
Je to veľmi podobné Nokogiri.
To má niekoľko ďalších funkcií.
Môžete si nájsť tag HTML a potom sa presunúť do pohybu do strán.
>> Tam je PyQt.
To môže v skutočnosti škriabať dynamický miesta, pretože je to niečo
je WebKit, ktorý predstiera, že je prehliadač bez toho by vlastne
že je prehliadač.
Tak to by sa čakať na všetky JavaScript načítať prvý, a potom
ísť a pokúsiť sa škrípanie miesto.
>> Ak chcete držať s Ruby, budete môže ísť o úroveň vyššie od Nokogiri.
Môžete použiť Kapybara s poltergeist obal.
A to môže vlastne v podstate to isté,
as PyQt, čo je, že je WebKit.
To čaká na JavaScript načítať ako prvý.
Ak zložito manipulovať s ním dosť, môžete dokonca si to kliknite na veci.
>> Takže ak tam je odkaz, ktorý nie je klasickým href, kde
cesta je ľahko prístupné, a je to nejaký JavaScript vec, ktorá detekuje
kliknutí, môžete skutočne urobiť.
Čím viac populárne knižnica simulovať užívateľa
je v JavaScriptu, ktorý je PhantomJS.
To môže samozrejme škriabať dynamický weby, pretože toto je nevyhnutne
predstierať, že Chrome bez užívateľského rozhrania.
>> A potom, samozrejme najviac robustný, ale najpomalší variant,
je automatizácia Selén prehliadač.
A bohužiaľ, vy nebude
schopní to urobiť priamo vo Vašom CS50 IDE.
Vzhľadom k tomu, v podstate čo to urobí, je, že topánky svoj Chrome,
Firefox, bez ohľadu na prehliadač ktorý chcete použiť,
a sleduje možná myš pohyb, čo napíšete,
a to tak nejako tento proces automatizuje.
Takže to bol vyvinutý ako druh Webové stránky testovanie nástroj pre automatizáciu.
Ale mnoho ľudí používa Selén škriabať webové stránky
ktoré inak majú Veľa obtiažnosti škrabanie
s niektorými z týchto iných, rýchlejší nástroje.
>> Tak to je všetko, čo mám pre web škrabanie.
Bav sa.
>> Divákov: Otázka.
>> Robert Krábek: Áno.
>> Divákov: Existuje mechanizmus pre hash webové stránky, takže si mohol v podstate
prejsť neskôr.
ROBERT Krábek: Jo.
Takže sme dať v našej Napríklad pre oboch,
dáme celé webové stránky do doc.
A tak by ste mohli skutočne len vziať premenná doc a zapísať ho do súboru.
Takže keď som chcel, mohol by som zapísať ju ako súbor HTML,
a potom sa namiesto použitia OpenURI a žiadosť cURL,
Potom som mohol len otvoriť doc HTML a potom hľadať to.
>> Divákov: Ale môžete zachovať druh online zážitku
zatiaľ čo vy offline.
Napríklad. keď ste lietanie po dobu niekoľkých hodín,
Chcem sa v podstate archív celé webové stránky. [Nepočuteľných]
>> ROBERT Krábek: Jo, to je exactly-- tak doslova, čo to robí
Je to berie všetko že by to bolo na tejto adrese URL.
Takže keď sme bežali lokne, to je Vzhľadom ku všetkým týmto HTML,
a to uložením vnútri premenné doc.
Takže si môžete robiť, čo chcete urobiť s doc.
Môžete výstup do súboru.
Divákov: Ale nie je to prepojené.
To nie je dynamický.
To nie je rekurzívne, že jo?
Vieš, čo tým myslím?
Snažím sa v podstate akýsi hash celé webové stránky na mojom pevnom disku
tak, že by som mohol v podstate to po dobu niekoľkých hodín bez pripojenia k internetu.
>> ROBERT Krábek: Správne.
Takže keď som had-- tak kde je môj súbor I / O?
Tak toto je súbor I / O. A tak namiesto toho hovoria z toho, hovorím toto craigslist.html.
Ja by som otvoriť, že až.
Ja by som Kladie doc do neho.
Aj zatvorte súbor.
A potom už len preto, že CS50 IDE je na oblaku, to je čokoľvek.
Môžem ísť sem.
Ja si môžete stiahnuť súbor.
A potom by to bolo na mojom pevnom disku.
Takže si môžete urobiť to tak.
Alebo ak ste doma, nie pomocou CS50 IDE, ako je Sublime alebo tak niečo,
To je ešte jednoduchšie, pretože to všetko je k dispozícii na mieste,
nie je viazaná na internete.
>> Divákov: Vidím.
To je pre jeden konkrétny problém.
Môžete to urobiť tak, že rekurzívne ísť niekoľko vrstiev hlboké také veci?
>> ROBERT Krábek: Ja si môžete stiahnuť zložky tiež, či je to to, čo sa pýtate.
Divákov: Jo.
>> ROBERT Krábek: cool.