>> [MIZIK jwe]
ROBERT KRABEK: Hello, guys.
Non mwen se Robert Krabek, ak Mwen va être moutre nou mesye
Ki jan yo grate entènèt la ak Nokogiri, ki se yon bibliyotèk Ruby,
ak kimono, ki se yon ekstansyon Chrome.
>> Se konsa, premye gen nan yon bagay koup ke ou
ka fè si petèt ou te fè tout psets yo byen lwen tèlman
ak vorkspas ou a se ap resevwa yon ti kras plen.
Nou ka aktyèlman jis ale ak kreye yon nouvo vorkspas pou ou
jis fè yon mak nouvo pwojè nan.
Se konsa, si ou vle kontinye k ap travay nan ID a modèl CS50
ke ou genyen kounye a, santi yo lib, epi ou ka jis
enstale Nokogiri ak kflag equals-- GEM enstale nokogiri.
Men, otreman mwen pral montre w Ki jan yo mete yon nouvo yon sèl yo.
Lè sa a, sa a se esansyèlman jete plis wou fòmasyon.
Apre sa, w ap kodaj kòm si ou te jis kodaj nan Sublime oswa yon bagay.
Se konsa, si nou chanjman li sou.
>> Se konsa, di sa a se ou ye kounye a CS 50 ID.
Ou ka jis ale nan Cloud9 isit la.
Ou ka ale nan tablodbò ou yo.
Li ta pote yo moute Vorkspas tab.
Lè sa a, ou ka jis klike isit la, Kreye yon Nouvo buro.
Non nouvo vorkspas ou, petèt tès, oswa Été.
Lè sa a, klike sou sa a tab koutim isit la, olye pou yo tab la CS50 modèl.
Lè sa a, ou ka jis ale ak kreye yon nouvo vorkspas.
>> Mwen te deja kreye yon vorkspas isit la.
Se konsa, nou pral travay ak sa a.
Men, si ou kreye yon nouvo vorkspas konsa ak tab la Custom,
ou ka jis tape GEM enstale nokogiri, ki se pa pral isit la.
OK, li nan yon ti kras nan frizè.
Men, ou ka tape GEM enstale nokogiri.
Apre sa, ki ta dwe tout sa ki gen nan enstalasyon an.
>> Kòm mwen te di anvan, si w ap toujou k ap travay nan CS50 ou ID modèl,
ou jis bezwen tape kflag egal GEM enstale nokogiri.
Apre sa, mwen te deja enstale l 'isit la Se konsa, mwen pa pral fè sa.
Men, pou moun sa yo ansanm, santi yo lib yo fè sa.
>> Se konsa, yon fwa ou te gen Nokogiri ou vorkspas oswa bibliyotèk enstale,
Mwen pral ba ou yon ti kras nan yon kou aksidan an Ruby sentaks
paske Nokogiri se yon bibliyotèk Ruby.
Se konsa, ou pral bezwen konnen kèk debaz Ruby sentaks pou travay ak Nokogiri.
Se konsa, kèk diferans debaz soti nan sa ki w ap itilize yo
petèt si ou te ap travay byen lwen tèlman nan jis C ak PHP,
ou deklare varyab ki pa gen okenn kalite.
Ou pa sèvi ak virgules, ki se kalite yon sekou.
Gen nan pa gen parantèz kounye a alantou pou oswa pandan y ap pasan, pou egzanp.
Ou jis gen yon blòk nan kòd, ak Lè sa a, ou mete fen nan fen sa.
Gen nan pa gen plis plis oswa mwens mwens, Se konsa, jis
konnen ke pou lè w ap fè pou pasan,
jis egal plis ak mwens egal.
Ak olye pou yo regle enkli ladan yo, ou pral sèvi ak mande pou ak Lè sa a
tou sa bibliyotèk ap chaj nan pwogram ou an.
>> Ruby se pa yon lang konpile.
Se konsa, sa a, se yon lòt sekou.
Li nan plis menm jan ak PHP kote li nan yon lang entèprete.
Ou ka kouri nenpòt script Ruby ki ou ekri ak Ruby swiv
pa non an nan script ou a oswa pwogram lan.
Siyifi ke li nan yon pwogram Ruby, ou jis fini l 'ak .rb olye pou yo c.
E genyen anpil varyab gwosè ranje nan Ruby,
ki se super pratik lè w ap Gratian e petèt vle kole
done ke ou te grate nan yon etalaj.
Ou pa oblije malok yon nouvo etalaj ak kopi etalaj la fin vye granmoun nan etalaj nan nouvo.
Ou ka jis kole ak de mirak yo flèch.
E pa gen okenn charaktèr, gen jis yon sèl strings lèt.
Se konsa, ki ta dwe gen yon ti kras pi fasil.
>> Se konsa, nou pral jis ba ou kèk egzanp nan kèk debaz Ruby sentaks.
Se konsa, isit ou ka wè ke olye pou yo koupe nan koupe, fè kòmantè nan Ruby,
ou jis itilize siy ki liv.
Ak varyab deklarasyon, ou jis tape egal a varyab
tou sa ou vle varyab la yo dwe.
Yo ka strings.
Ou ka gen etalaj, ki ou peple ak valè.
propos ak simagri yo menm jan an.
Pou rezon nou an, nan Sèl diferans se reyèlman
ki mete, ki vle di pou propos, jis mete yon liy nouvo
karaktè nan tou sa w ap enprime.
>> Se konsa, si nou bay yon ti demonstrasyon isit la,
nou ka kouri sa a with-- louvri yon tèminal nouvo.
Ou ka wè tout moun sa yo dosye ki nan tèminal m 'yo.
Men, si mwen jis kouri Ruby, Ruby intro.rb, li
mete deyò senk Alo Mather, Quincy, Carrier.
Adams.
Se konsa, sa a, se tout gen deklare ranje.
ODYANS: Robert, ka ou fè font yon ti kras pi gwo ou a?
ROBERT KRABEK: Wi.
Apre sa, mwen ka rale nan paske ou pa kapab rale nan nan polis tèminal aparamman.
>> Se konsa, sa a, se ki jan ou enprime varyab nan tèminal ou yo.
Ou kapab tou itilize varyab andedan yon fisèl.
Se konsa, dènyèman nan PHP, ou ta ka te aprann
ki di ke gen fisèl entèpolasyon.
Se konsa, si ou pran yon gade isit la, si mwen deklare twa varyab, non, bibliyotèk,
ak langaj, epi mwen propos, mwen ekri yon fisèl, alo non mwen se.
Lè sa a, olye pou yo PHP a vèsyon an fisèl entèpolasyon
ki sanble yon ti kras plis tankou sa a, ou gen yon siy liv, ak Lè sa a
atèl Curly yon, ak Lè sa non an nan varyab la.
Epi sa a, ki jan ou ta enprime, di, tou sa non an varyab se.
>> Lè sa a, ou ka tou anchene strings.
Ruby fè li super fasil ak siy ki plis.
Ou jis gen yon sèl fisèl sou bò gòch la plis yon varyab
oswa yon lòt fisèl plis yon fisèl.
Se konsa, si mwen enprime sa a soti, li ta dwe jis di Hello, non mwen se Robert.
Mwen va être moutre nou nokogiri nan Ruby.
>> Li kite yo jis konfime ke ki se vre Intro a Ruby case--.
Hello, non mwen se Robert.
Mwen va être moutre nou nokogiri nan Ruby.
>> Deplase sou, si deklarasyon lòt bagay, li nan yon ti kras diferan
soti nan sa ki ou ta ka dwe itilize yo si ou ve yo te ap travay nan C.
Ou pa bezwen parantèz yo.
Ou pa bezwen aparèy òtopedik yo Curly.
Ak olye pou yo lòt moun si, li nan yon ezif anchene.
Se konsa, nan isit la, si mwen te deklare x moute isit la, kòm nou ka wè, x se toujou 5.
Se konsa, si x se mwens pase 3, li pral mete piti.
Si li nan mwens pase 7, mwayen, lòt bagay gwo.
Se konsa, 5 se yon nimewo medyòm.
Apre sa, mwen fini sa a blòk nan kòd ak fen.
>> Isit la se m 'pou riban.
Apre sa, sentaks sa a tou se yon ti kras diferan.
0 nan senk a jis esansyèlman se deklare yon ranje de 0 a 5.
Se konsa, gen nan senk fant nan etalaj la.
Lè sa a, pou chak plas nan ki etalaj, mwen menm m'a incrementing mwen.
Se konsa, sa a ta dwe enprime 0 a 5, oswa 0 a 4.
Lè sa a ta dwe enprime medyòm.
>> Apre sa, mwen pral jis flanm nan.
Ou nèg ap gen aksè nan sa a Kòd pita sou.
Se konsa, ou nèg ka kouri sa a nou.
>> Se konsa, sa a se bouk debaz pandan y ap ou yo.
Sa a pral jis pou enprime j, incrementing pa 1 jiskaske nou frape 5.
>> Super rapid Ruby kou aksidan sou kòman yo ekri yon fonksyon.
Olye pou yo, di, int faktoryèl nimewo, nou jis gen def.
Apre sa, w ap esansyèlman defini yon fonksyon isit la.
Sa a se pral yo dwe nan non nan fonksyon an,
ak sa a se nenpòt varyab ke ou vle pase nan fonksyon an.
Ou ka gen si deklarasyon nan.
Ou ka retounen.
Nan ka sa a, nou ap defini yon recursive
aplike fonksyon faktoryèl.
Se konsa, nou jis rele fonksyon nan Ruby tankou sa a.
>> Se konsa, si mwen te defini sa a, mwen ka rele faktoryèl, pase nan 3,
ak Lè sa a 3 yo pral varyab la Nimewo ke mwen ka itilize nan fonksyon an.
Apre sa, to_s sa a se jis vire nan retounen valè de faktoryèl nan yon fisèl.
Sinon sa a pral voye jete yon erè li di oh, mwen
pa ka enprime yon string-- paske kòm ou sonje,
l ap pèmèt se mete string-- paske sa a faktoryèl te retounen yon nimewo.
Se konsa, nou ka konvèti ki nan yon fisèl tankou sa yo.
Apre sa, Kontrèman, ou ka tou konvèti yon afè ki nan yon nonb antye relatif ak to_i.
>> Se konsa, fè tout bagay super senp, si mwen jis kòmantè sa a soti, sove
epi kouri fonksyon an faktoryèl.
Nou ta dwe kapab wè ki faktoryèl a 3 se 6.
E ke se tout bon vre.
>> Se konsa, sa a, se kou aksidan ou an Ruby.
Epi, koulye a ke ou konnen Ruby, nou ka ale sou Nokogiri debaz la Gratian fè fè a.
Esansyèlman tout sa ou dwe fè se, nan Ruby, mande pou bibliyotèk yo.
Se pou rezon nou an, nou pral lè l sèvi avèk la bibliyotèk OpenURI osi byen ke Nokogiri.
Lè sa a, ki sa ou do-- epi li pral ba ou sentaks la pou sa a men
se ou louvri URL la anpil jan ou ta nan yon demann pli, ki vle di pou C URL.
>> Se konsa, ou pran URL la nan sit entènèt la nan kesyon an.
Ou sere l 'nan yon varyab.
Lè sa a, ou kapab fè rechèch nan ki varyab pou HTML Tags inik lè l sèvi avèk
yo lòd, ki .css.
Lè sa a, ou kapab pwodiksyon an kontni nan tout kote ou vle.
Ou ka kòmanse nan yon baz done.
Ou kapab pwodiksyon nan yon dosye, oswa menm jis enprime li nan ekran an.
>> Se konsa, nou pral montre w yon grate de baz yo.
Se konsa, moute isit la ou ka wè nou gen ki mande nokogiri, mande pou louvri-Ouri.
Seri de baz ou leve, se pou yo rele li dokiman oswa doc,
egal Nokogiri :: HTML louvri, ki se nan lòd yo bay nou pa OpenURI nan
bibliyotèk.
Epitou, n ap dwe chèche, pou sa yo ki nan nou menm ki ta ka k ap viv nan kwadwilatè a,
pou bisiklèt ki nan Boston ki nan lis sou seksyon an bisiklèt Boston krèyslist
sit la.
>> Se konsa, si ou se enkoni ak pli, mwen pral jis
montre w reyèl rapid sa cURL pral fè.
Si m 'te vle jwenn tout nan URL la soti nan sit la krèyslist, si mwen tape pli,
li jis depo tout nan URL la nan sit la bisiklèt krèyslist
sou tèminal m 'yo.
Sa a pa patikilyèman itil paske mwen pa fè sa
vle manyèlman ale nan ak jwenn bagay la M 'ap chache.
Men, jis pou ou kapab wè ke mwen se aktyèlman
lè l sèvi avèk kòd la dwa, si ou gade a URL la pou krèyslist nan bikes--
pou kèk rezon li pa nan jwenn.
Si ou gade nan paj sa a epi ou gade nan URL la,
sa a ta dwe ki idantik ak nan demann cURL ke mwen jis voye.
Ak tout bon, sa a, se sa k te ki estoke nan varyab la doc.
>> Se konsa, lè ou ale tounen nan Kòd nou yo, nou ka Lè sa a opere sou varyab doc sa a
lè l sèvi avèk .css.
Se konsa, di mwen te vle jwenn tout Tags yo ki span.txt,
ak tout yon etikèt yo nan ki tag.
E poukisa nou ta ka vle fè sa, mwen tande ou kriye?
>> Si nou Enspekte Eleman, li ba ou yon pann nan ki jan se URL la estriktire.
Si m 'woulo liv desann nan isit la, ou ka wè
ki sa chak nan sa yo diferan eleman reprezante.
Se konsa, petèt mwen vle gen aksè a sa a eleman an patikilye.
Se konsa, mwen lè l sèvi avèk Chrome pwomotè zouti yo Enspekte Eleman.
Mwen ka wè isit la ke sa a desann se yon yon tag ki nan yon span
tag ak yon klas nan txt.
>> Se konsa, sa a vin nan nou premye operasyon ki
se span doc.css, ki se tag a ki M 'ap chache nan tout URL sa a.
Lè sa a, .txt opere anpil tankou CSS fè lè w ap jis ekri CSS
nan dosye HTML ou pa espesifye yon klas.
Se konsa, sa a an patikilye pral operatè presize yon tag span ak klas nan txt.
Lè sa a, si mwen kite yon espas, sa a pral lè sa a ale nan ki tag
ak Lè sa a jwenn yon yon tag nan sa.
>> Se konsa, si mwen jis mete sa a nan tèminal la, mwen ta dwe
kapab wè tout bagay esansyèlman ki se nan sa a span nan txt klas la.
Se konsa, nou pral ba ke yon ale.
Ruby krèyslist-grate.
Ak tout bon ki bay nou tout nan sa yo Tags nan lis yo divès kalite ki
yo sou paj la krèyslist.
>> Se konsa, si nou tounen, nou ka vire sa a nan yon bagay yon ti kras plis itil.
Petèt nou vle jis lyen yo.
Paske nan tag sa a, mwen pral tou gen HyperLink nan chemen an
ki paj sa a ale nan.
Se konsa, si ou gade nan kòd sa a isit la, ki sa mwen pral fè se olye pou yo .css,
Mwen ka ale at_css.
Lè sa a pral jis jwenn premye a eleman nan tout nan bagay sa yo.
Se konsa, si m 'te fè sa a moute nan Kòd Mwen jis te deja demontre,
olye pou yo retounen tout nan sa a, li ta jis
retounen yon sèl nan premye nan tout sa yo.
Se konsa, lè sa a jan operatè a at_css fonksyone.
>> Se konsa, nou vle nan magazen an chemen tout nan premye yon tag la.
Epi paske yon pral ban nou a-- se konsa nou ap toujou ale nan sèvi ak .css.
Men, paske se sa a ki pral bay nou tounen yon etalaj tout antye de Tags,
nou pral aksè eleman an premye.
Se konsa, sa a se yon lòt fason ke ou ka aksè nenpòt eleman patikilye si ou
gen yon etalaj de eleman ki tounen,
paske ou ka trete nenpòt ki bagay ki retounen .css kòm yon etalaj, esansyèlman.
Lè sa a, nou ap ale nan jwenn aksè nan ipèrtèks atribi referans nan sa a.
>> Se konsa, si ou pran yon gade, si ou gade vrèman fèmen isit la,
si ou jis esansyèlman gade nan ba a URL,
sa a se chemen an ki w ap ale nan dwe Gratian.
Se konsa, si nou jis kouri sa a ankò, , epi fè sèten nou te sove li.
Ou ka tcheke nan kay la.
Sa a aktyèlman alimèt moute ak lyen sa a.
>> Se konsa, poukisa nou ta ka vle sèvi ak sa a?
Si ou vle grate paj la epi li gen
yon paj nan lyen tankou Krèyslist fè sa, ou
ta ka vle ale Lè sa a, nan chak nan sa yo lyen
ak Lè sa a grate nan kontni nan ki, ki
se egzakteman sa nou ap ale nan fè.
>> Se konsa, yon fwa ou gen chemen kòm yon varyab, mwen pa gen okenn ankò vrèman
pran swen sou enprime li soti.
Mwen jis bezwen nan magazen li kòm yon varyab.
Lè sa a, mwen kapab jwenn aksè nan yon lòt paj menm jan an mwen jwenn aksè nan
doc nan plas la an premye.
Eksepte ak URL la, nou ap ale yo sèvi ak fisèl entèpolasyon
tankou mwen te dekri nan Ruby pi bonè sou nan kole
chemen an nan fen a nan rasin lan.
>> Se konsa, sa sa a ki pral fè se sa a ki pral mete yo sou chemen an
ke mwen grate deja ak Lè sa a vire ki
nan yon nouvo atik, tou sa ou vle rele l-- first_listing, pou egzanp.
Men, mwen pral kite l 'sou atik pou kounye a,
paske sa se sa m ap lè l sèvi avèk isit la.
>> Se konsa, di mwen te vle jwenn deskripsyon an a afiche nan premye nan krèyslist.
Se konsa, mwen ta ale desann isit la.
Mwen ta klike sou Enspekte Eleman ankò, paske sa a se deskripsyon an.
Mwen ta ale desann isit la ak wè si mwen ka jwenn ki jan mwen ta ka
kapab pou fè rechèch pou sa a tag inik.
Ak nan ka sa a, li gen yon ID, ki kondwi nou
nan fason pwochen nou an nan pou chèche Tags, ki se ak yon hashtag.
>> Se konsa, pou klas yo, ou kapab itilize operatè a dot.
Se konsa, .txt se espesifye yon klas nan txt, Lè nou konsidere ke regle nan espesifye yon ID.
Se konsa, nan ka sa a, tag a se seksyon, ak ID a se postingbody.
>> Se konsa, sa a ale epi li jwenn first-- a paske nou ap
lè l sèvi avèk sa a ale ak at_css-- jwenn eleman nan premye ki
vini avèk tag nan nan seksyon ak ID a nan postingbody.
Lè sa a, ou kapab jwenn aksè eleman nan tèks nan ki atik tounen ak .Tèks.
Lè sa a, nou ka magazen ki nan deskripsyon an.
>> Se konsa, kounye a ke nou gen yon varyab deskripsyon,
nou ta ka kapab fè, di, ranpli I / O. Se konsa, ranpli I / O nan Ruby
se sanble anpil ak depoze mwen / O nan C kote nou louvri yon dosye-a.
Nou ka ekri nou nan li.
Lè sa a, nou pral fèmen ki dosye-a.
>> Se konsa, isit la, nou ap jis nonmen nan ranpli, kèk varyab abitrè.
Nou ta ka tou gen sèlman mete sa a isit la.
Nou gen yon varyab ke nou ap estoke dosye a louvri menm jan ak File.open.
E nou ekri nan sa a ranpli, se konsa nou louvri l 'ak operatè a w.
Lè sa a, nou mete fisèl an nan ranpli ak operatè a .puts.
Lè sa a, nou mete varyab la ke nou vle ekri nan dosye a ki nan sa.
Lè sa a, nou jis fèmen dosye a.
>> Se konsa, si nou ale pi devan epi kouri sa a, sa a ta dwe pwodwi yon dokiman
ak description.txt ki pral gen deskripsyon sa a nan li.
Se konsa, si mwen kouri l-- pa gen okenn.
Li nan pwodwi yon dosye tèks ak, èspere ke, menm bagay la.
Se konsa, gen ta ka yo te yon nouvo afiche ki nan vini pandan y ap Mwen te pale.
Ak tout bon li sanble te gen.
Se konsa, si nou ale nan bisiklèt sa a klasik, 1962 1966, ki sanble ak matche ak.
Apre sa, ou ale.
>> Se konsa, sa a, se ki pi fondamantal nan fonctionnalités nan Été.
Nou te kapab gen olye pou yo jis ekri nan sa a ranpli,
nou ka ajoute bagay nan yon etalaj.
Se konsa, si Mwen deklare twa ranje, Tit, pri, ak deskripsyon.
E nou opere sou atik la doc kounye a.
Nou ka ale nan ak jwenn tout nan span.txt la.
Epi sonje, sa a retounen yon etalaj nan tout atik yo ke li jwenn.
Lè sa a, nan Ruby, ou ka jis sèvi ak .chak repekte nan chak atik
nan etalaj la.
Lè sa a, pou chak atik, Mwen jis ale nan rele li
yon ap mennen, paske sa a, se esansyèlman sa li ye.
>> Se konsa, si mwen mete chak a.hdrlnk link.css dot, sa a se aktyèlman ale nan lyen ki
epi jwenn nan ki genyen lyen ki yon lòt HTML eleman ak klas koresponn lan.
Se konsa, si nou sonje sa sa a te, span.txt a,
ou ka wè- kite m 'jis tounen reyèl quick-- nan span.txt
nou gen yon anpil nan lòt klas yo.
Se konsa, andedan span.txt, nou ap chèche pou yon yon tag ak yon hdrlnk klas la.
Se konsa, kite m 'jis jwenn ke pou ou nèg reyèl rapid.
>> Se konsa, ou ka wè isit la, sa a se yon yon tag sa a, se nan span a nan txt klas
ki gen hdrlnk nan klas la.
Epi sa a, tout bon ki sa nou ap eseye jwenn.
>> Se konsa, nou ap kounye a ap eseye magazen tout nan tout sa yo lyen andedan tit la.
Lè sa a, nou ap ale nan enprime soti chak nan sa yo lyen yo.
Non, regrèt.
Nou pral enprime soti pri a nan chak nan sa yo.
Se konsa, kite a kouri sa a vrèman rapid ak wè sa ki li fè sa.
>> Se konsa, sa a jis fondamantalman ale nan chak nan lyen yo
nan vire, jwenn aksè tag a nan kesyon, ak Lè sa a rale soti pri a.
Epi, se te fè sa paske apre ou gen tout bagay nan tit la,
nou te jis estoke tit la a.
Nou te jis estoke lyen ki nan tit la etalaj.
Ak nan sa a pou operasyon riban, kote olye pou yo ale nan a.hdrlnk,
nou ap chèche pou yon span.price.
Se konsa, si mwen ka jis vrèman byen vit jwenn pri a, si ou enspekte eleman an,
ou pral wè ke li se yon span ak klas la nan pri.
Epi sa a, esansyèlman ki jan nou ap vin pri a la.
>> Se konsa, sa ki nan vrèman an ka de baz yo Été.
Sa a ki jan ou jwenn tout eleman yo sou yon paj
ki, di, ou deja konnen URL la nan.
>> Se konsa, si nou vle yo ka resevwa yon ti kras pi plis nan pwofondè,
nou ka grate paj nan paj.
Se pou egzanp sa a, mwen pral gen sorti nan yon dosye CSV.
Se konsa, mwen mande CSV moute isit la paske Ruby pa fè sa, andedan tèt li,
gen fonksyonalite a jis pwodiksyon CSV dosye.
Se konsa, sa a, se super senp.
Kite m 'jis ale nan pwochen an.
Nou kouvri dosye mwen / O. Se konsa, sa se menm jan ak ki jan li se nan C.
Apre sa, anvan nou deplase sou li nan kimono, Mwen pral jis montre ou reyèlman rapid ki jan
grate sit nan aklè.
>> Se konsa, nou deja aprann ki jan deklare ranje nan Ruby.
Se konsa, mwen jis deklare yon pakèt moun sou ranje abitrè
ke mwen yo pral estoke done nan.
doc se opere menm jan an jan li te fè nan dosye a anvan yo.
Nou pwal nan, jwenn chak nan la a span.txt.
Nou deja konnen sa.
Sa se veso a nan ki chak lyen te gen tout nan done a ke nou vle.
>> Se konsa, isit sa n ap fè se pou chak lyen nan txt span class, nou ap ale nan
epi nou ap jwenn yon tag a, jwenn eleman nan premye nan sa.
Sonje byen, .css retounen yon etalaj, se konsa ou pa ka jis jwenn aksè nan li kòm se.
Nou pral jwenn eleman nan premye.
Menm si li nan yon etalaj nan yon sèl atik, ou gen yo sèvi sentaks sa a,
ak Lè sa a rale mete deyò atribi nan href.
>> Se konsa, nou te fè sa pi bonè.
Se konsa, sa ta dwe gade yo konnen yo.
Se konsa, kounye a nou gen yon etalaj rele chemen nan tout nan lyen nou an
ke nou ap ale nan vle sèvi ak.
Se konsa, si nou gen sa a etalaj nan tout nan chemen sa yo ke nou vle itilize,
nou ka Lè sa a, kreye yon atik pou chak nan paj sa yo lè nou louvri paj sa.
Se konsa, kòm nou menm tou nou te wè sou sentaks la anvan, kote
fè fisèl entèpolasyon ak chemen an isit la, se konsa sentaks la se jis pou chemen.
Apre sa, mwen te kapab non sa a varyab nenpòt Non abitrè.
>> Sa a se youn nan enpòtan.
Sa a se etalaj la ki ou pral gen aksè nan chak eleman.
Men, lè ou di pou chemen an chemen, sa a vle di pou chak eleman nan chemen,
rele li chemen, epi sèvi ak sa.
Sa a se esansyèlman tankou lè ou fè yon pou riban, epi ou sèvi ak int mwen.
Se konsa, ou ka trete chemen an kòm nan varyab ki nan incrementing.
>> Lè sa a, pou chak nan sa yo, ale nan chak nan sa yo lyen yo.
Paske nou ap estoke l 'nan paj atik, se konsa nou ap kreye yon nouvo paj chak fwa
nou aksè a li.
Lè sa a, nan ki nouvo paj, jwenn span.postingtitletext, span.price,
ak Lè sa a seksyon # postingbody.
Nou deja kouvri seksyon # postingbody lè nou gade deskripsyon an.
>> Se konsa, nou ka ale wè nan post la krèyslist, si w ap jis gade nan tit la,
ou ka wè l 'kanpe isit la, span postingtitletext.
Epi sa a, poukisa li la a.
Lè sa a, pou pri a, ou kapab aksè a li avèk klas span nan pri.
>> Se konsa, nou menm tou nou ta ka petèt vle nan magazen URL la.
Se konsa, nou pral jis kouri sa a ankò, magazen li nan yon etalaj,
paske si w ap chèche sou krèyslist, w ap
pwobableman ale nan vle yon fason yo, si ou wè yon bagay ki enterese ou,
tounen nan ki sit la.
Se konsa, ou jis vle nan magazen URL la pou referans dedomajman.
>> Sa a se jis esansyèlman yon lòt sentaks pou la pou riban.
Mwen te kapab jis paths.each olye pou a pou chemen an chemen ak endèks.
Apre sa, sa a se sentaks Ruby pou- chemen se sa ki nou te fè moute isit la,
deklare yon varyab pou chak atik.
Ak endèks konpòte li tankou m nan nan C pou pasan.
Se konsa, ou ka kenbe tras nan sa ki endèks la se.
>> Se konsa, isit se jis yon ti bagay ki fasil
pou lè w ap kouri grate a.
Si w ap Gratian dè santèn de paj, a asire w ke li pa nan pandye,
li pral jis pwodiksyon, M 'ap gen aksè nan paj sa a,
ak fè si ke li la toujou kontinye.
Men, pou rezon nou an, paske gen nan yon santèn atik,
Mwen pral jwenn aksè nan jis twa nan yo pou nou pa kouri soti nan tan isit la.
>> Men, anvan nou jwenn ak sa yo ki, mwen se jis pral montre w vrèman rapid,
Mwen pral sorti tit la, pri, deskripsyon, ak URL
nan chak nan lyen yo ke mwen te grate.
Lè sa a, sa a se jis nan sentaks pou bibliyotèk la CSV.
Ou louvri yon CSV.
Sa a se sa mwen pral rele li.
Louvri l 'ak ekri fè.
Lè sa a, CSV yo pral dosye a ki w ap Anthrax tout bagay nan.
Sa a se jis yon chèk saniti pou m 'konnen ke li nan kouri.
Lè sa a se chèk saniti mwen konnen ke li nan fin fèt.
Se konsa, mwen mete tit nan yon ranje nan CSV, pri, url, deskripsyon, nan
tout nan ranje nan CSV la.
>> Se konsa, si n 'al kouri now-- sa a ak mwen jis
asire w ke mwen te sove l-- olye pou nan jis sorti li nan tèminal la,
nou ta dwe gen yon CSV dosye ki nan pwodwi.
Se konsa, isit nou ka wè CSV nan dosye sa a te pwodwi.
Sa a se pwodiksyon an nan la scape ke mwen jis kouri.
Kòm ou ka wè isit la, Antre paj 0, 1, 2, 3.
Sa yo se tit yo, pri, deskripsyon.
Men, si nou gade nan sa a CSV dosye ke nou te pwodwi,
ou ka wè li yo outputted isit la.
Sa a se pa Excel, se konsa li a pa fòma nan ranje ak kolòn.
Men, ou ka imajine ki jan li ta ka fòma.
>> CSV kanpe pou vigil separe valè.
Se konsa, ou ka imajine sa a ta kapab yon ranje.
Epitou, chak vigil ta endike yon kolòn ki apa a.
Jis yon mo nan caution-- pafwa ou ap
Gratian bagay sa yo ak yon anpil nan vigil.
Se konsa, si w ap sorti li nan yon dosye CSV,
li ta ka pa pwodiksyon an fason ou ta ka panse.
>> Se konsa, sa a, se esansyèlman tout gen nan Gratian debaz HTML
paj ak Nokogiri.
>> Se konsa, ke yo te nan entènèt inovatè kòm li te vini
ak yon pi plis otomatik ak entèfas vèsyon, kwake mwens gaya
vèsyon an Gratian sit entènèt divès kalite.
Se pou rezon nou an Mwen pral demontre
yon ekstansyon Chrome rele kimono.
Apre sa, tout sa ou dwe fè se ou navige nan paj la ke ou vle grate.
Ou klike sou yon jaden nan enterè yo.
Ou detèmine jaden yo, paske li pral otomatikman
detekte ki sa li panse ou vle yo dwe Gratian,
ak Lè sa a ou jis kreye yon API.
>> Se konsa, si nou te yo demontre l 'sou Krèyslist, li aktyèlman pa t 'vle travay.
Lè sa a se sa m 'te pral tounen nan li di sou li pa ke yo te kòm gaya.
Li te gen pwoblèm kreye API la.
Men, kòm yon demonstrasyon nan sa ki li ta fè sa,
si ou enstale ekstansyon sa a Chrome, tout sa ou fè se ou klike sou li.
Li Kimonofies paj la, ak Lè sa a ou klike sou bagay la ou vle script.
>> Se konsa, si m 'te klike sou ki, li ta mete aksan sou
ki sa li panse mwen vle gen Gratian koupe paj sa.
Se konsa, petèt mwen rele sa a lis.
Sa a se ki jan anpil bagay mwen te chwazi a.
Apre sa, mwen ka jis konfime oubyen denye kèk nan lòt lis yo sijere
jwenn li pou ajoute pou ki sa yo pral grate.
>> Se konsa, kounye nou ka wè gen nan yon santèn atik chwazi.
Si m 'vle gen yon lòt jaden pou m' tou grate ki se ki gen rapò ak sa a,
di mwen vle grate pri a kòm byen, Lè sa a, mwen kapab fè menm bagay la.
>> Se konsa, isit la nan yon demonstrasyon de ki jan li a anpil mwens gaya, paske kounye a li la
davwa ke yo pran lavil la olye pou nan jis pri a ke mwen vle.
Epi, koulye a li nan ranmase 200 bagay sa yo.
Ou ka ale retounen lakay yo epi efase.
Ou ka eseye ankò.
Men, pa gen garanti.
Sa a se fason sa a ap travay pafwa.
Kòm ou wè isit la, kounye a li di 96 moute isit la.
Li nan ranmase pi fò nan lyen yo ke ou vle grate, men se pa
nesesèman tout nan yo.
>> Yon lòt zouti itil nan kimono menm si se ou ka ale nan Karakteristik avanse
isit la, ale nan Avanse, epi li pral montre w
dekonpozisyon nan inik nan fason jwenn aksè nan HTML a
Tags ke ou vle grate.
Se konsa, pou lis, si ou gade nan isit la, si ou gen aksè div span p span yon,
ou ka aktyèlman jis itilize sa a nan kòd Nokogiri ou,
kote anvan nou te span.txt jwenn aksè nan chak nan lis yo.
Si m 'jis vle tèks la nan lis yo,
Mwen te kapab D 'espas div p span space space span espas yon,
epi li ta reyalize efè lan menm.
Se pou moun nan nou ki enterese nan lè l sèvi avèk ekspresyon regilye,
li k ap pase nan tou ba ou regilye nan ekspresyon sòt de fisèl D '
jwenn bagay sa yo w ap eseye jwenn.
>> Se konsa, gen nan yon lòt karakteristik fre a Kimono kote ou ka pajine,
ki se pa sèlman mwen ka grate rezilta yo nan paj sa a,
Mwen ka klike sou sa a ti kras bouton isit la, Pagination,
presize bouton an ki ta pran m 'nan paj kap vini an,
ak Lè sa a li pral jis konnen ke li ka repekte nan paj kap vini an,
ak Lè sa a grate tout nan the-- osi lontan kòm li nan fòma a menm nan course--
scape tout nan sa yo lyen yo tou.
>> Se konsa, paske kimono pa vle travay avèk krèyslist, ki sa nou te fè
se mwen te Kimonofied Crimson la Harvard.
Mwen te rale soti kèk nan sòt nan nan chin an tap tèt atik, konfime isit la.
Di tout moun sa yo.
Mwen te konpile API sa a pou ou devan yo nan tan.
Men, otreman sa ou ta fè se ou ta jis klike sou Fè.
Antre nan detay API ou yo.
Mete l 'nan swa otomatik oswa manyèl rale.
Se konsa, ou te kapab mete ajou ou done chak 15 minit,
chak semèn, chak jou, tou sa ou vle.
Non API ou yo.
Kreye API la.
Pou benefis ou, mwen te kreye nan Wouj devan paj API deja.
>> Se konsa, ou jis kreye yon kont sou kimono, epi li
pral estoke tout APIs ou pou ou.
Se konsa, esansyèlman sa a tout ou separe grafonyen diferan.
>> Se konsa, si nou gade isit la, sa a se nan opinyon lyen ke mwen te ranmase.
Sa yo se chin an tap nan lyen ke mwen te ranmase.
Ak sa yo yo pi li nan lyen ke mwen te ranmase
sa a soti nan scape API ki pi resan.
>> Se konsa, si ou ka wè isit la, sa yo ta dwe chin an tap nan,
sa yo ta dwe opinyon yo, ki nan egzanp sa a,
Mwen te konbine yo tout nan yon sèl koleksyon.
Men, si ou jis jwe otou ak li yon ti kras, ou ka fann l 'kanpe
epi divize l 'kanpe sepandan ou vle osi lontan
kòm fòma a se yon ti kras diferan.
>> Jis yo jwe otou ak sa a, nan rale mete kanpe, youn nan enkonvenyans yo
se ou ka sèlman rale moute a 25 paj nan yon tan.
Sa a youn nan faktè sa yo limite.
Men, isit la, si ou mete l ' nan manyèl rale, sa a
se ki jan ou ka di li mete ajou done ou.
Ak isit la ou ka wè istwa rale ou nan tout bagay ke ou te ranpa.
Apre sa, ou nèg ka ale tounen, enskri, jwe otou ak tout fason yo diferan
ke ou ka modifye epi sèvi ak done ou.
>> Kimono ka mete jiska grate lyen ki nan lyen yo.
Epi ou ta fè sa pa premye Gratian yon lis lyen yo,
Lè sa a, lè l sèvi avèk ki ak API kòm yon sote sou pwen pou yon lòt API
ke ou kreye script la.
Men, sa a pi konplike pase ki sa nou ap ale nan jwenn nan jodi a.
>> Se konsa, sa a, se kimono.
Nou pral pale sou avantaj yo ak dezavantaj nan Nokogiri ak kimono.
>> Nokogiri, li vrèman vit.
Li fasil li teste.
Ou ka jis mete anyen yo konsole, fasil nan konfigirasyon.
Ou ka deside ekzakteman ki sa ou vle grate ak magazen.
Pa gen okenn limit paj.
Mwen aktyèlman itilize li nan grate tankou 1800 sit Sid Afriken lekòl
pou Imèl pou yon estaj pou m 'te fè sa.
>> Se konsa, sa a, se posib, menm si pi bon pratik ta dwe fann moute script la.
Paske si li echwe, lè sa a ou pa jwenn anyen.
Men, si ou fè yon santèn, petèt 200 paj nan yon moman,
Lè sa a, ou gen kèk chans pou omwen jwenn li parselèr, espesyalman
si ou gen move entènèt.
>> Malerezman li ka sèlman grate HTML.
Se konsa, si ou gen dynamique chaje pages--
epi mwen pral montre w yon egzanp tankou kayak nan yon second--
Nokogiri malerezman pa ka grate sa.
>> Men, kimono se tou fasil yo sèvi ak.
Kòm ou te wè, li nan esansyèlman yon pwen, epi klike sou.
Li ka grate JavaScript.
Malerezman, gen nan yon maksimòm di kòman anpil paj ou ka grate.
Pafwa li nan yon ti kras difisil nan konfigirasyon.
Li vin konfonn.
Men, li la definitivman yon bagay yo konsidere
si ou pa ap eseye gen yon super gaya soutnabl grate.
Si ou jis vle jwenn tout bagay koupe nan yon paj byen vit,
Lè sa a, se yon kimono reyèlman bon zouti yo sèvi ak.
Ak jan mwen mansyone anvan, gen nan karakteristik nan avanse nan kimono
ki montre ou ki jan yo aksè HTML a inik
eleman, ki se super itil menm si w ap k ap travay nan Nokogiri.
>> Se konsa, si nou ale nan sit la Kayak, pou egzanp, ou ka wè gen is--
oswa petèt ou pa kapab wè.
Men, si mwen montre w URL la pou Kayak, sa a aktyèlman se jis sous URL la.
Sa a se URL la anvan yo te modifye pa tou sa JavaScript Scripts
yo ke yo te pral sou.
Epi, se k ap pase yo gade diferan soti nan enspekte eleman an.
>> Se konsa, si ou ale nan, epi ou matche ak moute Enspekte Eleman nan
Kòd nan kòd la sous, li nan aktyèlman ale nan kapab diferan.
Lè sa a se esansyèlman poukisa Nokogiri pa ka grate dynamique chaje kote sa yo.
Paske se Nokogiri Gratian sous URL la,
Lè nou konsidere ke kimono se aktyèlman Gratian sa w ap esansyèlman
wè nan Chwazi Eleman.
>> Se konsa, si mwen ale nan ak mwen eseye ak Kimonofy Kayak,
Mwen ka aktyèlman ale nan epi chwazi pri a.
Li se yon ti kras pi rèd, ak nan ka sa a, li nan
aktyèlman wè sa a pri kòm diferan de sa yo.
Se konsa, Lè nou konsidere ke ou ka configure-- oswa si sa a pa t dynamique chaje,
ou te kapab configured Nokogiri yo ka resevwa tout moun sa yo.
>> Paske fòma a se yon ti kras diferan pou lis sa a
kòm li se konpare ak rès la nan yo, epi ou ka wè isit la
li la aktyèlman ale ak chwazi tout pri yo vòl.
Petèt mwen vle chwazi lè nan vòl kòm byen.
Apre sa, mwen ka ale nan ak sòt de configured sa.
Mwen pa vle sa.
Mwen jis vle tan vòl nan pwochèn la.
Lè sa a, apre yon koup nan sa yo ale atravè tout, li vin imaj la.
Se konsa, kimono nan bèl entelijan.
Se jis pa byen kòm gaya.
>> Gen kèk lòt altènativ ke ou ka itilize.
Apre sa, mwen pral montre w yo isit la.
Si ou se pi alèz nan Piton olye pou yo Ruby petèt,
gen yon bibliyotèk rele Bèl soup.
Ou kapab sèvi ak sa.
Li trè menm jan ak Nokogiri.
Li te gen yon kèk plis karakteristik.
Ou ka jwenn yon tag HTML ak lè sa a deplase monte oswa deplase sou kote.
>> Genyen PyQt.
Sa a ka aktyèlman grate dinamik sit, paske li nan sòt de
se yon webkit ki pretann yo dwe yon navigatè san yo pa gen aktyèlman
ke yo te yon navigatè.
Se konsa, li ta rete tann pou nan tout JavaScript yo chaje premye, ak Lè sa a
ale nan epi eseye ak grate sit la.
>> Si ou vle bwa avèk Ruby, ou ka ale yon nivo moute soti nan Nokogiri.
Ou kapab sèvi ak Capybara ak yon pakè Poltergeist.
Lè sa a kapab aktyèlman esansyèlman fè menm bagay la
kòm PyQt, ki se li se yon webkit.
Li tann pou la JavaScript yo chaje an premye.
Si ou jwe ak otou ak li ase, ou ka menm jwenn li nan klike sou bagay sa yo.
>> Se konsa, si gen nan yon lyen ki se pa yon href klasik kote
chemen an se fasil pou jwenn, ak li nan yon bagay JavaScript ki detekte
yon klike, ou ka aktyèlman fè sa.
Bibliyotèk la pi popilè simule yon itilizatè
se nan JavaScript, ki se PhantomJS.
Sa a ka evidamman grate dinamik sit paske sa a se esansyèlman
samblan yo dwe Chrome san yo pa koòdone nan itilizatè.
>> Lè sa a,, nan kou pi plis nan gaya, men plus opsyon,
se yon automatisation navigatè Selenyòm.
Apre sa, malerezman, ou pa ap ale yo dwe
kapab fè sa ki nan IDE CS50 ou yo.
Paske esansyèlman sa li fè se li bòt moute Chrome ou a,
Firefox, tou sa navigatè ke ou vle yo sèvi ak,
epi li pistes petèt sourit ou mouvman, tou sa ou tape nan,
epi li jis sòt de automatise pwosesis sa a.
Se konsa, li te devlope kòm yon sòt de sit tès automatisation zouti.
Men, yon anpil nan moun ki sèvi ak Selenyòm grate sit
ke yo otreman gen yon anpil nan difikilte pou Gratian
ak kèk nan sa yo lòt, pi vit zouti.
>> Se konsa, ki nan tout mwen te gen pou Été entènèt.
Pran plezi.
>> ODYANS: Kesyon.
>> ROBERT KRABEK: Wi.
>> ODYANS: Èske gen yon mekanis Hash sit entènèt la se konsa ou te kapab fondamantalman
ale nan li pita sou.
ROBERT KRABEK: Yeah.
Se konsa, nou mete nan, nan nou an egzanp, pou tou de peyi yo,
nou mete sou sit la tout antye nan doc.
Se konsa, ou te kapab aktyèlman jis pran nan varyab doc ak ekri li nan yon dosye-a.
Se konsa, si mwen te vle, mwen te kapab ekri li soti kòm yon dosye HTML,
ak Lè sa a olye pou yo lè l sèvi avèk OpenURI ak yon demann pli,
Lè sa a, mwen te kapab jis louvri moute doc HTML ak Lè sa a rechèch pou sa.
>> ODYANS: Men, ou ka prezève sòt nan nan eksperyans sou entènèt
pandan y ap ou fè offline.
Pa egzanp. lè w ap vole pou plizyè èdtan,
Mwen vle fondamantalman achiv sit entènèt la tout antye. [Fèbl]
>> ROBERT KRABEK: Yeah, sa a, se exactly-- se konsa literalman ki sa sa a ap fè
se li nan pran tout bagay ki ta dwe nan URL sa a.
Se konsa, si nou kouri pli, li nan pran tout nan HTML sa a,
ak li a estoke li andedan doc la varyab.
Se konsa, lè sa a ou ka fè tou sa ou vle fè ak doc.
Ou kapab pwodiksyon li nan yon dosye-a.
ODYANS: Men, li pa nan lye yo.
Li pa dinamik.
Li pa repetitif, dwa?
Ou wè sa m 'vle di?
Mwen ap eseye fondamantalman sòt de yon regle sit entènèt la tout antye sou kondwi difisil mwen
se konsa ke mwen te ka fondamantalman fè li pandan plizyè èdtan san yo pa entènèt.
>> ROBERT KRABEK: Dwa.
Se konsa, si mwen had-- Se konsa, kote nan dosye mwen mwen / O?
Se konsa, sa a se dosye a mwen / O. Se konsa, di olye pou nan sa a, mwen rele craigslist.html sa a.
Mwen ta louvri ki yo.
Mwen ta propos doc nan li.
Mwen fèmen dosye a.
Lè sa a, jis paske CS50 IDE a se sou nwaj la, ki nan kèlkeswa sa.
Mwen ka ale isit la.
Mwen ka telechaje dosye a.
Lè sa a, ki ta ka sou kondwi difisil m 'yo.
Se konsa, ou ka fè l 'ki fason.
Oswa si w ap nan kay la, lè l sèvi avèk la pa CS50 IDE, tankou Sublime oswa yon bagay,
sa a se menm vin pi fasil, paske sa a se tout ki disponib lokalman,
pa mare nan entènèt la.
>> ODYANS: mwen wè.
Sa a se pou yon pwoblèm patikilye.
Èske ou ka fè l 'recursive pou ke ou ale gwo twou san fon plizyè kouch jan de bagay konsa?
>> ROBERT KRABEK: Mwen ka telechaje dosye kòm byen, si se sa ki w ap mande la a.
ODYANS: Yeah.
>> ROBERT KRABEK: Cool.