>> [MUSIC PLAYING]
ROBERT KRABEK: Salam, uşaqlar.
My name Robert Krabek, və Mən sizə uşaqlar tədris olunacaq
ilə web qaşımaq üçün necə Bir Ruby kitabxana Nokogiri,
və Chrome uzantısıdır Kimono.
>> Belə ki, ilk var bir neçə şey ki, siz
Siz olduğunuz bəlkə edə bilərsiniz bu günə qədər bütün psets bunu
və iş deyil bir az tam əldə.
Biz, həqiqətən, yalnız getmək və bilərsiniz sizin üçün yeni iş yaratmaq
yalnız bir yeni layihə etmək.
Davam etmək istəyirsiniz Belə ki CS50 şablon ID iş
Hal-hazırda var ki, çekinmeyin, və yalnız bilərsiniz
CFLAGS ilə Nokogiri yüklemek bərabərdir gem nokogiri bərpa edin.
Amma əks halda mən sizə göstərmək lazımdır yeni bir qurmaq necə.
Və sonra bu mahiyyətcə daha təlim təkərlər düşmə.
Siz sanki Və kodlaşdırma etdiyiniz yalnız Sublime və ya bir şey kodlaşdırma.
Biz artıq keçmək əgər.
>> Belə ki, bu cari CS 50 ID deyirlər.
Siz yalnız burada Cloud9 bilərsiniz.
Siz tablosuna bilərsiniz.
Bu İş nişanı gətirmək lazımdır.
Və sonra yalnız vurun Burada Yeni İş yaradın.
Yeni iş Adı, bəlkə test, və ya qaşınma.
Və sonra burada bu xüsusi sekmesini basın əvəzinə CS50 şablonları nişanı.
Və sonra yalnız getmək bilər və yeni iş yaradır.
>> Mən artıq burada bir iş yaratdıq.
Beləliklə, biz bu iş olacaq.
Və bir yeni yaradılmış əgər iş Custom nişanı ilə, belə ki,
Yalnız gem quraşdıra yazın burada niyyətində deyil nokogiri.
OK, bir az dondurulmuş var.
Amma nokogiri quraşdıra gem edəbilərsiniz.
Və bütün olmalıdır ki, quraşdırma var.
>> Dediyim kimi, əvvəl hələ əgər Sizin CS50 şablon ID çalışan,
Yalnız CFLAGS yazın lazımdır gem nokogiri bərpa bərabərdir.
Və mən artıq yükledikten Burada mən bunu deyil.
Lakin həmin üçün aşağıdakı yanaşı, bunu çekinmeyin.
>> Siz Nokogiri var bir dəfə belə iş və ya kitabxana yüklü,
Mən sizə bir az vermək gedirəm Ruby sintaksis bir qəza Əlbəttə
Nokogiri bir Ruby kitabxana çünki.
Belə ki, bəzi əsas bilmək lazımdır Nokogiri ilə iş üçün Ruby syntax.
Belə ki, bəzi əsas fərqlər siz istifadə etdiyiniz nə
Bəlkə iş etdik əgər Bu günə qədər yalnız C və PHP,
Siz heç bir növü ilə dəyişənlərin elan.
Siz semicolons istifadə etməyin, olan relyef növüdür.
İndi ətrafında parantez var və ya loops isə, misal üçün.
Siz yalnız kodu bir blok var, və sonra ki, sonunda son qoydu.
Heç bir plus var plus və ya minus minus, yalnız belə
zaman bilirik ki, Siz loops üçün edirik,
yalnız plus bərabər və minus bərabərdir.
Əvəzinə hash daxildir Əgər tələb istifadə və lazımdır
çalışır nə Kitabxana Sizin proqram yüklemek üçün.
>> Ruby bir tərtib dili deyil.
Belə ki, bir relyef var.
Bu PHP olduğu üçün daha çox oxşar Bu bir şərh dil var.
Siz hər hansı bir Ruby script çalıştırabilirsiniz ki, Ruby izlədi yazmaq
script və ya proqram adı ilə.
Bu bir Ruby proqram ki demek, Yalnız Rb əvəzinə c ilə son.
Və dəyişən var Ruby ölçülü Diziler,
siz olduğunuzda super rahat qaşınma və bəlkə əlavə etmək istəyirəm
Siz bir sıra daxil həkk etdik data.
Siz yeni array malloc yoxdur və yeni massivinə köhnə array surəti.
Siz yalnız ilə əlavə edə bilərsiniz iki arrow əlamətləri.
Və heç bir chars var var yalnız hərf strings.
Belə ki, bir az daha asan olmalıdır.
>> Belə ki, biz yalnız bəzi vermək lazımdır bəzi əsas Ruby sintaksis nümunələri.
Belə ki, burada əvəzinə görə bilərsiniz çizgi çizgi, Ruby şərh
Yalnız funt işarəsi istifadə edin.
Və dəyişən bəyannamə, siz yalnız dəyişən bərabər yazın
hər hansı dəyişən olmaq istəyirəm.
Onlar strings ola bilər.
Siz array, ola bilər ki, Siz dəyərləri ilə yaşayır.
qoyur və izləri eynidir.
Bizim məqsədləri üçün, Yeganə fərq həqiqətən
ki dayanır, qoyur qoyur, yalnız yeni xətt qoyur
karakter nə siz çap edirik.
>> Biz kiçik vermək əgər Belə ki, burada nümayiş,
Biz bu with-- çalıştırabilirsiniz Yeni terminal açmaq.
Bu bütün edə bilərsiniz mənim terminal var faylları.
Mən yalnız əgər Ruby, yaqut intro.rb, onu
Hello beş həyata qoyur Mather, Quincy, Carrier.
Adams.
Bütün belə var elan serialların.
Auditoriya: Robert, siz edə bilərsiniz Sizin font bir az daha böyük?
ROBERT KRABEK: Bəli.
Bilməz, çünki mən zoom edə bilərsiniz yəqin terminal fonts üçün zoom.
>> Belə ki, siz çap necə Sizin terminal dəyişənlərin.
Siz həmçinin istifadə edə bilərsiniz simli daxilində dəyişənlər.
Belə ki, bu yaxınlarda PHP, Siz öyrəndim bilər
string interpolation yoxdur.
Belə ki, burada bir nəzər, mən əgər üç dəyişənlər, adı, kitabxana elan
və dil, mən qoyur, mən bir simli yazın, salam mənim ad.
Və sonra yerinə PHP string interpolation versiyası
bu kimi bir az daha görünür, Əgər bir funt işarəsi var və
bir buruq brace və sonra dəyişən adı.
Və siz çap istədiyiniz necə, demək ki, nə dəyişən adıdır.
>> Və sonra siz də edə bilərsiniz strings concatenate.
Ruby bu super edir plus sign ilə asan.
Siz yalnız bir simli var sol plus dəyişən haqqında
başqa string plus bir simli və ya.
Bu çap əgər, belə ki, yalnız mənim ad Robert salam demək.
Mən sizə Ruby nokogiri tədris olunacaq.
>> Və yalnız ki, ki, təsdiq edək Həqiqətən case-- yaqut intro edir.
Salam, mənim ad Robert edir.
Mən sizə Ruby nokogiri tədris olunacaq.
>> Hərəkət, başqa şərhlərdə əgər, Bu bir az fərqli
Siz üçün istifadə edilə bilər nə Siz C. iş etdik əgər
Siz parantez ehtiyac yoxdur.
Siz qıvrım aşırma ehtiyac yoxdur.
Əvəzinə əgər başqa bir, bu bir zəncirləmə elsif var.
Burada Belə ki, mən bəyan etdik əgər x Göründüyü kimi, burada, x hələ 5-dir.
X 3-dən az olarsa, belə ki, bu, kiçik qoymaq lazımdır.
7, orta, başqa böyük az varsa.
Belə ki, 5 orta sayı.
Mən sonu ilə kodu bu blok son.
>> Burada loop üçün edir.
Bu syntax də az fərqli.
0 beş yalnız mahiyyətcə 5 0 bir seriallarda elan edir.
Belə ki, serialın beş slots var.
Və sonra hər slot üçün array, mən incrementing olacaq.
Belə ki, bu 4 5 0 və ya 0 çap etməlidir.
Bu orta verməlidir.
>> Mən yalnız vasitəsilə etmek lazımdır.
Siz uşaqlar daxil olacaq sonra bu kodu.
Belə ki, uşaqlar bu özünüzü çalıştırabilirsiniz.
>> Belə ki, bu əsas isə loop var.
Bu yalnız j çap olacaq, biz 5 hit qədər 1-incrementing.
>> Super sürətli Ruby crash kurs bir funksiyası yazmaq üçün necə.
Bunun əvəzinə, demək, int faktöryel sayı, biz yalnız def var.
Və mahiyyətcə sen Burada bir funksiyası müəyyən.
Bu olacaq funksiyası adı,
və bu hər hansı bir dəyişənlər var ki, funksiyası daxil keçmək istəyirik.
Siz ərzində əgər hesabatları ola bilər.
Siz ola bilər.
Bu halda, biz istəyirik bir recursively müəyyən
həyata faktöryel funksiyası.
Beləliklə, biz yalnız funksiyaları zəng bu kimi Ruby.
>> Bu mən, müəyyən etdik Belə ki 3 keçmək, faktöryel zəng edə bilərsiniz,
və sonra 3 sayı dəyişən olacaq Mən funksiyası ərzində istifadə edə bilərsiniz.
Bu to_s yalnız dönüş bir simli daxil Faktorial dəyər qayıtmaq.
Əks halda bu atmaq edəcək Səhv Mən oh deyərək
bir string çap bilməz Yadınızdadırsa kimi, çünki,
Bu, çünki simli qoyulur qoyur faktöryel bir sıra qayıdıb.
Belə ki, çevirə bilərsiniz bu kimi bir string.
Və əksinə, siz də çevirə bilərsiniz to_i ilə tam bir string.
>> Belə ki, hər şey super sadə edilməsi, Mən yalnız bu həyata şərh varsa, saxlamaq
və faktöryel funksiyası axır.
Biz görmək lazımdır 3 ki, faktöryel 6.
Və həqiqətən doğrudur.
>> Belə ki, Ruby sizin crash kurs var.
İndi Ruby bilirik ki, biz getmək bilər əsas Nokogiri qurmaq kazıma.
Əsasən siz nə üçün bütün, Ruby, kitabxanalar tələb edir.
Və bizim üçün, biz istifadə olacaq kitabxana OpenURI eləcə də Nokogiri.
Və sonra nə do-- və lazımdır siz şeylərdir üçün sintaksis vermək
Siz kimi çox URL açıq edir C URL üçün dayanır cURL sorğu.
>> Belə ki, URL almaq sual haqqinda.
Siz dəyişən bu saxlamayın.
Və sonra vasitəsilə axtarış edə bilərsiniz istifadə edərək, unikal HTML tags üçün dəyişən
.css komanda.
Və sonra çıxış edə bilər Istədiyiniz yerdə content.
Siz bazasında başlaya bilərsiniz.
Siz bir fayl çıxış, və ya hətta yalnız ekran çap.
>> Beləliklə, biz bir əsas ərsin göstərmək lazımdır.
Burada biz var edə bilərsiniz, belə ki, nokogiri tələb açıq uri tələb edir.
Sizin əsas set up, edək , sənəd və ya doc zəng
Nokogiri :: HTML olan, açıq bərabərdir OpenURI tərəfindən bizə təqdim komanda
kitabxana.
Və biz üçün, axtarış olacaq Dörd yaşayan ola bilər siz,
Boston verilmişdir Motosiklet üçün Boston Craigslist velosiped hissəsində
Sayt.
>> Siz tanımadığı halda belə curl ilə, yalnız lazımdır
real sürətli cURL nə göstərir.
Mən URL bütün almaq istəyirdi Craigslist site, mən curl yazın əgər,
yalnız URL bütün zibilliklərin Craigslist velosiped site
mənim terminal üzərində.
Xüsusilə deyil faydalı etmirəm, çünki
əl ilə getmək istəyirəm I arıyorum şey tapa bilərsiniz.
Amma yalnız belə siz Mən, həqiqətən, Ben ki, görəcəksiniz
Siz baxmaq əgər, doğru kodu istifadə bikes-- Craigslist üçün URL
nədənsə aşkar deyil.
Bu səhifənin baxsaq və URL baxmaq,
Bu eyni olmalıdır Mən yalnız göndərmək cURL sorğu.
And olsun ki, olan nə var doc dəyişən saxlanılır.
>> Beləliklə, siz bizim kodu geri zaman, biz onda bu doc ​​dəyişən fəaliyyət bilər
.css istifadə edərək.
Belə ki, bütün almaq istədiklərini deyirlər span.txt var tags,
ki, tag ərzində bütün tags.
Və niyə istəyirik bilər Bunu mən ağlamaq eşitmək?
>> Biz Element Inspect, bu, sizə bir verir URL quruluşu necə bölgüsü.
Mən vasitəsilə aşağı diyirləyin əgər Burada siz görə bilərsiniz
nə bu müxtəlif hər elementləri əks etdirir.
Belə ki, bəlkə mən daxil olmaq istəyirsinizsə bu element.
Belə ki, Chrome geliştirici istifadə edirəm tools Element Inspect.
Mən burada çox ki, bu bilərsiniz bir span ərzində tag edir
txt bir sinif ilə tag.
>> Belə ki, bu olur bizim İlk əməliyyat olan
tag doc.css span, ki, Mən bütün bu URL ərzində arıyorum.
Və sonra Txt CSS kimi çox fəaliyyət Yalnız CSS yazılı etdiyiniz zaman yoxdur
sizin HTML faylları bir sinif ifadə.
Belə ki, bu operator olacaq txt sinif ilə span tag daxil.
Və sonra mən bir yer tərk əgər, Bu o tag ərzində gedəcək
və sonra bir ki çərçivəsində tag tapa bilərsiniz.
>> Mən yalnız bu qoymaq əgər terminal, mən olmalıdır
mahiyyətcə hər şeyi görmək mümkün ki, sinif txt bu span ərzində.
Beləliklə, biz bir yolda olduğunu verəcəyik.
ruby craigslist-ərsin.
Həqiqətən bizə bütün bunlar verir müxtəlif siyahıları tags ki,
Craigslist səhifə var.
>> Biz geri getmək əgər Belə ki, biz bu bırakabilirsiniz bir şey bir az daha faydalı.
Bəlkə biz yalnız links istəyirik.
Bu tag ərzində, mən də lazımdır, çünki yolun köprü var
bu səhifə gedir.
Belə ki, burada bu kodu baxsaq, nə edəcəyik əvəzinə .css edir
Mən at_css bilərsiniz.
Və bu, yalnız birinci olacaq o şeyi bütün element.
Mən əgər ki, up bunu code Mən yalnız əvvəllər nümayiş,
əvəzinə bütün qaytarılması Bu, yalnız ki
o ilk qayıtmaq.
At_css operator çalışır ki, var.
>> Beləliklə, biz saxlamaq istəyirəm yol ilk tag bütün.
Və bizi a-- verəcək, çünki belə ki, biz hələ .CSS istifadə etmək olacaq.
Amma bu, çünki vermək niyyətindədir bizə geri tags bütün array,
biz daxil olmaq üçün gedir ilk element.
Belə ki, bu başqa bir yol ki, siz deyil Əgər hər hansı bir element daxil
elementlərin bir sıra var ki qaytarılır,
bir şey müalicə edə bilər, çünki mahiyyətcə bir sıra kimi .css qaytarır.
Və sonra biz daxil olacaq Bu mətn istinad atributu.
>> Belə ki, bir nəzər əgər, əgər Siz burada həqiqətən yaxın baxdı
yalnız mahiyyətcə əgər URL bar baxmaq,
Bu yol ki, Siz qaşınma olacaq.
Biz yalnız yenidən bu Belə ki, və biz bunu xilas etdik əmin olun.
Siz evdə kontrol edə bilərsiniz.
Bu, həqiqətən, bu link ilə gəlir.
>> Belə ki, niyə biz bu istifadə edə bilərsiniz?
Siz qaşımaq istəyirsinizsə Bu var və səhifə
kimi links bir səhifə Craigslist, nə siz
sonra getmək istəyirəm bilər bu əlaqələr hər daxil
və sonra qaşımaq ki, content, hansı
Biz nə olacaq dəqiq nə.
>> Siz kimi yol var bir dəfə belə dəyişən, mən artıq həqiqətən
onu çap qayğı.
Mən yalnız bir dəyişən kimi saxlamaq lazımdır.
Və sonra mən başqa əldə edə bilərsiniz Mən daxil eyni şəkildə səhifə
ilk növbədə doc.
URL ilə istisna olmaqla, biz gedirik string interpolation istifadə etmək
Mən izah etdi Ruby əvvəllər əlavə etmək
kök sonuna yolu.
>> Belə ki, nə bu nə gedir bu yolda qoymaq niyyətindədir
Mən əvvəllər həkk ki, və sonra çevirmək
yeni maddə daxil, siz istədiyiniz hər hansı pseudocode məsələn, first_listing çağırırıq.
Amma tərk gedirəm İndi maddə üzrə bu,
Mən burada istifadə edirəm nə çünki.
>> Beləliklə, mən təsviri almaq istədiklərini deyirlər Craigslist ilk poçt.
Beləliklə, mən burada getmək olardı.
Mən Element Inspect basın ki, yenidən, bu təsviri çünki.
Mən burada getmək və görmək istədiyiniz Mən tapa bilərsiniz əgər necə bilər
Bu unikal tag üçün axtarış edə bilərsiniz.
Və bu halda, o bizə rəhbərlik şəxsiyyət,
üçün axtarış növbəti yol tags olan bir hashtag ilə.
>> Siniflər üçün, siz belə dot operator istifadə.
Belə ki, Txt, txt sinif ifadə edir hash halbuki ID göstərir.
Belə ki, bu halda, tag edir bölmə Harada postingbody edir.
>> Belə ki, bu gedir və hesab first-- biz istəyirik, çünki
Bu gedir at_css-- istifadə və ilk element hesab edir ki,
bölmə tag ilə gəlir və postingbody şəxsiyyət.
Və sonra mətn element əldə edə bilərsiniz ki, maddə Mətn ilə döndü.
Və sonra biz bilərsiniz təsviri edir.
>> Belə ki, indi biz bir var ki, dəyişən təsviri,
biz, demək, bunu edə bilər I / O fayl. Belə ki, Ruby I / O fayl
/ O Mən fayl çox oxşardır C biz bir fayl açmaq yerləşir.
Biz buna yazmaq bilər.
Və sonra biz fayl yaxın olacaq.
>> Belə ki, burada, biz yalnız adlandırma edirik bəzi ixtiyari dəyişən fayl.
Biz də yalnız burada bu qoymaq bilərdi.
Biz saxlanılması edirik dəyişən var File.open kimi açıq fayl.
Və biz, bu fayl yazılı edirik belə ki, biz w operatoru ilə açın.
Və sonra biz daxil simli qoymaq .puts operatoru ilə fayl.
Və sonra biz dəyişən qoymaq ki, biz ki, ərzində fayl yazmaq istəyirəm.
Və sonra biz yalnız fayl bağlayın.
>> Belə ki, biz irəli getmək və bu run əgər, Bu sənəd olmalıdır
description.txt olan iradə ərzində bu təsviri var.
Belə ki, əgər mən heç bir pseudocode axır.
Bu, bir mətn faylı istehsal edir ümid edirəm ki, eyni şey.
Belə ki, yeni poçt var bilər Mən söhbət etdik isə qədər gəlib.
Olmuşdur kimi həqiqətən görünür.
Beləliklə, biz bu klassik Velosiped getmək əgər, 1962 1966 üçün ki, uyğun görünür.
Və siz getmək.
>> Belə ki, ən əsas var kazıma funksionallıq.
Biz əvəzinə ola bilər yalnız bu fayl yazılı,
biz bir sıra şeyi əlavə edə bilərsiniz.
Mən üç Diziler elan Belə ki, adı, qiyməti, və təsviri.
Və biz indi doc maddə üzrə fəaliyyət edirik.
Biz vasitəsilə getmək və bilərsiniz span.txt bütün tapa bilərsiniz.
Bu bir sıra qaytarır, xatırlayıram tapdığı bütün maddələr.
Və sonra Ruby, yalnız istifadə edə bilərsiniz hər bir maddə vasitəsilə təkrarlamaq .Hər
serialın.
Və sonra hər bir maddə üçün, Mən yalnız zəng etmək üçün gedirəm
ki, var, çünki bir link bu mahiyyətcə nə.
>> Beləliklə, mən hər link.css dot a.hdrlnk qoymaq əgər, Bu, həqiqətən, link gedir
ki, link bir ərzində tapmaq HTML element və müvafiq sinif.
Belə ki, biz xatırlayıram nə Bu, span.txt idi
Mənə yalnız geri gedək see- bilər span.txt ərzində real quick--
digər dərsləri var.
Belə ki span.txt daxilində, biz aradığınız bir sinif hdrlnk ilə bir tag üçün.
Mənə ki, yalnız tapmaq imkan Sizlərin real tez.
>> Burada görə bilərsiniz, bu bir tag edir ki, sinif txt span ərzində var
ki, sinif hdrlnk var.
Və həqiqətən nə var Biz almaq üçün çalışırıq.
>> Beləliklə, biz indi bütün saxlamaq üçün çalışdığınız başlığı daxilində bu əlaqələr.
Və sonra biz çap olacaq bu əlaqələr hər həyata.
Xeyr, sorry.
Biz çap olacaq o hər qiyməti.
Belə ki, həqiqətən, bu run edək tez və nə görmək.
>> Belə ki, bu yalnız əsasən getdi links hər vasitəsilə
öz növbəsində, söz mövzusu tag əldə və sonra qiymət çıxardı.
Və bu idi ki, sonra, çünki Siz adı hər şey var,
biz yalnız orada adı saxlanılır etdik.
Biz yalnız link saxlanılır etdik array adı ərzində.
Və loop əməliyyat üçün bu, harada əvəzinə a.hdrlnk gedən,
biz bir span.price aradığınız.
Mən, həqiqətən, tez tapa bilərsiniz, belə ki, qiyməti element yoxlamaq əgər,
Siz bir span ki, görəcəksiniz qiymət sinif ilə.
Və mahiyyətcə necə biz qiymət alırıq.
>> Belə ki, həqiqətən qaşımaq əsas işi.
Ki, bütün almaq necə Bir səhifə elementləri
ki, demək, siz artıq URL bilirik.
>> Biz almaq istəyirsinizsə Belə ki, , dərinliyi daha az
biz pages pages əngəl ola bilər.
Və bu, məsələn, mən bir CSV faylı tipi olun.
Mən burada csv up tələb edirəm Ruby deyil, çünki özü daxilində,
funksionallıq var yalnız çıxış CSV faylları.
Belə ki, super sadə.
Mənə yalnız növbəti gedək.
Biz fayl I / O əhatə etmişdir. Belə ki, bu Bu C. necə oxşardır
Və biz Kimono üçün hərəkət əvvəl, Mən necə həqiqətən sürətli göstərmək lazımdır
yerləri çərçivəsində saytlar qaşımaq üçün.
>> Belə ki, biz artıq necə öyrəndim Ruby Diziler elan.
Mən yalnız bir elan edirəm ixtiyari serialların dəstə
Mən ərzində məlumatların saxlanılması olunacaq.
doc eyni şəkildə fəaliyyət göstərir Əvvəlki fayl etdi.
Biz tapmaq,-da olacaq span.txt nin hər.
Biz artıq bilirik.
Ki, konteyner olan hər ərzində link istəyirik data bütün var.
>> Belə ki, burada biz nə edirik hər üçün span class txt link, biz gedirik
və biz bir tag tapmaq edirik ki, ilk element tapmaq.
, .css Bir sıra qaytarır, saxla kimi belə ki, yalnız gedə bilməz.
Biz ilk element tapmaq olacaq.
Bu bir bir sıra belə maddə, bu sintaksis istifadə etmək lazımdır,
və sonra href atributu çıxarmaq.
>> Beləliklə, biz bu əvvəllər idi.
Belə ki, bu tanış baxmaq lazımdır.
Və indi biz bir sıra var Bizim links bütün adlı yolları
biz istifadə etmək istədiyiniz olacaq ki.
Beləliklə, biz bütün bu array varsa biz istifadə etmək istədiyiniz yolları,
biz sonra hər bir maddə yarada bu pages ki, bir səhifə açmaq zaman.
Biz də gördüm, belə ki, əvvəl, burada sintaksis
yolu ilə string interpolation bunu burada, belə ki, sintaksis yalnız yol üçün.
Və mən bu ad bilər dəyişən hər hansı bir ixtiyari adı.
>> Bu əhəmiyyətli biridir.
Bu ki, siz lazımdır array var hər bir element daxil olun.
Amma yolları yolu deyəndə, Bu yolları hər bir element üçün o deməkdir ki,
yol zəng, və istifadə edin.
Bu zaman kimi mahiyyətcə loop üçün nə və mən int istifadə edin.
Belə ki, kimi yol müalicə edə bilər incrementing dəyişən.
>> Və sonra o hər biri üçün, bu əlaqələr hər daxil.
Biz maddə səhifəsinə saxlanılması edirik, çünki, belə ki, biz hər zaman yeni bir səhifə yaratmaq edirik
biz gedə.
Və sonra yeni page tapmaq span.postingtitletext, span.price,
və sonra bölmə # postingbody.
Biz artıq bölüm # postingbody əhatə biz təsviri baxdı zaman.
>> Beləliklə, biz Craigslist post görmək getmək bilər, Yalnız adı arıyorsanız,
Siz burada bu qədər görə bilərsiniz span postingtitletext.
Bu var ki, var.
Və sonra qiymət üçün, siz qiymət span sinif daxil.
>> Belə ki, biz bəlkə də bilər URL saxlamaq istəyirəm.
Beləliklə, biz yalnız bu run lazımdır yenə bir sıra onu saxlamaq,
siz aradığınız, çünki Craigslist, sen
yəqin ki, əgər, bir yol istəyirəm olacaq Siz maraqların siz bir şey görmək
geri site to.
Belə ki, yalnız saxlamaq istəyirəm Istinadlar naminə URL.
>> Bu yalnız mahiyyətcə loop üçün başqa syntax.
Mən yalnız əvəzinə paths.each yoxdur bilər indeksi ilə yolları yolu.
Bu syntax Ruby edir baxan mýsýn yol, biz burada nə edir
hər bir maddə üçün bir dəyişən elan.
Və index kimi davranır loops üçün C i.
Belə ki, takip edə bilərsiniz index nə.
>> Belə ki, burada yalnız bir deyil az rahat şey
Siz ərsin çalışan etdiyiniz zaman üçün.
Siz pages yüzlərlə qaşınma istəyirsinizsə, Bu asma deyil əmin etmək,
Bu, yalnız çıxış edəcək Bu səhifəni daxil alıram,
və əmin edilməsi hələ də davam edir.
Amma bizim üçün, çünki yüz maddələr var,
Mən onlara yalnız üç daxil olmaq üçün gedirəm biz burada vaxt tökülmək deyil ki.
>> Biz almaq əvvəl, mən yalnız deyiləm Siz, həqiqətən, sürətli göstərmək niyyətindədir,
Mən adı tipi olunacaq qiyməti, təsviri, və URL
Mən həkk etdik links hər.
Və sonra bu yalnız CSV kitabxana üçün syntax.
Siz CSV açın.
Bu zəng etmək üçün gedirəm budur.
Yazmaq ilə açın.
Və sonra CSV fayl olacaq Siz daxil hər şeyi giren edirik.
Bu yalnız bir ağlı başında olma çek Mənə çalışan ki, bilmək.
Və bu mənim ağlı başında olma çek bu başa var ki, bilmək.
Belə ki, bir sıra daxil adı qoyulması alıram CSV, qiymət, url, təsviri,
bütün CSV satır.
>> Biz getmək və run əgər Belə ki, Bu, indi və mən yalnız
Mən pseudocode əvəzinə xilas etdik ki, əmin olun yalnız terminal onu tipi,
bir CSV olmalıdır istehsal fayl.
Belə ki, burada biz CSV bilərsiniz istehsal edilmişdir fayl.
Bu çıxış edir Mən yalnız qaçdı scape.
Burada göründüyü kimi, qoşulması səhifə 0, 1, 2, 3.
Bu kitablar var, qiymətləri, təsviri.
Və biz bu CSV baxsaq biz yaradılan sonra fayl,
Onun burada outputted bilərsiniz.
Bu Excel deyil, belə ki, deyil satır ve sütun biçimlendirilmiş.
Amma necə təsəvvür edə bilərsiniz Bu biçimlendirilmiş bilər.
>> CSV virgülle ayrılmış dəyərlər dayanır.
Belə ki, bu bir sıra ola bilər təsəvvür edə bilərsiniz.
Və hər bir vergül ki ayrı sütun göstərir.
Caution-- Yalnız bir söz bəzən etdiyiniz
virgülle bir çox şeyi qaşınma.
Siz tipi edirsinizsə Belə ki, bir CSV faylı üçün,
güc deyil çıxış Sizcə bilər yol.
>> Belə ki, mahiyyətcə bütün əsas HTML qaşınma var
Nokogiri ilə pages.
>> Internet olan Belə ki, yenilikçi bu qədər gəlib kimi
daha avtomatlaşdırılmış və GUI ilə az sağlam olsa versiyası
müxtəlif saytlarda kazıma versiyası.
Və bizim məqsədləri üçün Mən nümayiş olacaq
Kimono adlı Chrome uzadılması.
Və nə üçün bütün gedin deyil Siz qaşımaq istəyirəm səhifə.
Siz maraq sahəsində basın.
Siz sahələri kalibrini ölçmək, avtomatik olaraq, çünki
nə düşünür aşkar Siz kazıma olmaq istəyirəm,
və sonra yalnız bir API yaradır.
>> Biz Belə ki onu nümayiş etdirmək Craigslist, bu, həqiqətən işləməyəcək.
Və bu mən geri gedirdi nə kimi güclü olmayan haqqında söyləyərək.
Bu problem API yaradılması var.
Amma bir nümayişi kimi bunu nə ki,
Siz Chrome uzadılması yüklerseniz, Siz bütün onu basın.
Bu səhifə Kimonofies, sonra Siz script istədiyiniz şey basın.
>> Beləliklə, mən basın olsaydı ki, qeyd edirəm
nə düşünür istəyirəm ki, səhifə off qaşınma ola bilər.
Belə ki, bəlkə mən bu siyahıları çağırırıq.
Bu seçilmiş neçə maddələr var.
Mən yalnız təsdiq və ya bəzi inkar edə bilər digər təklif siyahıları
Bu əlavə etmək üçün nə həkk olunacaq.
>> Belə ki, indi biz var edə bilərsiniz yüz maddələr seçdi.
Başqa bir sahə var istəyirəm ki, əgər mən bu ilə bağlı olan əngəl,
Mən qiymət əngəl istəyirsiniz eləcə də, sonra mən eyni edə bilərsiniz.
>> Belə ki, burada bu necə bir nümayiş var daha az sağlam, indi, çünki
əvəzinə şəhər aldığınız Mən istəyirəm yalnız qiyməti.
İndi 200 şeyi seçilmiş.
Siz geri getmək və silə bilərsiniz.
Siz yenidən cəhd edə bilərsiniz.
Amma heç bir zəmanət verir.
Bu bəzən işləri necə.
Burada gördüyünüz kimi, indi burada 96 qədər deyir.
Bu links ən seçilmiş Siz istəyirəm ki, əngəl, lakin üçün
mütləq onların hamısı.
>> Kimono digər faydalı alət olsa Ətraflı Features getmək bilər
burada Advanced getmək, və bu sizə göstərəcək
unikal qəza HTML daxil olmaq üçün yol
Siz qaşımaq istəyirəm tags.
Belə ki, siyahıları üçün, burada baxsaq, Siz div p span bir span daxil əgər,
Siz, həqiqətən, yalnız istifadə edə bilərsiniz Sizin Nokogiri kodu bu,
biz span.txt idi əvvəl siyahıları hər daxil olmaq üçün.
Mən yalnız mətn istəyirsinizsə siyahıları ərzində
Mən ola bilər input div space p space span space span space a,
və eyni təsiri nail olmaq olardı.
Və sizin üçün maraqlı olan normal ifadeler istifadə,
bu da müntəzəm vermək olur giriş simli ifadə sort
şeyi tapmaq üçün Siz tapmaq üçün çalışırıq.
>> Belə ki, bir sərin xüsusiyyət var Siz paginate bilərsiniz Kimono,
olan yalnız mən əngəl ola bilər deyil bu səhifənin nəticələri
Mən bu kiçik vurun Burada düyməsini Pagination,
düyməsini ki olardı müəyyən Növbəti səhifə üçün mənə almaq,
və o, yalnız bilirik ki, növbəti səhifə təkrarlamaq olar,
və sonra the-- kimi uzun bütün qaşımaq Bu course-- eyni format kimi
eləcə də həmin əlaqələrin bütün scape.
>> Kimono istəmir, çünki belə Biz nə etdik, Craigslist ilə işləmək
Mən Harvard Crimson Kimonofied etdik edir.
Mən növ bəzi çəkilmiş etdik top məqalələr, burada təsdiq səsləndirilib.
Bütün bunlar deyirlər.
Bu API tərtib etdik vaxtından əvvəl sizin üçün.
Amma edəcəyini başqa nə Yalnız Done basın ki, edir.
Sizin API ətraflı daxil edin.
Üçün seçin bilərsiniz avtomatik və ya manual tarama.
Belə ki, yeniləmə bilər sizin data hər 15 dəqiqə,
həftəlik, gündəlik, istədiyiniz hər hansı.
Sizin API adı.
API yaradın.
Sizin üçün, mən yaratdığınız Artıq ön səhifə API allıq.
>> Belə ki, yalnız bir yaratmaq Kimono hesabı və bu
sizin üçün bütün API saxlamaq olacaq.
Belə ki, mahiyyətcə bütün var sizin ayrı-ayrı müxtəlif scrapes.
>> Biz burada baxmaq əgər Belə ki, bu Mən toplanmış etdik fikir links.
Bu nümayiş var Mən toplanmış etdik links.
Və bu ən oxunur Mən toplanmış etdiyiniz keçidlər
Bu ən son API duyarga olan.
>> Burada görə bilərsiniz Belə ki, Bu, nümayiş olacaq
Bu fikir olardı, Bu misalda ki,
Mən bütün bunları birlikdə etdik bir kolleksiya daxil.
Amma yalnız ilə ətrafında oynamaq əgər bir az, siz onu parçalamaq bilər
və lakin onu bölmək siz kimi uzun istəyirəm
formatlama kimi bir az fərqlidir.
>> Məhz bu ilə ətrafında oynamaq üçün, tarama, downsides biri qurmaq
Siz yalnız tarama bilər Bir zamanda 25 pages.
Ki məhdudlaşdıran amillərdən biridir.
Amma burada, bu əgər manual tarama, bu
Siz deyə bilərsiniz necə Sizin veri yeniləmə.
Və burada sizin tarama tarixi görə bilərsiniz hər şey siz sürünərək etdik ki.
Və uşaqlar geri bilərsiniz, qeydiyyatdan, bütün müxtəlif yolları ilə ətrafında oynamaq
ki, dəyişdirmək və sizin data istifadə edə bilərsiniz.
>> Kimono üçün müəyyən edilə bilər bağlantılar ərzində links qaşımaq.
Və ilk bunu ki, links bir siyahısını qaşınma,
və sonra kimi API istifadə başqa API üçün point off jump
Siz script yaratmaq.
Amma ki, daha mürəkkəb nə biz bu gün daxil olacaq.
>> Belə ki, Kimono var.
Biz lehte haqqında danışmaq lazımdır və Nokogiri və Kimono eksiklikleri.
>> Nokogiri, bu, həqiqətən sürətli.
Bu test üçün asandır.
Siz yalnız bir şey qoyur bilər console, asan konfiqurasiya.
Siz dəqiq nə qərar qəbul edə bilər Siz qaşımaq və mağaza istəyirəm.
Heç bir səhifə məhdudiyyət yoxdur.
Mən, həqiqətən, kimi qaşımaq üçün istifadə 1800 Cənubi Afrika məktəb saytları
Mən təcrübə üçün e-poçt üçün.
>> Belə ki, mümkün ən yaxşı təcrübə olsa script parçalamaq olardı.
Sonra, uğursuz Çünki bir şey deyil.
Amma bir yüz əgər, bəlkə bir zamanda 200 pages,
sonra bəzi şans var, ən azı xüsusilə, tədricən əldə
Siz pis internet var.
>> Təəssüf ki, bu, yalnız HTML əngəl ola bilər.
Varsa, belə ki, dinamik dolu pages--
və Mən sizə bir nümunə göstərmək lazımdır bir second-- da Kayahan kimi
Nokogiri təəssüf ki, ki, əngəl deyil.
>> Amma Kimono də istifadə üçün asandır.
Gördüyün kimi, mahiyyətcə var bir point və basın.
JavaScript əngəl ola bilər.
Təəssüf ki, maksimum var Siz əngəl ola bilər necə çox pages.
Bəzən bir az var konfiqurasiya etmək çətindir.
Bu qarışıq olur.
Amma bu mütləq bir şey hesab
Bir üçün çalışırıq deyilik əgər super güclü maintainable scrape.
Yalnız almaq istəyirsinizsə tez bir səhifə off hər şey
sonra Kimono həqiqətən var yaxşı vasitə istifadə etmək.
Mən əvvəl qeyd kimi, var Kimono qabaqcıl xüsusiyyət
ki, necə göstərir unikal HTML daxil
hətta super faydalı element, Siz Nokogiri çalışan olunur.
>> Belə ki, biz, Kayahan site getmək Məsələn, orada görə bilərsiniz is--
və ya bəlkə siz görmək bilməz.
Amma Kayahan üçün URL göstərmək əgər, Bu, həqiqətən, yalnız mənbə URL deyil.
Bu olmaqla URL əvvəl deyil nə JavaScript scripts tərəfindən redaktə
onlar gedən.
Və bu müxtəlif baxmaq olacaq element yoxlanılması.
>> Belə ki, keçir və əgər Inspect Element uyğun
mənbə kodu kodu, bu həqiqətən fərqli olacaq.
Bu niyə Nokogiri mahiyyətcə dinamik dolu saytlar əngəl deyil.
Nokogiri Çünki mənbə URL qaşınma,
Kimono əslində isə Əgər mahiyyətcə olduğunuz qaşınma
Select Element görən.
>> Beləliklə, mən vasitəsilə və mən getmək əgər cəhd və Kimonofy Kayak,
Mən, həqiqətən, ilə getmək olar və qiymət seçin.
Bu, bir az çətindir və bu halda, bu
həqiqətən bu qiymət görən bu kimi fərqli.
Siz configure-- bilər, halbuki belə və ya Bu dinamik dolu deyil, əgər,
Siz Nokogiri konfiqurasiya edə bilər bütün bu almaq üçün.
>> Biçimlendirme az Çünki bu liste üçün müxtəlif
Bu qalan müqayisədə kimi Onların, və burada görə bilərsiniz
bu, həqiqətən getdi və Seçilmiş bütün uçuş qiymətləri.
Bəlkə seçin istəyirəm eləcə də uçuş vaxtı.
Mən ilə getmək olar və sort ki yapılandırın.
Hesab edirəm ki, istəmirəm.
Mən yalnız növbəti uçuş vaxt istəyirəm.
Və sonra bu bir neçə sonra keçir, bu şəkil olur.
Belə ki, Kimono olduqca ağıllı.
Yalnız kifayət qədər güclü deyil.
>> Bəzi digər var istifadə edə bilərsiniz alternativ.
Mən burada onlara göstərmək lazımdır.
Siz daha rahat, əgər Əvəzinə bəlkə Yaqut Python,
kitabxana var Beautiful Soup çağırıb.
Siz istifadə edə bilərsiniz.
Bu Nokogiri çox oxşar.
Bu bir neçə xüsusiyyətləri vardır.
Siz HTML tag tapa bilərsiniz və sonra hərəkət və ya yan hərəkət.
>> PyQt var.
Bu, həqiqətən, dinamik əngəl ola bilər sites, bu cür çünki
olmaq iddia edən bir WebKit deyil faktiki olaraq bir browser
bir browser olan.
Belə ki, bütün gözləmək olardı JavaScript sonra ilk yük, və
getmək və cəhd və site qaşımaq.
>> Siz Ruby ilə qalmaq istəyirsinizsə, Nokogiri bir səviyyədə getmək olar.
Siz Capybara istifadə edə bilərsiniz bir Poltergeist banderol.
Bu həqiqətən bilərsiniz mahiyyətcə eyni şey
PyQt kimi olan bir WebKit edir.
Bu gözləyir JavaScript ilk yüklemek üçün.
Əgər kifayət qədər onunla ətrafında skripka varsa, Siz hətta şeyi basın əldə edə bilərsiniz.
>> Bir link var, əgər Belə ki, klassik href olduğu deyil
yol asan və Bu algılar bir JavaScript şey
bir klik, həqiqətən bunu edə bilərsiniz.
daha məşhur kitabxana bir istifadəçi simülasyonu üçün
PhantomJS JavaScript edir.
Bu açıq-aydın dinamik əngəl ola bilər sites bu mahiyyətcə çünki
Chrome olmaq iddiasında istifadəçi interfeysi olmadan.
>> Və sonra, əlbəttə ən Sağlam, lakin yavaş seçimi
bir Selenium browser avtomatlaşdırılması deyil.
Və təəssüf ki, olmaq fikrində deyilik
Sizin CS50 IDE ərzində bunu edə.
Mahiyyətcə nə çünki ki, Sizin Chrome up çəkmələr
Firefox, nə browser istifadə etmək istəyirəm ki,
və siçan bəlkə izler siz yazın nə hərəkət,
və yalnız sort Bu prosesi avtomatik.
Belə ki, bir növ kimi inkişaf etmişdir veb avtomatlaşdırılması test vasitədir.
Lakin bir çox insanlar istifadə Web qaşımaq üçün selenium
onlar başqa bir var ki, Çətinlik çox qaşınma
bu digər, daha sürətli alətləri bəzi.
>> Belə ki, mən web qaşımaq üçün var bütün var.
Əylənin.
>> Auditoriya: Sual.
>> ROBERT KRABEK: Bəli.
>> Auditoriya: hash bir mexanizm varmı web site belə əsasən bilər
sonra keçir.
ROBERT KRABEK: Bəli.
Belə ki, biz qoymaq bizim Məsələn, onların hər ikisi üçün,
biz doc daxil bütün web qoymaq.
Və belə ki, həqiqətən, yalnız bilər dəyişən doc bir fayl yazmaq və.
Mən istəyirdi Belə ki, mən bilər HTML faylı olaraq onu yazmaq,
və istifadə sonra əvəzinə OpenURI və cURL tələbi
sonra mən yalnız doc aça bilər HTML və sonra üçün axtarış.
>> Auditoriya: Amma qorumaq bilər online təcrübə sort
Siz offline isə.
Misal üçün. zaman etdiyiniz bir neçə saat uçan,
Mən əsasən arxiv istəyirəm bütün haqqinda. [Işitilemez]
>> ROBERT KRABEK: Bəli, ki exactly-- var belə sözün nə bu
hər şeyi alaraq ki, bu URL olardı.
Biz Curl qaçdı Belə ki, bu Bu HTML bütün alaraq,
və onu saxlanılması var dəyişən doc daxilində.
Beləliklə siz edə bilərsiniz nə Siz doc ilə etmək istəyirəm.
Siz bir fayl çıxış ola bilər.
Auditoriya: Amma bu qədər bağlı deyil.
Bu dinamik deyil.
Bu doğru deyil, recursive var?
Mən demək nə görmək?
Mən əsasən sort bir hash çalışıram Mənim sabit bütün veb
mən əsasən bunu edə bilər ki, internet olmadan bir neçə saat.
>> ROBERT KRABEK: Sağ.
Mən had-- Belə ki, əgər belə mənim fayl I / O var?
Belə ki, bu fayl I / O. Belə ki, əvəzinə demək Bu, mən bu craigslist.html çağırırıq.
Hesab edirəm ki, açmaq ediyorum.
Mən onu qoyur doc ediyorum.
Mən fayl bağlayın.
Və sonra yalnız çünki CS50 IDE ki, bulud nə var edir.
Mən burada edə bilərsiniz.
Mən fayl yükləyə bilərsiniz.
Və sonra mənim sabit olacaq.
Belə ki, yol edə bilərsiniz.
Evdə etdiyiniz və ya, istifadə CS50 IDE, Sublime ya bir şey kimi,
Bu, çünki, daha asandır Bu, yerli bütün mövcud deyil
internet bağlı deyil.
>> Auditoriya: Mən görürəm.
Bu müəyyən bir problem üçün.
Ki, recursively bunu edə bilərsiniz bir neçə qat dərin cür şey getmək?
>> ROBERT KRABEK: I qovluq yükləyə bilərsiniz ki, sanki yaxşı, xahiş edirik nə.
Auditoriya: Bəli.
>> ROBERT KRABEK: Cool.