[Glazbom] ROBERT KRABEK: Pozdrav, momci. Moje ime je Robert Krabek i Ja ću se podučava vas dečki kako struže web s Nokogiri, što je Ruby knjižnica, i Kimono, što je Chrome. Dakle, najprije je par stvari koje vas možete učiniti ako možda ste bili radi sve psets sada i vaš radni prostor uzimajući malo pun. Mi zapravo može samo ići i stvoriti novi radni prostor za vas samo napraviti potpuno novi projekt u. Dakle, ako želite nastaviti rade u ID CS50 predloška koji trenutno imate, slobodno, a možete jednostavno instalirati Nokogiri s CFLAGS equals-- dragulj instalirati nokogiri. Ali inače ću ti pokazati kako postaviti novu jednu. A onda je to bitno ispuštajući više trening kotačima. A ti kodiranje kao da ste bili Samo kodiranje u Sublime ili nešto. Dakle, ako smo ga prebaciti preko. Dakle, reći da je ovo vaš trenutni CS 50 ID. Vi samo možete ići na Cloud9 ovdje. Možete ići na ploču s instrumentima. To bi trebalo dovesti do karticu radne prostore. I onda jednostavno možete kliknuti Ovdje, stvoriti novi radni prostor. Ime svoj novi radni prostor, možda test, ili struganje. I onda kliknite ovaj običaj karticu ovdje umjesto kartici CS50 predložaka. I onda možete jednostavno otići i stvoriti novi radni prostor. Već sam stvorio radni prostor ovdje. Tako ćemo raditi s tim. A ako ste stvorili novi radni prostor tako da uz karticu Custom, možete samo upisati dragulj instalirati nokogiri, koji se ne događa. U redu, to je malo smrznuti. Ali možete upisati dragulj instalirati nokogiri. I to bi trebalo biti sve što što se instalacije. Kao što sam rekao prije, ako ste još uvijek radeći u vašem CS50 predložak ID, vi samo trebate upisati CFLAGS jednako dragulj instalirati nokogiri. A ja već instalirali to ovdje pa neću to učiniti. Ali za one koji prate zajedno, slobodno to učinite. Dakle, nakon što ste dobili vaše Nokogiri Radni prostor ili knjižnica instaliran, Ja ću vam dati malo od ubrzani tečaj u Ruby sintakse jer Nokogiri je Ruby knjižnica. Dakle, morat ćete znati neke osnovne Ruby sintaksa za rad s Nokogiri. Tako neke osnovne razlike od onoga što ste navikli možda, ako ste radili Do sada je u samo C i PHP, izjavljujete varijable bez tipa. Ne koristite zarezom, koja je vrsta reljefa. Nema zagrade sada oko ili dok se za petlje, na primjer. Vi samo morati blok koda i zatim staviti kraj na kraju toga. Nema plus plus ili minus minus, tako da samo znam da kad radite za petlje, samo plus i minus jednakosti jednaka. I umjesto hash uključuju, ćete koristiti zahtijevaju i potom god knjižnica težak učitati u svoj program. Ruby nije sastavio jezik. Dakle, to je druga olakšanje. To je više sličan PHP gdje to je tumačiti jezik. Možete pokrenuti bilo Ruby skriptu koja pišete s Ruby slijedi po imenu svog pisma ili programa. Da znači da je Ruby programa, samo ga završiti .rb umjesto .c. A tu su i promjenjiva veličine polja u Ruby, što je super praktično kad si struganje i možda želite dodati Podaci koje ste struganje u niz. Vi ne morate malloc novi niz, a kopirati stari niz u novi niz. Vi samo možete dodati u dva strelicama znakova. I nema znakova, nema samo pojedinačne žice pismo. Tako da bi trebao biti malo lakše. Dakle, samo mi ćemo vam dati neke primjeri neke osnovne Ruby sintakse. Dakle, ovdje možete vidjeti da umjesto Slash Slash, za komentar u Ruby, vi samo koristite funta znak. A promjenjiva izjava, koju Samo upišite varijable jednaka što god želite varijabla biti. Oni mogu biti nizovi. Možete imati niz koji ste popuniti s vrijednostima. stavlja i grafika su slične. Za naše svrhe Jedina razlika je stvarno kako kaže, koja se zalaže za stavlja, samo stavlja novu liniju lik na bilo koju ispisujete. Dakle, ako mi daju malo demonstracije ovdje možemo pokrenuti ovaj with-- otvorite novi terminal. Možete vidjeti sve te datoteke koje su u mom terminala. A ako sam pokrenuti Ruby, Ruby intro.rb ga, stavlja pet Pozdrav Mather, Quincy, prijevoznik. Adams. Tako da je sve što postoji progla polja. PUBLIKA: Robert, možete napraviti font malo veći? ROBERT KRABEK: Da. I ja mogu zumirati jer ne možete povećavanje na terminalu fontove naizgled. Dakle, to je kako ste ispisati varijable na svoj terminal. Također možete koristiti varijable unutar niza. Tako je nedavno u PHP, možda ste naučili da postoji niz interpolacija. Dakle, ako ste pogledati ovdje, ako sam proglasiti tri varijable, ime, knjižnica, i jezik, i kaže, ja napisati niz, halo moje ime je. I onda, umjesto PHP verzija niza interpolacije koji izgleda malo više kao što je ovaj, imate funta znak, a zatim kovrčave braće, a potom naziv varijable. A to je kako ćeš ispisati, kažu, god varijabla ime. I onda također možete spojite žice. Ruby čini super lako sa znakom plus. Vi samo imaju jedan niz na lijevoj plus varijable ili drugi string plus niz. Dakle, ako sam to isprintati, što bi trebao samo reći Pozdrav, moje ime je Robert. Ja ću se naučiti vas nokogiri u Ruby. I neka je samo potvrditi da je je doista case-- rubin uvod. Pozdrav, moje ime je Robert. Ja ću se naučiti vas nokogiri u Ruby. Premještanje na, ako drugdje izjavama, to je malo drugačije od onoga što bi se moglo koristiti za Ako ste radili u C. Ne trebate zagrade. Ne morate se vitičastih zagrada. I umjesto drugog, ako, to je ulančani elsif. Dakle ovdje, ako sam proglasio x do Ovdje, kao što možemo vidjeti, x je još 5. Dakle, ako je x manji od 3, to ću staviti mali. Ako je manje od 7, srednje, drugi veliki. Dakle, 5 je medij broj. I na kraju ovaj blok koda s krajem. Ovdje je moj for petlje. A to je sintaksa malo drugačiji. 0. do pet samo bitno je proglašena polja od 0 do 5. Dakle, postoji pet mjesta u polju. I onda za svaki utor u koji polje, ja ću biti povećavati i. Dakle, to bi trebalo ispisati 0 do 5, ili od 0 do 4. A to bi trebalo ispisati medij. A ja ću samo Blaze putem. Vi ćete imati pristup ovaj kod kasnije. Dakle, vi možete pokrenuti ovaj sami. Dakle, ovo je tvoj osnovni while petlja. To će biti samo ispis j, koracima od 1 do 5 smo hit. Super brzi Ruby ubrzani tečaj o tome kako napisati funkciju. Umjesto, kažu, int faktorski broj, upravo smo def. A u biti si definiranje funkcije ovdje. Ovo će biti naziv funkcije, i to je sve varijable koje žele proći u funkciji. Možete imati ako izjave unutar. Možete se vratiti. U ovom slučaju, mi smo koji definira rekurzivno provodi faktorijalni funkcija. Tako smo samo nazvati funkcije u Ruby kao što je ovaj. Dakle, ako sam definirati ovo, može nazvati faktorijel, prolaze u 3, te 3 će biti promjenjiva broj koje mogu koristiti u funkciji. A to to_s samo okretanjem vratiti vrijednost faktorskom u nizu. Inače to će baciti pogreška govoreći oh, Ne možete ispisati string-- zato se sjetite, stavlja se stavi string-- jer ovo faktorijalni vratio broj. Tako možemo pretvoriti da u nizu kao takva. I obrnuto, možete pretvoriti niz za cijeli broj sa to_i. Dakle, što je sve super jednostavno, ako sam samo komentirati ovo, spasiti i pokrenite faktorsku funkciju. Trebamo biti u mogućnosti vidjeti da faktorijalni 3 je 6. I to je doista istina. Tako da je vaš ubrzani tečaj u Ruby. A sada da znate Ruby, možemo ići na na osnovnu Nokogiri struganje postavljanje. U osnovi sve što morate učiniti je, u Ruby, zahtijevaju knjižnice. I za naše potrebe biti ćemo pomoću Knjižnica OpenURI kao Nokogiri. I onda ono što do-- i to će dati sintaksu za this-- je što otvorite URL koliko bi u uvojak zahtjev, koja se zalaže za C URL. Dakle, što se URL web stranice u pitanju. Možete ga spremiti u varijablu. A onda možete pretraživati ​​kroz to varijabla za jedinstvenim HTML oznake koje koriste .css naredbe. A onda možete ispisati sadržaj gdje god želite. Možete početi u bazi podataka. Možete izlaz u datoteku ili čak i samo ga ispisati na zaslon. Tako ćemo vam pokazati osnovne strugač. Dakle ovdje možete vidjeti imamo zahtijevaju nokogiri, zahtijevaju otvorenog uri. Vaš osnovni set up, neka je pozvati ga ili dokument doc, jednako Nokogiri :: HTML otvoren, što je Naredba pod uvjetom da nam je OpenURI knjižnica. I mi ćemo biti u potrazi za one vi koji bi mogli biti živi u quad, za bicikle koje su u Bostonu popisu na bike dijelu Boston Craigslist stranica. Dakle, ako niste upoznati s Curl, ja ću samo pokazati vam jako brzo što će Curl učiniti. Ako sam htjela da se sve URL iz stranica Craigslist, ako upišete rotor, to samo potištenost sve URL od bicikla stranice Craigslist na moj terminala. To nije osobito korisna, jer ja ne želite ručno proći i naći ono što tražim. Ali samo tako možete vidim da sam zapravo koristeći pravo kôd, ako pogledate na URL za Craigslist u bikes-- iz nekog razloga to nije pronađen. Ako pogledate ovu stranicu i pogledate URL, ovo treba biti identične Curl Zahtjev da sam samo poslati. I doista, to je ono što se pohranjen u varijablu doc. Dakle, kada se vratite na našu kôd smo onda može raditi na ovom doc varijable pomoću .css. Dakle, reći da sam htjela da se sve oznake koje su span.txt, i sve a oznake unutar tom oznakom. A zašto možda želimo to učiniti, čujem vas plakati? Ako Pregledajte element, to ti je daje kvar kako URL strukturiran. Ako sam pomaknite se dolje do Ovdje možete vidjeti što svaki od njih drugačiji Elementi predstavlja. Dakle, možda želim pristupiti ovaj dio. Dakle, ja sam koristeći Chrome programer alati za Pregledajte element. Vidim ovdje da ova je oznaka u razmaku označiti s klasi txt. Dakle, to dobiva na naše Prvi postupak koji je doc.css vijek, što je oznaka da je Tražim u svim ovim URL. A onda .txt djeluje slično CSS radi kada ste samo pisanje CSS u HTML datoteke po određivanje klase. Dakle, ovaj operator će odrediti raspona oznaku s klasi txt. A onda, ako sam ostavio prostora, to će onda ići u tom oznakom a zatim pronaći oznaka u to. Dakle, ako sam samo stavio ovo terminal, ja bi trebao biti u mogućnosti vidjeti u suštini sve to je u ovom span class txt. Tako ćemo dati da ići. rubin Craigslist-struganje. I doista to nam daje sve od njih oznake različitih oglasi koji nalaze se na stranici Craigslist. Dakle, ako ćemo se vratiti, možemo pretvoriti ovaj u nešto malo više koristan. Možda želimo samo linkove. Jer u tom oznakom, i ja ću imaju hipervezu na putu da je ova stranica odlazi. Dakle, ako pogledate ovaj kod ovdje što ću učiniti je, umjesto .css, Ja mogu ići at_css. A to će samo dobiti prvi element sve te stvari. Dakle, ako su za to se u broj Upravo sam ranije pokazao, umjesto povratka sve to, to bi samo povratak na prvu jedan od onih. Dakle, to je kako operator at_css radi. Dakle, želimo pohraniti Put sve prve oznake. I zato će nam dati A- tako da smo još uvijek ide koristiti .css. No, budući da je ovo će dati nas vratiti cijeli niz oznaka, ćemo pristup prvi element. Dakle, ovo je još jedan način na koji možete pristup bilo kojeg elementa ako ima niz elemenata koja se vraća, jer možete liječiti sve što .css vraća kao polje, u suštini. A onda ćemo pristupiti hipertekst referentni atribut to. Dakle, ako pogledamo, ako je ste gledali vrlo blizu ovdje, Ako ste upravo bitno pogledajte URL traku, to je put koji ti si idući u biti struganje. Dakle, ako mi samo pokrenuti ovo opet, i uvjerite se da smo ga spasili. Možete provjeriti kod kuće. To zapravo odgovara s ovom linku. Pa zašto možda želimo koristiti ovaj? Ako želite struže stranica i ima stranica linkova poput Craigslist ne možete možda želite ići onda u svakoj od tih linkova a onda struže Sadržaj toga što je upravo ono što ćemo učiniti. Dakle, nakon što su put kao promjenjiva, ja više ne stvarno stalo je ispis. Moram ga pohraniti kao varijabla. I onda ja mogu pristupiti druga Stranica na isti način pristupiti doc na prvom mjestu. Osim s URL, idemo koristiti string interpolaciju kao što sam opisivao u Ruby ranije dodati put do kraja korijena. Pa što to će učiniti je to će staviti na putu da sam struganje prije a zatim da u novi predmet, što god želite poziv it-- first_listing, npr. Ali ja ću otići je na stavci za sada, jer to je ono što sam pomoću ovdje. Dakle, reći da sam htjela da se opis od prvog objavljivanja u Craigslist. Dakle, ja bih ići ovdje. Ja bih kliknite na Pregledajte Element opet, jer ovo je opis. Ja bih ići ovdje i vidjeti ako ja mogu naći kako bih mogao moći tražiti ovom jedinstvenom oznakom. I u ovom slučaju, to je osobna, koja nas vodi za naš sljedeći način traženja oznake, što je s hashtag. Tako je za nastavu, možete koristite operator dot. Dakle .txt se određuje klasu txt, dok je hash navodi ID. Dakle, u ovom slučaju, oznaka je poglavlje, a ID je postingbody. Tako to ide i nađe first-- jer smo pomoću at_css-- ovo ide i nađe prvi element koji dolazi s oznakom odjeljka i ID postingbody. A onda možete pristupiti element teksta te stavke se vratio s .text. A onda možemo pohraniti da je u opisu. Tako da sada imamo varijabla opis, bismo mogli napraviti, recimo, file I / O. Tako file I / O u Ruby vrlo je sličan file I / O u C gdje smo otvorili datoteku. Možemo pisati na njega. A onda ćemo zatvoriti tu datoteku. Dakle ovdje, mi samo navedu podnijeti, neke proizvoljne varijablu. Također je mogao samo staviti ovo ovdje. Imamo varijablu da smo spremanje otvorenom datoteku kao s File.open. I mi pišete na ovu sliku, pa smo ga otvorili s w operatora. A onda smo stavili niz Into the file s operatorom .puts. A onda smo stavili varijablu koju želim pisati datoteke u to. A onda smo jednostavno zatvorite datoteku. Dakle, ako ćemo ići naprijed i pokrenuti to, to bi trebalo proizvesti dokument s description.txt koji će ima ovaj opis unutar njega. Dakle, ako sam it-- pokrenuti br. To je producirao tekstualnu datoteku s, nadamo se, ista stvar. Dakle, tu bi moglo biti novi knjiženje koji je došao gore, dok sam razgovarao. I doista izgleda došlo. Dakle, ako idemo na ovoj klasičnoj bicikl, 1962. do 1966. godine, koja se čini kako bi se slagala. I tamo idete. Dakle, to je najosnovnija funkcionalnost struganje. Mogli bismo imati, umjesto samo pisanje na ovu sliku, možemo dodati stvari za niz. Dakle, ako kažem tri polja, naslov, cijenu i opis. I mi smo s radom na stavku doc ​​danas. Možemo proći i pronaći sve span.txt. I zapamtite, ovo vraća niz svih stavki koje pronađe. A onda u Ruby, možete jednostavno koristiti .each se ponoviti kroz svaku stavku od polja. A onda za svaku stavku, Samo ću ga nazvati link, jer je to u biti ono što je. Dakle, ako sam stavio svaku link.css dot a.hdrlnk, to se zapravo događa na link i nalaz unutar tog linka drugom HTML element i odgovarajući razred. Dakle, ako se sjetimo što to je bio je span.txt, možete see- neka mi samo vratiti Pravi quick-- roku span.txt imamo mnogo drugih razreda. Dakle unutar span.txt, tražimo za oznaku s klase hdrlnk. Pa neka mi samo da za vi jako brzo. Tako možete vidjeti ovdje, to je oznaka to je u razmaku od klase txt da ima klase hdrlnk. A to je upravo ono što mi pokušavamo doći. Tako smo sada pokušavamo pohraniti sve tih veza unutar naslova. A onda ćemo ispisati iz svake od tih linkova. Ne oprosti. Mi ćemo ispisati cijena svake od njih. Tako ćemo pokrenuti ovo stvarno brzo i vidjeti što to radi. Pa to samo zapravo otišao kroz svaki od veze pak, pristupiti oznaku u pitanju, a zatim izvukao cijenu. I to je to učinio jer je nakon imate sve što je u naslovu, smo upravo pohranjeni naslov tamo. Upravo smo pohranili vezu u naslovu polja. I to za rad petlji, gdje je umjesto odlaska na a.hdrlnk, mi smo u potrazi za span.price. Dakle, ako ja mogu samo jako brzo pronaći cijena, ako pregledati elementa, vidjet ćete da je vijek s klasi cijene. A to je u biti način mi smo dobivanje cijenu tamo. Dakle, to je stvarno Osnovni slučaj struganje. Tako ćete dobiti sve elementi na stranici da, recimo, vi već znate URL. Dakle, ako želimo dobiti malo više u dubinu, možemo struže stranice unutar stranice. A za ovaj primjer, ja ću biti izlaza u CSV datoteku. Tako sam traži CSV ovdje jer Ruby ne, u sebi, imaju funkcionalnost samo izlazne CSV datoteke. Dakle, to je super jednostavno. Dopustite mi samo ići na sljedeću. Mi smo pokriveni file I / O. Dakle, ovo je slično kako je C. I prije nego što smo prešli na Kimono, Samo ću vam pokazati kako se stvarno brzo da struže web stranice u roku od znamenitosti. Tako smo već naučili izjaviti polja u Ruby. Pa ja sam samo progla hrpa proizvoljnih polja da ću biti pohranu podataka u roku. Doc djeluje na isti način kao što je učinio u prethodnu datoteku. Idemo u, pronalaženje svaki od span.txt godina. Mi već znamo. Da je spremnik unutar kojih veza ima sve podatke koje želimo. Dakle ovdje što radimo je za svaku Link span class txt, idemo u a mi smo pronalaženje oznaku, pronalaženje prvi element koji. Zapamtite, .css vraća niz, tako da ne mogu jednostavno pristupiti kao što je. Idemo pronaći prvi element. Čak i ako je niz jedan predmet, morate koristiti ovu sintaksu, a zatim izvucite href atribut. Tako smo učinili ranije. Dakle, to bi trebao izgledati poznato. I tako sada imamo niz nazivaju kob sve naše veze da ćemo želite koristiti. Dakle, ako imamo tu lepezu svega od staza koje žele koristiti, tada možemo stvoriti stavku za svaku od tih stranica kad smo otvorili tu stranicu. Dakle, kao što smo i vidjeli na sintaksa prije, gdje je radi niza interpolaciju s puta ovdje, tako da je sintaksa je samo za put. A mogao sam nazvati ovaj varijabla bilo proizvoljna imena. To je važno. To je niz koji ćete se pristupa svaki element. Ali kad kažeš za put u putovima, to znači za svaki element u stazama, pozvati ga put i koristiti. To je u biti kao kad vas učiniti za petlju i koristite int i. Dakle, možete liječiti put kao varijabla koja se povećavati. I onda za svakog od njih, ići u svakoj od tih linkova. Zato smo ga pohrane u točki stranici, tako da mi stvaramo novu stranicu svaki put možemo pristupiti. I onda u tom novoj stranici, naći span.postingtitletext, span.price, a zatim poglavlje # postingbody. Već smo pokriveni odjeljak # postingbody kad smo pogledali opisu. Tako možemo ići vidjeti u Craigslist post, ako ste samo gleda na naslov, možete ga vidjeti ovdje, span postingtitletext. I to je razlog zašto je tamo. A onda za cijenu, možete pristupiti ga span class cijene. Dakle, mi također možda moglo želite spremiti URL. Dakle, samo ćemo pokrenuti ovo opet, spremite ga u niz, jer ako ste u potrazi na Craigslist, ti si Vjerojatno će htjeti put do, ako vidite nešto što vas zanima, vratiti na tom mjestu. Dakle, vi samo želite spremiti URL za reference radi. Ovo je samo bitno još sintaksa za for petlje. Upravo sam mogao učiniti umjesto paths.each od za put u putovima s indeksom. A to sintaksa je Ruby for-- Put je ono što smo učinili ovdje, progla varijablu za svaku stavku. I indeksa se ponaša kao I u C petlje. Tako možete pratiti onoga što je indeks. Dakle, ovdje je samo Malo zgodan stvar kada ste trčanje strugač. Ako ste struganje stotine stranica, kako bi bili sigurni da ne visi, To će samo izlaz, Ja sam pristup ovoj stranici, i pazeći da to je još uvijek nastavlja. No, za naše potrebe, jer postoji stotinu stavki, Idem pristup samo tri od njih tako da mi ne ponestane vremena ovdje. No, prije nego što smo dobili na to, ja sam samo će vam pokazati stvarno brzo, Ja ću biti izlaza naslov, cijena, opis i URL svakog od linkova koje sam strugane. A onda je to samo Sintaksa za CSV knjižnici. Otvorite CSV. To je ono što ću nazvati. Otvorite ga pisati učiniti. A onda CSV će biti datoteka koja ti si unosom sve u. Ovo je samo duševne ček za da znam da je to radi. A ovo je moj razum ček znati da je to završeno. Tako sam staviti naslov u nizu u CSV, cijena, url, opis, Sve u retke u CSV. Dakle, ako ćemo ići i trčanje ovo now-- a ja samo pobrinite se da sam it-- spasio umjesto samo ga izlaza na terminal, bismo trebali imati CSV file koji je proizveo. Dakle, ovdje možemo vidjeti CSV file koji je bio proizveden. Ovo je izlaz iz Scape da sam samo trčao. Kao što možete vidjeti ovdje, Pristup stranica 0, 1, 2, 3. To su naslovi, Cijene, opise. A ako gledamo ovaj CSV datoteka koja smo generira, možete vidjeti njegov reproduciraju ovdje. To nije Excel, tako da nije formatiran u retke i stupce. Ali možete zamisliti kako to bi moglo biti formatiran. CSV zalaže za vrijednosti odvojenih zarezom. Dakle, možete zamisliti da bi to moglo biti red. I svaki zarez bi pokazuju poseban stupac. Samo riječ caution-- ponekad si struganje stvari s puno tipkovnici. Dakle, ako ste izlaza je u CSV datoteku, To možda neće ispisati način što možda mislite. Tako da je u biti sve tu je struganje osnovni HTML stranice s Nokogiri. Dakle, internet bića inovativna kao što je došao gore s više automatiziran i GUI verzija, iako manje robustan verzija struganje razne web stranice. I za naše potrebe Ja ću biti pokazujući Chrome proširenje naziva Kimono. A sve što morate učiniti je da navigaciju na stranici koju želite struže. Možete kliknuti na području interesa. Možete kalibrirati polja, jer će se automatski otkriti ono što misli Želite li biti struganje, a onda ti samo stvoriti API. Dakle, ako smo ga pokazati na Craigslist, to zapravo ne bi raditi. I to je ono što sam bio idući natrag govoreći o tome ne bude robustan. Ona ima problema stvara API. No, kao i demonstracija onoga što će učiniti, ako instalirate Chrome proširenje, Sve što trebate učiniti je kliknete na njega. To Kimonofies stranicu, a zatim vas kliknite na stvar koju želite skriptu. Dakle, ako sam ja da kliknete na da, to bi istaknuti ono što misli da ja želim biti struganjem tu stranicu. Dakle, možda sam nazvati ovaj oglasi. To je koliko stvari sam bira. A ja mogu samo potvrditi ili odbiti neke od ostalih predloženih oglasi da bi se dodati što će biti struganje. Tako sada možemo vidjeti postoji bira sto stavke. Ako želim imati još jednu polje koje sam Također struže koji se odnosi na to, kažu Želim struže cijenu kao dobro, onda ja mogu učiniti isto. Dakle, ovdje je dokaz kako je mnogo manje robustan, jer sada je branje gore u grad, umjesto samo cijena koju želim. A sada je pokupio 200 stvari. Možete se vratiti i izbrisati. Možete pokušati ponovo. Ali nema garancije. Ovo je način kako to radi ponekad. Kao što vidite ovdje, sada, kaže 96 ovdje. To je pokupila većinu linkova da želite struže, ali ne nužno sve njih. Još jedan koristan alat za Kimono iako je li mogu ići na napredne značajke ovdje, idite na Napredno, i to će vam pokazati slom jedinstvena način pristupa HTML oznake koje želite da struže. Tako oglasi, ako pogledate ovdje, ako pristupite div p span span, zapravo možete samo koristiti ovo u svoj Nokogiri koda, gdje je prije smo span.txt pristupiti svaki od elemenata. Ako samo želim tekst unutar oglasi, Sam mogao ulazni prostor div p Prostor Prostor vijek trajanja Prostor, i da bi se postigao isti efekt. A za one od vas koji su zainteresirani u korištenju regularnih izraza, to se događa da također vam dati redoviti Izraz vrsta string ulaza pronaći stvari pokušavate pronaći. Dakle, postoji još jedan cool lik od Kimono gdje možete numerirane stranice, koji je ne samo mogu ostrugati rezultati ove stranice, Mogu kliknite na ovaj mali Gumb ovdje, numeriranje stranica, odrediti gumb koji bi odvedi me na sljedeću stranicu, i onda će samo znam da to može ponoviti na sljedećoj stranici a onda struže sve the-- dokle jer je isti format course-- Scape sve te linkove, kao dobro. Pa zato Kimono ne želi raditi s Craigslist, što smo učinili je sam Kimonofied Harvard Crimson. Ja sam neke od vrsti izvukao Top opremljenog članaka, potvrdili ovdje. Recimo sve to. Ja sam sastavio ovaj API za vas ispred vremena. Ali inače ono što će učiniti je li bi samo kliknite Gotovo. Unesite Vaše podatke API. Postavite ga bilo automatizirani ili ručno puzati. Tako možete ažurirati svoje Podaci svakih 15 minuta, tjedno, dnevno, što god želite. Imenujte API. Napravite API. Za svoju korist, što sam stvorio Crimson prednju stranicu API već. Dakle, vi samo stvoriti računa na Kimono, i to će pohraniti sve svoje API za vas. Dakle, u biti to je sve svoje Odvojite različite ogrebotina. Dakle, ako ćemo gledati ovdje, ovo je Mišljenja linkovi koje sam prikupljenih. To su sadržanu linkovi koje sam prikupljenih. A to su najviše čitaju linkovi koje sam prikupljenih ovog najnovijeg API Scape. Dakle, ako možete vidjeti ovdje, to će biti predstavljena, to će biti mišljenje, u ovom slučaju, Ja sam ih kombinirati sve u jednu zbirku. Ali ako se samo poigrati s njim malo, možete ga podijeliti i podijeliti ga ipak želite kao čeznuti kao oblikovanje je malo drugačija. Samo se poigrati s tim, puzati postavljen, jedan od nedostataka je možete samo dopuzati 25 stranica u isto vrijeme. To je jedan od ograničavajućih faktora. Ali ovdje, ako ga postaviti na ručno puzati, ovaj je, kako se to može reći ažurirati svoje podatke. A ovdje možete vidjeti povijest indeksiranja od svega što ste puzati. I vi možete vratiti, prijavite se, poigrati sa svim različite načine koje možete mijenjati i koristiti vaše podatke. Kimono može se postaviti na struže veze unutar veze. A što bi to od prvog struganje popis linkova, a zatim koristiti taj API kao skočiti točku za još API koje stvaraju scenarij. No, to je više nego komplicirano što ćemo dobiti u danas. Dakle, to je Kimono. Razgovarat ćemo o prednostima i kontra Nokogiri i kimona. Nokogiri, to je stvarno brzo. To je lako provjeriti. Možete samo stavlja sve na konzola, jednostavan za konfiguriranje. Možete odlučiti upravo ono Želite li struže i pohraniti. Nema ograničenja stranica. Zapravo sam ga koristiti za struže kao 1800 Južnoafrički školske web stranice za e-poštu za stažiranje koje sam učinio. Dakle, to je moguće, ali najbolje prakse da bi se razdvojili skriptu. Jer ako to ne uspije, onda ne dobiti ništa. Ali ako sto, možda 200 stranica u isto vrijeme, onda imate neke šanse od najmanje uzimajući to parče, pogotovo ako imate loše internet. Nažalost, to može samo struže HTML. Dakle, ako imate dinamički učitava pages-- a ja ću vam pokazati primjer kao kajak u A second-- Nokogiri žalost Ne mogu da struže. Ali Kimono je jednostavan za korištenje. Kao što ste vidjeli, to je bitno točka i kliknite. To može struže JavaScript. Nažalost, tu je maksimalno na koliko stranica možete struže. Ponekad je malo teško konfigurirati. Ona dobiva zbunjeni. No, to je definitivno nešto za razmisliti ako ne pokušavate imati super robustan održivi ogrebotina. Ako samo želite dobiti sve off stranice brzo, onda Kimono je stvarno dobar alat za korištenje. I kao što sam spomenuo prije, postoji napredna značajka Kimono koja vam kako pokazuje pristupiti jedinstveni HTML element, koji je super korisna i Ako radite u Nokogiri. Dakle, ako ćemo ići u Kajak stranicama, za Primjerice, možete vidjeti tamo is-- ili možda ne možete vidjeti. Ali ako sam vam pokazati URL za kajak, to je zapravo samo URL izvor. Ovo je URL prije bude izmijenjen bilo kakvim JavaScript skripti da su događa. I to će izgledati drugačije iz uvid element. Dakle, ako idete kroz i vi podudaraju se Pregledajte element kod izvornom kodu, to je zapravo će biti drugačiji. A to je u biti razlog zašto Nokogiri Ne možete strugati dinamički učitava web stranice. Budući da je Nokogiri struganje URL izvor, dok Kimono je zapravo struganje što ste bitno gledajući u odabranim element. Dakle, ako sam proći i ja pokušati Kimonofy kajak, Ja zapravo mogu proći kroz i odaberite cijenu. To je malo teže, iu ovom slučaju, to je zapravo vidim tu cijenu što se razlikuje od njih. Dakle, dok možete configure-- ili ako se to ne dinamički učitava, možete konfigurirati Nokogiri da se sve to. Budući da je oblikovanje je malo različiti za ovaj unos kao što je u odnosu na ostatak od njih, a možete pogledati ovdje to je zapravo otišao i Odabrane sve cijene leta. Možda želim odabir vrijeme leta, kao dobro. I ja mogu proći i vrsta konfigurirati da. Ne želim to. Samo želim vrijeme za sljedeći let je. I onda nakon par njih prolazi kroz, on dobiva sliku. Tako lijepa Kimono je pametna. To jednostavno nije toliko robustan. Postoje neki drugi alternative koje možete koristiti. A ja ću vam pokazati ih ovdje. Ako ste više ugodno u Python umjesto Ruby možda, postoji knjižnica zove Lijepa juha. Možete ga koristiti. To je vrlo slično Nokogiri. Ima još nekoliko mogućnosti. Možete pronaći HTML oznake i zatim premjestiti gore ili pomicanje u stranu. Postoji PyQt. To zapravo može češati dinamički mjesta, jer to je vrsta je WebKit koji se pretvara da je preglednik ne postoji zapravo kao preglednik. Dakle, to bi čekati sve JavaScript učitati, a zatim otići i pokušati struže stranice. Ako želite staviti s Ruby, što može ići jednu razinu gore od Nokogiri. Možete koristiti Kapibara s priviđenje omot. A to zapravo može u biti napraviti istu stvar kao PyQt, što je to je WebKit. Ona čeka da JavaScript učitavanje prvi. Ako gusle okolo s njom dovoljno, čak možete dobiti da kliknete na stvari. Dakle, ako postoji link koji Nije klasična href gdje Put je lako dostupna i to je neka stvar koja otkriva JavaScript jedan klik, možete zapravo učiniti. Više popularan knjižnica simulirati korisnika je u JavaScript, koji je PhantomJS. To očito može češati dinamički mjesta jer je to bitno pretvarajući se da Chrome bez korisničkog sučelja. I onda, naravno, najviše robustan, ali najsporiji opciju, je automatizacija Selen pregledniku. I na žalost, nećeš biti u mogućnosti to učiniti u vašoj CS50 IDE. Jer u suštini ono što Da li je to čizme svoj Chrome, Firefox, bez obzira preglednik koji želite koristiti, a prati možda miš pokret, što god upišete u, i to samo vrsta automatizira taj proces. Dakle, to je bio razvijen kao svojevrstan Web stranica za automatizaciju testiranje alata. No, puno ljudi koristi Selen struže web stranice da inače imaju puno poteškoća struganja s nekim od ovih drugih, brže alata. Dakle, to je sve što imam za web struganje. Zabavi se. PUBLIKA: Pitanje. ROBERT KRABEK: Da. PUBLIKA: Postoji li mehanizam za hash web stranica, tako da bi u osnovi proći kroz to kasnije. ROBERT KRABEK: Da. Tako smo stavili u naše primjer, za obojicu, smo stavili cijeli web stranice u doc. I tako da bi mogao zapravo samo uzeti promjenjiva doc i pisati u datoteku. Dakle, ako sam htio, mogao sam napišite ga kao HTML datoteku, a onda umjesto korištenja OpenURI i Curl zahtjev, onda sam samo mogla otvoriti doc HTML i onda tražiti to. PUBLIKA: Ali, možete li sačuvati vrsta online iskustvo dok radite izvanmrežno. Na primjer. kada ste leti za nekoliko sati, Želim osnovi Arhiva cijeli web stranice. [NEČUJAN] ROBERT KRABEK: Da, to je exactly-- pa doslovce što to radi je to da sve da bi se na ovom URL. Dakle, ako smo trčali Curl, to je da sve ove HTML, i to je to spremanje unutar promjenjivog doc. Pa onda možete raditi što god želite učiniti s doc. Možete reproducirati ga u datoteku. PUBLIKA: Ali to nije povezao. To nije dinamična. To nije rekurzivna, zar ne? Vidite što mislim? Pokušavam osnovi vrsta skraćenog cijeli web stranice na moj hard disk tako da sam zapravo mogao učiniti za nekoliko sati bez interneta. ROBERT KRABEK: Tako je. Dakle, ako sam had-- pa gdje je moj file I / O? Dakle, to je file I / O. Tako kažu, umjesto to, ja to nazivam craigslist.html. Ja bih otvoriti to. Ja bih stavlja doc u nju. Ja zatvorite datoteku. I onda samo zato što je CS50 IDE na oblaku, koji je god. Mogu ići ovdje. Ja mogu preuzeti datoteku. A onda bi to bilo na moj hard disk. Dakle, možete to učiniti na taj način. Ili, ako ste kod kuće, a ne pomoću CS50 IDE, kao sublimnog ili nešto, ovo je čak i lakše, jer ovo je sve dostupno na lokalnoj razini, Nije vezan za internet. PUBLIKA: Vidim. Ovo je za jedan određeni problem. Možete li to učiniti rekurzivno, tako da ići nekoliko slojeva duboko takve stvari? ROBERT KRABEK: mogu skinuti mape kao i, ako je to ono što tražimo. PUBLIKA: Da. ROBERT KRABEK: cool.