[Muzikos grojimo] ROBERT KRABEK: Sveiki, vaikinai. Mano vardas yra Robert Krabek ir Aš būsiu moko jus vaikinai Kaip Sunkiai internete su Nokogiri, kuris yra Ruby biblioteka, ir kimono, kuris yra "Chrome" pratęsimo. Taigi, pirmiausia ten pora dalykų, kad jūs galite daryti, jei gal jūs buvote daro visas psets šiol ir jūsų darbo vieta truputį pilna. Mes iš tikrųjų gali tiesiog eiti ir sukurti naują darbo vietą, Jums tiesiog padaryti naują projektą. Taigi, jei jūs norite toliau dirba CS50 Šablono ID numeris kad šiuo metu turite, nedvejodami, ir jūs galite tiesiog įdiegti Nokogiri su CFLAGS equals-- perlas įdiegti nokogiri. Bet kitaip aš jums parodysiu kaip nustatyti naują vieną. Ir tai yra iš esmės nuleisti daugiau mokymo ratus. Ir jūs kodavimą, jei buvo tik kodavimo Sublime ar kažką. Taigi, jei mes perkelti jį per. Taigi pasakyti, tai yra jūsų dabartinis CS 50 ID. Jūs galite tiesiog pereiti į Cloud9 čia. Jūs galite pereiti prie prietaisų skydelio. Ji turėtų auklėti darbo vietos skirtuką. Ir tada galite tiesiog spustelėkite čia Sukurti naują Workspace. Pavadinkite savo naują darbo vietą, gal bandymas arba grandymo. Ir tada šis paprotys skirtuką čia vietoj CS50 šablonų kortelėje. Ir tada jūs galite tiesiog eiti ir sukurti naują darbo vietą. Aš jau sukūrė darbo vietą čia. Taigi mes dirbti su tai. Ir jei jūs sukūrėte naują darbo vietą, kad su Custom kortelėje galite tiesiog įrašykite perlas įdiegti nokogiri, kuris nesiruošia čia. Gerai, tai šiek tiek sušaldyti. Bet jūs galite įvesti perlas įdiegti nokogiri. Ir tai turėtų būti visi, kad yra įrenginiui. Kaip minėjau anksčiau, jei jūs vis dar dirba savo CS50 Šablono ID numeris, Jums tereikia įvesti CFLAGS lygus perlas įdiegti nokogiri. Ir aš jau įdiegta tai čia, kad aš to nedarysiu. Bet tiems, po kartu, nedvejodami tai padaryti. Taigi, kai jūs turite savo Nokogiri Workspace ar bibliotekoje įdiegta, Aš norėčiau duoti jums šiek tiek avarijos žinoma Ruby sintaksė nes Nokogiri yra Ruby biblioteka. Taigi jums reikia žinoti keletą pagrindinė Ruby sintaksė dirbti su Nokogiri. Todėl kai kurie pagrindiniai skirtumai nuo to, ką įpratę prie galbūt, jei dirbu iki šiol tik C ir PHP, Jums deklaruoti kintamuosius be tipą. Jūs neturite naudoti Kabliataškis, kuris yra tipo reljefo. Nėra jokių skliaustai dabar aplink už arba, o kilpos, pavyzdžiui. Jums tereikia kodo bloką, ir tada jūs įdėti pabaigą ties šiuo tikslu. Nėra plius plius minus minus, todėl tiesiog žinau, kad, kai darote už kilpos, vos plius lygūs ir atėmus lygus. Ir vietoj maišos apima, jums naudoti reikia tada kokia biblioteka bando įkelti į savo programą. Ruby yra ne renkami kalba. Taigi, kad dar viena lengvata. Tai labiau panašūs į PHP kur tai yra aiškinama kalba. Jūs galite paleisti bet kokį Ruby scenarijų, rašote su Ruby po pagal savo scenarijų ar programą pavadinimu. Norėdami reiškia, kad tai Ruby programa, jūs tiesiog galų jį su .rb vietoj .c. Ir ten yra kintamos dydžio matricas Ruby, kuri yra super patogu, kai esate grandymo ir galbūt norite pridėti duomenų, kad jūs mėšlą išmeta į masyvą. Jūs neturite malloc naują masyvo ir kopijuoti seną masyvo į naują masyvą. Jūs galite tiesiog pridėti su du rodyklių ženklai. Ir nėra jokių simbolių, yra vos viena raidė įsipareigojimų. Taigi, kad turėtų būti šiek tiek lengviau. Taigi mes tiesiog suteikti jums kai pavyzdžiai kai pagrindinio Ruby sintaksė. Taigi čia galite pamatyti, kad vietoj Slash velniop, komentuoti Ruby, jūs tiesiog naudokite svaras ženklas. Ir kintamasis deklaracija, jums tiesiog įveskite kintamas dydžiu neprilygstami ką norite kintamasis būtų. Jie gali būti be įsipareigojimų. Jūs galite turėti masyvas, kuris Jums užpildyti su vertybėmis. užsideda ir grafika yra panašūs. Mūsų tikslais Vienintelis skirtumas yra tai tikrai kad kelia, kuris reiškia užsideda, tiesiog iškelia naują eilutę charakteris ne ką jūs spausdinate. Taigi, jei mes suteikiame mažas demonstravimo čia mes galime paleisti tai with-- atidaryti naują terminalą. Jūs galite pamatyti visus šiuos failų, kurie yra mano terminalą. Ir jei aš tiesiog paleisti Rubinas, rubinas intro.rb, ją iškelia iš penkių Sveiki Mather, Quincy, vežėjas. Adams. Taigi, kad viskas yra Deklaruojančiojo matricos. Auditorija: Robertas, jūs galite padaryti Jūsų šrifto šiek tiek didesnis? ROBERT KRABEK: Taip. Ir aš galiu padidinti, nes galite ne priartinti prie terminalų šriftų matyt. Štai kaip jūs spausdinti kintamieji į savo terminalą. Taip pat galite naudoti kintamieji viduje eilutę. Taigi neseniai PHP, Jūs galbūt jau išmoko kad yra eilutė interpoliacija. Taigi, jei jūs pažvelgti čia, jei aš paskelbti trys kintamieji, vardą, biblioteka, ir kalbos, o aš užsideda, aš parašyti eilutę, Sveiki, mano vardas yra. Ir tada vietoj PHP versija styginių interpoliacijos kuri atrodo šiek tiek daugiau, kaip šis, turite svaras ženklą, ir tada garbanotas petnešomis, o tada kintamojo vardas. Ir tai, kaip norite spausdinti, tarkim, kokia kintamojo vardas. Ir tada jūs galite taip pat Jungiant eilutes. Ruby daro super lengva su pliuso ženklu. Jūs tiesiog turi vieną eilutę kairėje plius kintamojo arba kitą eilutę plius eilutė. Taigi, jei aš tai atspausdinti iš, ji turėtų tiesiog pasakyti Sveiki, mano vardas yra Robert. Aš būsiu mokyti jums nokogiri Ruby. Ir tegul tik patvirtina, kad ši iš tikrųjų yra case-- rubino intro. Sveiki, mano vardas yra Robert. Aš būsiu mokyti jums nokogiri Ruby. Permainos, jei kitur ataskaitų, tai šiek tiek skiriasi nuo to, ką jums gali būti naudojamas jei dirbu C Jums nereikia skliaustuose. Jums nereikia garbanotas petnešos. Ir vietoj kitur, jei tai sudurtinius elsif. Taigi čia, jei aš paskelbė x iki čia, kaip matome, čia x yra dar 5. Taigi, jei x yra mažiau nei 3, jis bus įdėti mažas. Jei tai yra mažiau nei 7, vidutinės, kitur didelis. Taigi 5 yra vidutinio numeris. Ir aš galų šį kodą pabaigoje bloką. Čia yra mano už kilpa. Ir tai sintaksė yra taip pat šiek tiek skiriasi. 0 penkių tiesiog iš esmės yra skelbiantys 0 masyvus iki 5. Taigi ten penki laiko tarpsniai masyve. Ir tada kiekvieno, kad lizdas masyvas, aš būsiu incrementing i. Taigi, šis turi atspausdinti 0 iki 5, arba 0 iki 4. Ir tai turėtų spausdinti terpėje. Ir aš tiesiog Blaze per. Vaikinai turės prieigą šio kodo vėliau. Taigi vaikinai gali paleisti šią patys. Taigi tai yra jūsų pagrindinė while cikle. Tai tiesiog spausdinti j, incrementing 1, kol mes nukentėjo 5. Super greitas Ruby avarijos metu apie tai, kaip rašyti funkciją. Vietoj, tarkim, int faktorialas skaičius, mes tiesiog turime def. Ir iš esmės esate apibrėžti funkciją čia. Tai ketina būti Pavadinimas funkcija, ir tai visi kintamieji, kad jūs nori perduoti į funkciją. Jūs galite turėti if viduje. Galite grįžti. Šiuo atveju, mes apibrėžiant rekursyviai įgyvendinama faktorialas funkcija. Taigi mes tiesiog paskambinkite funkcijas Ruby, kaip šis. Taigi, jei aš tai apibrėžta, aš galite skambinti faktorialas, perduoti 3, ir tada 3 bus numeris kintamasis kad aš galiu naudoti per funkcija. Ir tai to_s tiesiog sukdami grįžti vertę faktorialas į eilutę. Priešingu atveju tai bus mesti klaida sakydamas oh, aš negali spausdinti string-- nes, kaip pamenate, Pateikia yra įdėti string-- nes tai faktorialas grįžo numerį. Taigi, mes galime konvertuoti, kad su panašaus pavyzdžiui eilutę. Ir atvirkščiai, taip pat galite konvertuoti styginių susitarimą su to_i sveikojo skaičiaus. Taigi ir viskas super paprasta, jei aš tiesiog pakomentuoti tai iš, išskyrus ir paleisti faktorialas funkciją. Turėtume galės pamatyti kad iš 3 faktorialinis yra 6. Ir tai yra tiesa. Taigi, kad jūsų avarijos metu Ruby. Ir dabar, kad jūs žinote, Ruby, mes galime eiti pagrindinio Nokogiri grandymo išsidėstymą aikštelėje. Iš esmės viskas, ką turite padaryti, tai, Ruby, reikalauti, kad bibliotekose. Ir mūsų tikslais mes būsime naudojant biblioteka OpenURI taip pat Nokogiri. Ir tada ką do-- ir jis bus turėtumėte už this-- sintaksę yra atidaryti URL kiek jūs darytumėte curl prašymas, kuris žymi C URL. Taigi jūs imtis iš URL atitinkama svetainė. Jūs saugote ją į kintamąjį. Ir tada jūs galite ieškoti per tą kintamasis unikalių HTML žymes naudojant .CSS komanda. Ir tada jūs galite išvesties turinio, kur norite. Galite pradėti duomenų bazėje. Jūs galite išvesti į failą arba net tiesiog atsispausdinti jį į ekraną. Taigi mes jums parodysime pagrindinę grandiklį. Taigi čia matote, mes turime reikia nokogiri, reikalauja atviru uri. Jūsų pagrindinė įsteigti, galime vadina jį dokumentas arba doc, lygus Nokogiri :: HTML atvira, kuris yra komandą, jeigu mums iš OpenURI biblioteka. Ir mes ieškoti, tiems, Jūs, kurie gali būti gyvename Quad, Dviračių, kurie yra išvardyti Bostone nuo Bostono Craigslist dviračių skyriuje Svetainės. Taigi, jei esate susipažinę su curl, aš tiesiog parodyti jums, nekilnojamojo greitai ką Curl darys. Jei aš norėjau gauti visus URL iš Craigslist svetainėje, jei aš tipo garbanės, jis tiesiog išverčia visus URL iš Craigslist dviračių svetainėje ant mano terminalą. Tai ne itin naudinga, nes aš ne norite rankiniu būdu pereiti ir rasti ką aš ieškote. Bet tik taip galite pamatyti, kad aš iš tikrųjų naudojant tinkamą kodą, jei peržvelgsite ne dėl Craigslist URL bikes-- dėl tam tikrų priežasčių jis nerastas. Jei pažvelgti į šį puslapį ir jums pažvelgti į URL, tai turėtų būti identiškas Curl prašymas, kad aš tiesiog siųsti. Ir iš tiesų, tai, kas yra saugomi dok kintamąjį. Taigi, kai jūs grįžti į mūsų kodu mes tada gali veikti šį dok kintamojo naudojant .CSS. Taigi pasakyti, kad aš norėjau gauti visus žodžius, kurie span.txt, ir visi A žymės toje žyma. Ir kodėl gali norime tai padaryti, aš išgirsti jūsų verkti? Jei mes Apžiūrėkite elementas, ji suteikia jums suskirstymas kaip URL struktūra. Jei aš slinkite žemyn per Čia galite matyti ką kiekvienas iš jų skirtingas elementai atstovauja. Taigi gal norite prisijungti prie Tai ypač elementas. Taigi aš naudoju Chrome kūrėjas Įrankiai Apžiūrėkite elementas. Matau žemyn čia, kad ši yra A per tarpą žymė pažymėti su txt klasėje. Taigi tai gauna mūsų Pirmoji operacija, kuri yra doc.css trukmė, kuri yra žyma, kad Aš ieškau per visą šį URL. Ir tada .txt veikia panašiai kaip CSS daro, kai jūs tik raštu CSS į HTML failus pagal nurodant klasę. Taigi būtent šis operatorius nurodyti žymą span klasės txt. Ir tada, jei aš palikti tarpą, tai tada eiti per tą žymę ir tada rasti per tą žymė. Taigi, jei aš tiesiog įdėti tai terminalas, turėčiau galės pamatyti iš esmės viską kad per šį klasės txt trukmę. Taigi mes suteiksime kad eiti. Ruby Craigslist-grandiklis. Ir iš tiesų, kad suteikia mums visa tai Žymos įvairių aukcionai, yra Craigslist puslapyje. Taigi, jei mes einame atgal, mes galime išjungti šią į kažką šiek tiek daugiau naudinga. Gal mes norime tik nuorodas. Kadangi per šį žymeles, aš taip pat turėti kelias hipersaitą kad šis puslapis eina. Taigi, jei jums pažvelgti į šio kodekso čia ką aš padaryti, tai vietoj CSS, Aš galiu eiti at_css. Ir tai bus tik gauti pirmą elementas visų šių dalykų. Taigi, jei aš buvo padaryti, kad Aukštyn kodas Aš tiesiog įrodytas anksčiau, o ne grąžinant visi tai, kad būtų tiesiog grįžti pirmąjį vienas iš tų. Štai kaip at_css operatorius veikia. Taigi mes norime laikyti Kelias visi pirmą žymės. Ir todėl, kad duos mums a-- todėl mes vis dar ketinate naudoti CSS. Bet kadangi tai ketina duoti mums atgal visą masyvas žymeles, mes ketiname gauti pirmasis elementas. Taigi tai yra dar vienas būdas, kad galite naudotis bet kuris konkretus elementas, jei turi elementų masyvas kad yra grąžinamas, nes galite laikyti nieko, kad CSS grįžta kaip masyvo esmės. Ir tada mes ketiname prieiti prie hiperteksto nuorodos atributas tai. Taigi, jei jūs pažvelgti, jei jums atrodė tikrai arti čia jei jūs tiesiog iš esmės pažvelgti į URL juostoje, tai kelias, kad jūs ketinate būti grandymo. Taigi, jei mes tiesiog paleisti tai dar kartą, ir įsitikinkite, kad mes jį išgelbėjo. Galite patikrinti namuose. Tai iš tiesų atitinka su šia nuorodą. Tad kodėl gali norime tai naudoti? Jei norite Sunkiai puslapis ir ji turi Nuorodų kaip puslapis Craigslist daro, jums galbūt norėsite eiti tada į kiekvieną iš šių ryšių ir tada Sunkiai turinys, kad, kuris yra būtent tai, ką mes ketiname daryti. Taigi, kai turite kelias, kaip kintamasis, aš nebėra tikrai rūpi spausdinimo jį. Aš tiesiog reikia saugoti jį kaip kintamąjį. Ir tada aš galiu prieiti prie kito puslapis tas pats kaip man prisijungti prie doc pirmąją vietą. Išskyrus su URL, mes ketiname naudoti string interpoliacija kaip man buvo apibūdindami Ruby anksčiau pridėti kelias į šaknies pabaigoje. Taigi, kas tai ketina padaryti, tai tai vyksta įdėti kelyje kad aš nuskustas anksčiau ir tada įjunkite, kad į naują elementą, ką norite skambinti it-- first_listing, pavyzdžiui. Bet aš ruošiuosi palikti tai ant elemento dabar, nes tai, ką aš naudoju čia. Taigi pasakyti, kad aš norėjau gauti aprašymą Pirmos komandiravimo Craigslist. Taigi norėčiau eiti čia. Norėčiau spustelėkite Tikrinti elementą dar kartą, nes tai yra, aprašymas. Norėčiau eiti čia ir pamatyti jei galiu rasti, kaip galėčiau būtų galima ieškoti šio unikalaus žyme. Ir šiuo atveju, ji turi tapatybės, kuris veda mus mūsų kitą būdą ieškoti žymės, kuri yra su grotelėmis. Taigi klasių, galite naudoti dot operatorių. Taigi .txt yra nurodant TXT klasę, o maišos Nurodo ID. Taigi, šiuo atveju, tag skyriuje, o ID postingbody. Taigi, tai eina ir randa first--, nes mes naudojant at_css-- tai eina ir nustato pirmąjį elementą, kuris ateina su skyriaus žyma ir postingbody ID. Ir tada jūs galite prisijungti prie teksto elementą šio daikto sugrįžo su .text. Ir tada mes galime laikyti kad aprašyme. Taigi dabar, kad mes turime Kintamojo aprašymas, galėtume padaryti, tarkim, failą I / O. Taigi failą I / O Ruby yra labai panašus į failą I / O C kur mes atidaryti failą. Mes galime rašyti į jį. Ir tada mes uždaryti šį failą. Taigi čia mes tiesiog įvardijimo failą, kai savavališkai kintamąjį. Mes taip pat galėjo tiesiog tai čia. Mes turime kintamąjį, kad mes saugojimo atviras failas kaip ir File.open. Ir mes rašote į šį failą, todėl mes jį atidaryti su w operatorius. Ir tada mes įdėti eilutę į file su .puts operatorius. Ir tada mes įdėti kintamąjį, kad mes norite rašyti per tą failą. Ir tada mes tiesiog uždarykite rinkmeną. Taigi, jei mes einame į priekį ir paleisti tai, tai turėtų pateikti dokumentą su description.txt kurie bus turi šį aprašymą joje. Taigi, jei aš paleisti it-- Nr. Jis gaminamas tekstinį failą su, Tikimės, kad tas pats dalykas. Taigi galėjo būti Naujas skelbimas kad manimi sugalvoti, o aš kalbu. Ir iš tiesų atrodo, kad ten buvo. Taigi, jei mes einame į tai klasikinis dviratis, 1962 1966, kuri, atrodo, kad atitiktų. Ir ten jūs einate. Taigi, kad pati pagrindinė funkcionalumas pagrandukas. Galėtume turėti vietoj tik raštu į šį failą, mes galime pridėti dalykų į masyvą. Taigi, jei aš pareiškiu, trys matricos, pavadinimas, kaina, aprašymas. Ir mes veikianti dok punktu dabar. Mes galime pereiti ir visus span.txt. Ir atminkite, tai grąžina masyvą visų daiktų, kad ji nustato. Ir tada Ruby, galite tiesiog naudoti .Each į kartoti per kiekvieną elementą masyvo. Ir tada kiekvieno elemento, Aš tik ketina jį pavadinti nuoroda, nes tai iš esmės kas tai yra. Taigi, jei aš įdėti kiekvieną link.css dot a.hdrlnk, Tai iš tikrųjų vyksta į nuorodą ir ieškant per tą nuorodą kitą HTML elementas ir atitinkamą klasę. Taigi, jei mes prisimename, ką tai buvo, The span.txt, galite SUTAPIMO leiskite man tiesiog grįžti nekilnojamojo quick-- per span.txt turime kitų klasių daug. Taigi viduje span.txt, mes ieškome už žymos su klasės hdrlnk. Taigi leiskite man tiesiog rasti, kad Jums vaikinai nekilnojamojo greitai. Taigi galite pamatyti čia, tai tegus tai per klasės txt span kad turi klasės hdrlnk. Ir tai iš tiesų ką mes bandome gauti. Taigi mes dabar bando saugoti visus iš tų nuorodų viduje pavadinimą. Ir tada mes ketiname spausdinti iš kiekvienos iš šių nuorodų. Ne, atsiprasau. Mes ketiname spausdinti kiekvieno iš jų kaina. Taigi leiskite paleisti tai tikrai greitai ir pažiūrėkite, ką ji daro. Taigi tai tiesiog iš esmės nuėjo per kiekvieną nuorodomis savo ruožtu, atvertas žymę klausimą, ir tada ištraukė kainą. Ir tai padarė, nes po jūs turite viską pavadinime mes ką tik saugomi titulą ten. Mes ką tik išsaugotą nuorodą per masyvo pavadinimas. Ir tai už kilpos veikimo, kur vietoj vyksta į a.hdrlnk, Mes ieškome už span.price. Taigi, jei aš tikrai gali tiesiog rasti labai greitai kaina, jei apžiūrėti elementas, pamatysite, kad jis yra span su kaina klasės. Ir tai iš esmės, kaip mes vis kainą ten. Taigi, kad tikrai Pagrindinė byla pagrandukas. Štai kaip jūs gaunate visus ant puslapio elementai kad, tarkim, jūs jau žinote, kad URL. Taigi, jei norime gauti šiek tiek daugiau gylio, mes galime Sunkiai puslapių puslapius. Ir šiame pavyzdyje, aš būti išvedė į CSV failą. Taigi, aš reikia CSV čia nes Ruby nėra, viduje savaime, turėti funkcionalumą tiesiog išvesties CSV failus. Taigi, kad super paprasta. Leiskite man tiesiog eiti į kitą. Mes apėmė failą I / O. Taigi tai yra panašus į tai, kaip tai yra C. Ir kol mes pereiti prie kimono, Aš tiesiog parodyti jums tikrai greitai, kaip Sunkiai svetaines per paminklų. Taigi, mes jau išmoko, kaip deklaruoti masyvus Ruby. Taigi aš tiesiog pareiškimu, krūva savavališkai masyvai kad aš bus saugoti duomenis per. doc veikia tuo pačiu būdu kaip tai padarė ankstesnį failą. Mes ketiname į, rasti kiekviena span.txt aisiais. Mes jau žinome, kad. Tai yra konteineris, per kurį kiekvienas nurodo turi visus duomenis, kad mes norime. Taigi čia, ką mes darome, yra kiekvieno grandis span class txt, mes ketiname į ir mes rasti žymą, rasti pirmąjį elementą, kad. Atminkite, .CSS grąžina masyvą, todėl jūs galite ne tik naudotis kaip yra. Mes ketiname rasti pirmąjį elementą. Net jei tai yra vienos masyvo elementą, jūs turite naudoti šią sintaksę, ir tada ištraukite href atributas. Taigi, mes padarėme tai anksčiau. Taigi tai turėtų atrodyti pažįstamas. Ir todėl dabar turime masyvą vadinami keliai visi mūsų nuorodos kad mes ketiname naudoti. Taigi, jei mes turime šį visų masyvo iš kelių, kad mes norite naudoti, mes tada gali sukurti kiekvienam elementui iš tų puslapių, kai mes atidaryti šį puslapį. Taigi, kaip mes taip pat mačiau sintaksė anksčiau, kur daro string interpoliacija su keliu čia, todėl sintaksė yra tik keliu. Ir aš tai galėtų pavadinti kintamasis savavališkai pavadinimą. Tai yra svarbus. Tai masyvo, kad jums būti pasiekti kiekvieną elementą. Bet kai jūs sakote už kelią, takai, tai reiškia, kiekvienam takais elemento, vadina jį kelias, ir ją naudoti. Tai iš esmės patinka, kai jums padaryti už kilpos ir naudoti int i. Taigi jūs galite gydyti kelią kaip ir į nustatomas kintamasis, kuris manimi pokyčio. Ir tada kiekviena iš tų,, eiti į kiekvieną iš šių nuorodų. Kadangi mes ją saugoti prekės puslapyje, todėl mes sukurti naują puslapį, kiekvieną kartą mes jį pasiekti. Ir tada per tą naują puslapį, ieškoti span.postingtitletext, span.price, ir tada skyriuje # postingbody. Mes jau apėmė skyrių # postingbody kai mes pažvelgė aprašymas. Taigi, mes galime eiti pamatyti Craigslist paštu jei jūs tiesiog ieško pavadinimą, jūs galite pamatyti jį čia span postingtitletext. Ir štai kodėl jis ten. Ir tada už kainą, galite jį iškviesti span class kainos. Taigi mes taip pat turbūt galėtų norite išsaugoti URL. Taigi mes tiesiog paleisti tai vėl laikyti jį masyvą, nes jei jūs ieškote Craigslist, jūs tikriausiai norės kelią, jei pamatysite kažką, kad jus domina, grįžti į šią svetainę. Taigi jūs tiesiog norite išsaugoti už literatūros labui URL. Tai tik iš esmės kitas sintaksė už kilpa. Galėčiau tiesiog paths.each vietoj iš už keliu takais su indeksu. Ir tai sintaksė yra Ruby for-- Kelias yra tai, ką mes padarėme čia, skelbiantis kiekvieno elemento kintamąjį. Ir puslapis elgiasi kaip Į C I kilpų. Taigi galite sekti kas indeksas yra. Taigi čia yra tik tiek patogiau dalykas kai jūs dirbate grandiklį. Jei grandymo šimtus puslapių, įsitikinti, kad tai ne kabinti, Jis tiesiog išėjimą, Aš gauti šį puslapį, ir užtikrinti, kad jis vis dar tęsiasi. Bet mūsų tikslais, nes ten šimtą daiktų, Aš ruošiuosi patekti tik trys iš jų kad mes neturime pritrūksta laiko čia. Bet kol mes gauti, kad aš tiesiog ketinu parodyti jums tikrai greitai, Aš būsiu išvedė pavadinimą, kaina, aprašymas ir adresas kiekvienos nuorodos, kad aš nuskustas. Ir tai yra tik sintaksė CSV bibliotekoje. Jūs atidarote CSV. Tai yra tai, ką aš ruošiuosi jį vadiname. Atidarykite jį su rašymo darbų. Ir tada CSV bus failas, jūs įvedusi viską į. Tai tik normalumas patikrinimas man žinoti, kad tai veikia. Ir tai yra mano normalumas patikrinti žinoti, kad jis baigtas. Taigi, aš išleisti pavadinimą į eilės CSV, kaina, URL, aprašymas, visi į eiles CSV. Taigi, jei mes einame ir paleisti tai now-- ir aš tiesiog įsitikinkite, kad aš išgelbėtas it-- vietoj tiesiog išvedimui, jį į terminalą, turėtume turėti CSV failas, kuris manimi gaminamas. Taigi čia matome CSV failą, kad buvo gaminamas. Tai yra išėjimas Peizažas, kad aš tiesiog pritrūko. Kaip matote čia prieigą prie puslapis 0, 1, 2, 3. Tai yra pavadinimai, Kainos, aprašymai. Ir jei mes pažvelgti į šią CSV failą, kad mes generuojami, jūs galite pamatyti jo išvedamas čia. Tai nėra "Excel", todėl nėra suformatuotas eilučių ir stulpelių. Bet jūs galite įsivaizduoti, kaip jis gali būti suformatuotas. CSV stendai kableliais atskirtos reikšmės. Taigi galite įsivaizduoti, tai gali būti eilutėje. Ir kiekvienas kablelis būtų nurodyti atskirą stulpelį. Tiesiog caution-- žodis kartais esate grandymo dalykus su kableliais daug. Taigi, jei jūs išvedė tai į CSV failą, Jis gali išvesties kaip jūs manote. Taigi, kad iš esmės visi ten yra grandymo pagrindinį HTML Puslapiai su Nokogiri. Taigi interneto būtybės naujoviška, nes ji atėjo su labiau automatizuota ir GUI versija, nors ir ne taip sparčiai versija grandymo įvairias svetaines. Ir mūsų tikslais Aš supažindins "Chrome" pratęsimas vadinamas kimono. Ir viskas, ką turite padaryti, tai galite naršyti į puslapį, kurį norite Sunkiai. Paspaudus ant interesų srityje. Jūs kalibruoti laukus, nes jis bus automatiškai aptikti ką jis galvoja norite būti grandymo, ir tada jums tiesiog sukurti API. Taigi, jei mes buvome parodyti jį Craigslist, ji iš tikrųjų neveikia. Ir tai, ką aš buvau ketinate grįžti į sako apie tai nėra taip patikima. Jis turi problemų sukurti API. Bet kaip demonstracijoje ką ji darys, Jei įdiegti "Chrome" plėtinį, visi jūs darote, yra paspausite ant jos. Tai Kimonofies puslapį, ir tada jūs paspauskite ant dalykas, kurį norite scenarijų. Taigi, jei aš būčiau spustelėkite , kad būtų išryškinti ką jis mano, kad aš noriu būti grandymo išjungti šį puslapį. Taigi gal aš vadinu tai objektų. Tai kiek elementų Aš pasirinktas. Ir galiu tik patvirtinti arba paneigti kai kitų siūlomų aukcionai gauti jį pridėti prie kas bus pavogta. Taigi dabar mes matome ten šimtą pasirinktų elementų. Jei aš noriu turėti kitą lauką, kad aš taip pat prasistumti kuri yra susijusi su šiais, pasakyti, kad aš noriu Sunkiai kainą taip pat, tada aš gali daryti tą patį. Taigi čia yra, kaip tai demonstracija daug mažiau patikimas, nes dabar tai įlaipinami į miestą, o ne tiesiog kaina, kurią aš noriu. Ir dabar jis pakėlė 200 dalykų. Jūs galite grįžti ir pašalinti. Galite pabandyti dar kartą. Bet jokių garantijų. Tai, kaip tai veikia, kartais. Kaip matote čia, o dabar ji sako 96 čia. Jis pakėlė dauguma nuorodų kad norite Sunkiai, bet ne nebūtinai visi iš jų. Dar viena naudinga priemonė Kimono nors yra, galite eiti į pažangios funkcijos čia eiti į priekį, ir jis bus parodyti jums, Unikalaus paskirstymas būdas pasiekti HTML žodžius, kuriuos norite Sunkiai. Taigi aukcionai, jei peržvelgsite čia jei jūs gaunate prieigą div p span span a, jūs iš tikrųjų galite tiesiog naudoti Tai jūsų Nokogiri kodas, kur prieš būtume span.txt prieiti prie kiekvieno iš aukcionai. Jei aš tik noriu tekstą per aukcioną, Galėjau įvesties div vietos p vietos span erdvė span plotas A, ir tai būtų pasiekti tą patį efektą. Ir tiems iš jūsų, kurie domisi naudojant reguliarios išraiškos, tai atsitinka taip pat suteiks Jums reguliariai išraiška tarsi eilutę įvesti rasti dalykus Jūs bandote rasti. Taigi dar vienas cool funkcija Kimono, kur Jūs galite puslapiuoti, kuri yra ne tik galiu Sunkiai šio puslapio rezultatai, Galiu spustelėkite ši maža Mygtukas čia numeracija, nurodyti mygtuką, kad būtų pasiimti mane į kitą puslapį, ir tada jis bus tiesiog žinau, kad ji gali pakartoti į kitą puslapį, ir tada Sunkiai visi the-- tol kaip tai tas pats formatas course-- Peizažas visų šių nuorodų, taip pat. Taigi dėl to, kimono nenori dirbti su Craigslist, ką mes padarėme yra aš Kimonofied Harvardo Crimson. Aš ištraukė kai kuriuos rūšiuoti Top Teminiai straipsniai, patvirtinti čia. Pasakykite visiems. Aš parengė šį API jums iš anksto. Bet kitaip, ką darytumėte yra jums tiesiog spustelėkite Atlikta. Įveskite savo API detales. Nustatykite jį arba Automatizuota arba rankinis skenavimas. Taigi jums gali atnaujinti duomenis kas 15 minučių savaitę, kasdien, ką nori. Pavadinkite savo API. Sukurti API. Dėl savo naudai, aš sukūrė Crimson Front Page API jau. Taigi jūs tiesiog sukurti sudaro apie kimono, ir jis bus saugoti visus savo API už jus. Taigi iš esmės tai visa savo atskiros skirtingų įbrėžimų. Taigi, jei mes žiūrime čia, tai yra nuomonės nuorodos, kad aš surinkti. Tai yra reklamuojama nuorodos, kad aš surinkti. Ir tai yra labiausiai skaityti nuorodos, kad aš surinkti iš šio naujausio API Scape. Taigi, jei jūs galite pamatyti čia tai būtų matomas, tai būtų nuomonės, kuri šiame pavyzdyje, Aš juos visus kartu į vieną kolekciją. Bet jei jūs tiesiog žaisti aplink su juo truputį, galite padalinti jį ir jį padalyti, tačiau norite, kol kaip formatavimo yra šiek tiek kitoks. Tiesiog žaisti aplink su tuo, Nuskaitymas įsteigtas, vienas iš praradimas yra galima tik nuskaityti 25 puslapiuose vienu metu. Štai vienas iš ribojančių veiksnių. Bet čia, jei jūs nustatysite jį rankinis skenavimas, tai kaip galite pasakyti, Kad galėtumėt atnaujinti savo informaciją. O čia galite pamatyti savo istorijos nuskaitymo visko, kad jūs nuskaityti. Ir vaikinai galite grįžti, užsiregistruokite, žaisti aplink su visais skirtingais būdais kad galite keisti ir naudoti jūsų duomenis. Kimono galima nustatyti iki Sunkiai per nuorodas, nuorodas. Ir jūs darytumėte, kad pirmiausia grandymo, nuorodų sąrašą, ir tada naudoti, kad API kaip nušokti taškas kita API kad jums sukurti scenarijų. Bet tai daug sudėtingiau nei ką mes ketiname patekti į šiandien. Taigi, kad kimono. Mes kalbame apie privalumus ir trūkumai Nokogiri ir Kimono. Nokogiri, tai tikrai greitai. Tai lengva patikrinti. Jūs galite tiesiog iškelia nieko konsolės, lengvai konfigūruoti. Jūs galite nuspręsti, ką norite Sunkiai ir saugoti. Nėra puslapis ribos. Aš iš tikrųjų naudojo jį kaip Sunkiai 1800 Pietų Afrikos mokyklos tinklapis už pranešimus apie stažuotės, kad aš padariau. Taigi, kad įmanoma, nors geriausios praktikos būtų padalinti scenarijų. Nes jei tai nepavyksta, tada jūs negaunate nieko. Bet jei jūs darote šimtai gal 200 puslapių vienu metu, tada jūs turite tam tikrą galimybę bent vartų dalimis, ypač jei turite blogą internete. Deja, ji gali tik Sunkiai HTML. Taigi, jei turite dinamiškai pakrautas pages-- ir aš jums parodysiu jums pavyzdį kaip Baidarių į second-- Nokogiri deja negali Sunkiai kad. Bet Kimono taip pat yra paprasta naudoti. Kaip matėte, tai iš esmės taškas ir spustelėkite. Jis gali Sunkiai JavaScript. Deja, ten ne daugiau kad kiek puslapių galite Sunkiai. Kartais tai šiek tiek sunku nustatyti. Tai sutrinki. Bet tai tikrai kažkas apsvarstyti jei esate ne bando turėti Super tvirtas aptarnavimo Sunkiai. Jei jūs tiesiog norite gauti viskas off puslapyje greitai, tada kimono yra tikrai gera priemonė naudoti. Ir kaip jau minėjau anksčiau, yra Išplėstinė bruožas Kimono kuris rodo jums, kaip prisijungti prie unikalaus HTML elementas, kuris yra super naudingos net jei dirbate Nokogiri. Taigi, jei mes einame į Baidarių svetainėje, pagal Pavyzdžiui, jūs galite pamatyti ten is-- arba gal jūs negalite pamatyti. Bet jei aš parodyti jums URL Baidarių, Tai iš tikrųjų yra tik šaltinis URL. Tai URL, prieš yra keistas bet kokiomis JavaScript scenarijus kad jie vyksta. Ir tai vyksta atrodyti kitaip nuo tikrinimo elementas. Taigi, jei jūs einate per, ir jūs rungtynių iki Apžiūrėkite Elementas kodas kodo, tai tikrųjų ketiname būti skirtingi. Ir tai yra iš esmės kodėl Nokogiri negali Sunkiai dinamiškai pakrautas svetainėse. Kadangi Nokogiri yra grandymo šaltinio URL o kimono yra iš tikrųjų grandymo, ką jūs iš esmės matome Pasirinkite elementą. Taigi, jei aš einu per ir aš pabandyti ir Kimonofy Baidarių, Aš iš tikrųjų gali eiti per ir pasirinkite kainą. Tai šiek tiek sunkiau, ir šiuo atveju, tai iš tikrųjų matyti šį kainą kaip skiriasi nuo jų. Todėl nors galite configure-- arba jei tai nebuvo dinamiškai pakrautas, galite konfigūruoti Nokogiri gauti visų šių priežasčių. Kadangi formatavimas yra šiek tiek skiriasi šiam įrašui kaip ji yra, palyginti su likusios iš jų, ir jūs galite pamatyti čia tai tikrai dingo ir Pasirinktos visi Pateikti aviakompanijų kainos. Gal aš noriu pasirinkti laikas skrydžio, taip pat. Ir aš galiu pereiti ir rūšiuoti konfigūruoti, kad. Aš nenoriu, kad. Aš tik noriu, kad kito skrydžio laiko. Ir tada po šios poros išgyvena, jis gauna vaizdą. Taigi kimono gana protingas. Tai tiesiog ne visai taip sparčiai. Yra keletas kitų alternatyvos, kad jūs galite naudoti. Ir aš jums parodysiu juos čia. Jei esate patogiau Python vietoj Ruby galbūt, ten yra biblioteka vadinamas Gražus sriuba. Jūs galite naudoti, kad. Tai labai panašus į Nokogiri. Jis turi keletą daugiau funkcijų. Jūs galite rasti HTML tegus ir tada pereiti aukštyn arba perkelti į šoną. Yra pyqt. Tai iš tiesų gali Sunkiai dinamiška svetaines, nes tai tarsi yra "WebKit", kuri apsimeta, kad būtų naršyklė be ten iš tikrųjų yra naršyklė. Taigi būtų laukti visą JavaScript įkelti, o paskui eiti ir bandyti Sunkiai svetainę. Jei norite klijuoti su Ruby, jums gali eiti vienu lygiu aukštyn nuo Nokogiri. Galite naudoti Kapibara su Poltergeistas įvynioti. Ir tai gali iš tikrųjų iš esmės tą patį padaryti kaip pyqt, kuris tai yra "WebKit". Jis laukia už JavaScript įkelti pirmiausia. Jei dėlioti su juo pakankamai, Jūs netgi galite gauti jį spustelėkite dalykų. Taigi, jei yra nuoroda, kad nėra klasikinis href kur kelias yra lengvai prieinama ir tai kai Javaskriptą dalykas, kad aptinka spragtelėjimą, jūs iš tikrųjų galite tai padaryti. Kuo daugiau populiarus biblioteka imituoti vartotoją yra JavaScript, kurie PhantomJS. Tai akivaizdžiai gali Sunkiai dinamiška svetainės, nes tai iš esmės yra apsimeta, kad "Chrome" be vartotojo sąsają. Ir tada, žinoma labiausiai Tvirtas, bet lėčiausias variantas, yra Selenas naršyklė automatizavimas. Ir, deja, esate nesiruošia būti sugebėti tai padaryti per savo CS50 IDE. Nes iš esmės tai, ką ji Ar tai batai "Chrome", "Firefox", kad ir kokia naršyklė kad jūs norite naudoti, ir tai trasos gal jūsų pelės judėjimas, nepriklausomai įvesite, ir tai tiesiog tarsi automatizuoja šį procesą. Taigi jis buvo sukurtas kaip rūšiuoti svetainė automatizavimas testavimo įrankis. Tačiau daug žmonių naudoja Selenas Sunkiai svetaines kad jie kitaip turėti daug sunkumų grandymo kai kurie iš šių kitų, greičiau įrankių. Taigi, kad viskas, ką aš turiu už interneto grandymo. Pasilinksmink. Auditorija: Klausimas Nr. ROBERT KRABEK: Taip. Auditorija: Ar yra mechanizmas maišos svetainė, kad galėtumėte esmės eiti per jį vėliau. ROBERT KRABEK: Taip. Taigi, mes įdėti, mūsų pavyzdys, tiek iš jų, mes įdėti visą svetainę į dok. Ir taip jūs iš tiesų gali tik imtis kintamasis doc ir rašyti į failą. Taigi, jei aš norėjau, galėjau rašyti jį kaip HTML failą, ir tada, o ne naudojant OpenURI ir susirangyti prašymas, tada galėčiau tiesiog atverti dok HTML ir tada ieškoti už tai. Auditorija: Bet jūs galite išsaugoti iš interneto patirtį Rūšiuoti o jūs neprisijungę. Pavyzdžiui. kai esate plaukioja kelias valandas, Noriu esmės archyvas visoje svetainėje. [Nesigirdi] ROBERT KRABEK: Taip, tai exactly-- taip pažodžiui, ką šis daro yra tai atsižvelgiant viską kad būtų šiuo adresu. Taigi, jei mes bėgo cURL, tai atsižvelgiant į visus šios HTML, ir jis ją saugoti viduje kintamojo dok. Taigi galite daryti viską, jūs norite daryti su dok. Jūs galite išvesti jį į failą. Auditorija: Bet tai ne tarpusavyje sujungti. Tai ne dinamiškas. Tai ne rekursywny, tiesa? Jūs matote, ką turiu galvoje? Bandau iš esmės tarsi maišos visoje svetainėje mano kietąjį diską kad galėčiau iš esmės tai padaryti keletą valandų be interneto. ROBERT KRABEK: Teisė. Taigi, jei aš had-- padaryti, jei mano byla I / O? Taigi, šis yra failas I / O. Taigi pasakyti, o ne tai raginu šį craigslist.html. Norėčiau atidaryti, kad iki. Norėčiau kelia doc į jį. Aš uždarykite rinkmeną. Ir tada tik todėl, kad CS50 IDE yra ant debesies, kad manimi whatever. Aš galiu eiti čia. Galiu atsisiųsti failą. Ir tada, kad būtų ant mano kietajame diske. Taigi jūs galite padaryti, kad taip. Arba, jei esate namie, o ne naudojant CS50 IDE, kaip Sublime ar kažką, tai dar lengviau, nes visa tai galima lokaliai, nesusietos su internetu. Auditorija: matau. Tai yra viena konkreti problema. Ar jūs tai darote rekursyviai, kad jūs eiti keliais sluoksniais giliai rūšies dalykas? ROBERT KRABEK: galima atsisiųsti aplankus taip pat, jei tai, ką jūs klausia. Auditorija: Taip. ROBERT KRABEK: cool.