1 00:00:00,000 --> 00:00:03,234 >> [Muusika mängib] 2 00:00:03,234 --> 00:00:05,275 3 00:00:05,275 --> 00:00:06,400 ROBERT KRABEK: Tere, kutid. 4 00:00:06,400 --> 00:00:09,980 Minu nimi on Robert Krabek ja Ma õpetamise te poisid 5 00:00:09,980 --> 00:00:15,470 kuidas kraapida veebis Nokogiri, mis on Ruby raamatukogu 6 00:00:15,470 --> 00:00:17,566 ja Kimono, mis on Chrome'i laiendus. 7 00:00:17,566 --> 00:00:20,940 8 00:00:20,940 --> 00:00:25,010 >> Nii et kõigepealt seal on paar asja, mida sa 9 00:00:25,010 --> 00:00:28,790 mida teha, kui äkki olete olnud teeme kõik psets seni 10 00:00:28,790 --> 00:00:31,170 ja oma tööruumi on saada natuke täis. 11 00:00:31,170 --> 00:00:37,060 Me võime tegelikult lihtsalt minna ja luua uus tööruumi teile 12 00:00:37,060 --> 00:00:41,220 lihtsalt teha täiesti uus projekt. 13 00:00:41,220 --> 00:00:46,160 Nii et kui sa tahad jätkata töötab CS50 malli ID 14 00:00:46,160 --> 00:00:49,080 kui sul hetkel on, julgelt ja saad lihtsalt 15 00:00:49,080 --> 00:00:54,700 paigaldada Nokogiri koos CFLAGS equals-- gem paigaldada nokogiri. 16 00:00:54,700 --> 00:00:56,930 Aga muidu ma näitan sulle kuidas seada uue üles. 17 00:00:56,930 --> 00:01:01,210 Ja siis see on sisuliselt kukutades rohkem abirattad. 18 00:01:01,210 --> 00:01:07,120 Ja sa kodeerimine nagu oleksite lihtsalt kodeerimist Sublime või midagi. 19 00:01:07,120 --> 00:01:12,365 Nii et kui me minema selle üle. 20 00:01:12,365 --> 00:01:14,930 21 00:01:14,930 --> 00:01:18,690 >> Nii öelda on teie praegune CS 50 ID. 22 00:01:18,690 --> 00:01:21,490 Sa võid minna Cloud9 siin. 23 00:01:21,490 --> 00:01:22,725 Võite minna oma armatuurlauale. 24 00:01:22,725 --> 00:01:26,720 25 00:01:26,720 --> 00:01:29,950 Tuleb tuua tööruumid tab. 26 00:01:29,950 --> 00:01:32,980 Ja siis võite klõpsata Siin Loo uus tööruum. 27 00:01:32,980 --> 00:01:37,600 Pane uus tööruumi, võibolla test, või pühkimist. 28 00:01:37,600 --> 00:01:42,700 Ja seejärel klõpsake selle custom tab siin asemel CS50 malle tab. 29 00:01:42,700 --> 00:01:45,155 Ja siis saate lihtsalt minna ja luua uusi tööruumi. 30 00:01:45,155 --> 00:01:48,280 >> Olen juba loodud tööruumi siin. 31 00:01:48,280 --> 00:01:50,640 Nii me töötame selle. 32 00:01:50,640 --> 00:01:55,380 Ja kui oled loonud uue tööala, et Custom tab, 33 00:01:55,380 --> 00:02:04,560 võid trükkida gem paigaldada nokogiri, mis ei kavatse siin. 34 00:02:04,560 --> 00:02:06,230 OK, see on natuke külmunud. 35 00:02:06,230 --> 00:02:08,979 Aga sa võid kirjutada gem paigaldada nokogiri. 36 00:02:08,979 --> 00:02:15,970 Ja see peaks olema kõik, mis seal on paigaldus. 37 00:02:15,970 --> 00:02:20,590 >> Nagu ma enne ütlesin, kui sa oled ikka töötab oma CS50 malli ID, 38 00:02:20,590 --> 00:02:30,270 sa lihtsalt pead sisestama CFLAGS võrdub gem paigaldada nokogiri. 39 00:02:30,270 --> 00:02:33,130 Ja ma olen juba paigaldatud see siin nii et ma ei tee seda. 40 00:02:33,130 --> 00:02:38,500 Aga neile järgmised mööda, võid vabalt teha. 41 00:02:38,500 --> 00:02:46,000 >> Nii et kui sul on oma Nokogiri tööruumi või paigaldatud teegi, 42 00:02:46,000 --> 00:02:49,500 Ma annan sulle natuke crash kursuse Ruby süntaks 43 00:02:49,500 --> 00:02:53,380 sest Nokogiri on Ruby raamatukogu. 44 00:02:53,380 --> 00:03:03,710 Nii et sa pead teadma mõned põhilised Ruby süntaks töötavad Nokogiri. 45 00:03:03,710 --> 00:03:08,750 Nii mõned põhilised erinevused mida sa oled harjunud 46 00:03:08,750 --> 00:03:13,370 Ehk siis, kui olete töötanud Seni vaid C ja PHP, 47 00:03:13,370 --> 00:03:16,010 Te deklareerite muutujaid ei tüübist. 48 00:03:16,010 --> 00:03:19,720 Sa ei kasuta semikoolonid mis on selline kergendus. 49 00:03:19,720 --> 00:03:25,480 Pole Sulgudes on nüüd ümber poolt või samas silmuseid, näiteks. 50 00:03:25,480 --> 00:03:29,460 Sa pead lihtsalt ploki koodi ja siis paned lõppu lõpus, et. 51 00:03:29,460 --> 00:03:32,380 Pole pluss pluss miinus miinus, nii lihtsalt 52 00:03:32,380 --> 00:03:36,180 tean, et kui sa oled teinud juba silmad, 53 00:03:36,180 --> 00:03:38,620 lihtsalt pluss võrdsete ja miinus võrdub. 54 00:03:38,620 --> 00:03:43,310 Ja selle asemel, hash hulka, Teil on vaja kasutatava ja seejärel 55 00:03:43,310 --> 00:03:47,755 mida iganes raamatukogu üritab laadida oma programmi. 56 00:03:47,755 --> 00:03:51,610 57 00:03:51,610 --> 00:03:53,430 >> Ruby ei ole koostatud keeles. 58 00:03:53,430 --> 00:03:55,550 Nii et on veel leevendust. 59 00:03:55,550 --> 00:03:59,350 See on rohkem sarnane PHP kus see on tõlgendatud keeles. 60 00:03:59,350 --> 00:04:03,570 Võite kasutada mistahes Ruby skripti sa kirjutada Ruby järgneb 61 00:04:03,570 --> 00:04:07,380 poolt skripti nimi või programm. 62 00:04:07,380 --> 00:04:13,000 Et tähenda, et see on Ruby programmi sa lihtsalt lõpuks seda .rb asemel .c. 63 00:04:13,000 --> 00:04:17,440 Ja seal on muutuv suurusega massiive Ruby, 64 00:04:17,440 --> 00:04:23,200 mis on super mugav, kui sa oled kraapides ja võib-olla tahad lisada 65 00:04:23,200 --> 00:04:26,090 andmed, et olete kraabiti massiivi. 66 00:04:26,090 --> 00:04:31,960 Sa ei pea malloc uue massiivi ja kopeerida vana massiivi uude massiivi. 67 00:04:31,960 --> 00:04:36,150 Sa võid lisada koos Kahe noolega märke. 68 00:04:36,150 --> 00:04:39,820 Ja ei ole tähemärki olemas lihtsalt ühe kirja stringid. 69 00:04:39,820 --> 00:04:44,760 Nii et peaks olema veidi lihtsam. 70 00:04:44,760 --> 00:04:50,130 >> Nii me lihtsalt anda teile mõned näited mõned põhilised Ruby süntaks. 71 00:04:50,130 --> 00:04:57,100 Nii et siin on näha, et selle asemel, et kaldkriipsuga kaldkriipsuga kommenteerida Ruby, 72 00:04:57,100 --> 00:04:58,740 sa lihtsalt kasutada naelamärk. 73 00:04:58,740 --> 00:05:04,990 Ja muutuja deklaratsiooni, siis kirjuta muutuja võrdsete 74 00:05:04,990 --> 00:05:07,971 mida iganes soovid muutuja olema. 75 00:05:07,971 --> 00:05:09,220 Nad võivad olla stringid. 76 00:05:09,220 --> 00:05:14,120 Sul võib olla massiiv, mis sa asustada väärtusi. 77 00:05:14,120 --> 00:05:17,240 paneb ja pildid on sarnased. 78 00:05:17,240 --> 00:05:20,110 Meie eesmärgil Ainus erinevus on see tõesti 79 00:05:20,110 --> 00:05:25,500 mis paneb, mis tähistab paneb lihtsalt paneb uue liini 80 00:05:25,500 --> 00:05:27,440 märgi iganes sa oled printimise. 81 00:05:27,440 --> 00:05:30,980 >> Nii et kui me anname väikese tutvustamise siin 82 00:05:30,980 --> 00:05:41,800 saame teha selle with-- avada uus terminal. 83 00:05:41,800 --> 00:05:46,020 Näete kõik need failid, mis on minu terminal. 84 00:05:46,020 --> 00:05:50,960 Ja kui ma lihtsalt joosta Ruby, Ruby intro.rb, siis 85 00:05:50,960 --> 00:05:53,530 paneb välja viis Tere Ema, Quincy, Carrier. 86 00:05:53,530 --> 00:05:54,410 Adams. 87 00:05:54,410 --> 00:05:59,295 Nii et kõik on deklareerimisele massiivid. 88 00:05:59,295 --> 00:06:01,670 Sihtrühm: Robert, sa saad teha Teie kirjas vähe suurem? 89 00:06:01,670 --> 00:06:02,461 ROBERT KRABEK: Jah. 90 00:06:02,461 --> 00:06:05,370 91 00:06:05,370 --> 00:06:12,280 Ja ma ei saa suurendada, sest sa ei saa suumida terminal fonte ilmselt. 92 00:06:12,280 --> 00:06:18,790 93 00:06:18,790 --> 00:06:24,630 >> Nii see on, kuidas sa printida muutujad oma terminal. 94 00:06:24,630 --> 00:06:28,820 Võite kasutada ka muutujad sees string. 95 00:06:28,820 --> 00:06:33,720 Nii hiljuti PHP, võite õppinud 96 00:06:33,720 --> 00:06:37,340 et on string interpolatsiooni. 97 00:06:37,340 --> 00:06:43,830 Nii et kui te võtate pilk siin, kui ma Kinnitan kolme muutuja nimi, raamatukogu, 98 00:06:43,830 --> 00:06:49,700 ja keel, ja ma paneb, ma kirjutada string, hello my name is. 99 00:06:49,700 --> 00:06:54,190 Ja siis selle asemel, et PHP versiooni string interpolatsiooni 100 00:06:54,190 --> 00:06:58,960 mis näeb välja veidi nagu see, teil on naelamärk ja seejärel 101 00:06:58,960 --> 00:07:01,220 lokkis traksidega, ja seejärel nimi muutuv. 102 00:07:01,220 --> 00:07:07,350 Ja see, kuidas soovite printida, ütleme, sõltumata muutuja nimi on. 103 00:07:07,350 --> 00:07:10,140 >> Ja siis saate ka concatenate stringid. 104 00:07:10,140 --> 00:07:12,890 Ruby teeb super lihtne plussmärgiga. 105 00:07:12,890 --> 00:07:16,110 Sa pead lihtsalt üks string vasakul pluss muutuva 106 00:07:16,110 --> 00:07:18,860 või teise string pluss string. 107 00:07:18,860 --> 00:07:23,500 Nii et kui ma printida välja, see peaks lihtsalt öelda, Tere, minu nimi on Robert. 108 00:07:23,500 --> 00:07:27,340 Ma õpetamise te nokogiri Ruby. 109 00:07:27,340 --> 00:07:35,370 >> Ja olgem lihtsalt kinnitavad, et see on tõepoolest case-- ruby ​​intro. 110 00:07:35,370 --> 00:07:36,480 Tere, minu nimi on Robert. 111 00:07:36,480 --> 00:07:40,160 Ma õpetamise te nokogiri Ruby. 112 00:07:40,160 --> 00:07:45,600 >> Liikumine, kui muud avaldused, see on natuke erinev 113 00:07:45,600 --> 00:07:49,800 mida sa võiksid kasutada Kui olete töötanud C. 114 00:07:49,800 --> 00:07:53,200 Sa ei pea sulgudes. 115 00:07:53,200 --> 00:07:55,220 Sa ei pea lokkis traksid. 116 00:07:55,220 --> 00:08:00,170 Ja selle asemel, et mujal kui see on liitsõnumite elsif. 117 00:08:00,170 --> 00:08:07,260 Nii siin, kui ma olen kuulutanud x up Siin, nagu näeme, x on veel 5. 118 00:08:07,260 --> 00:08:11,100 Nii et kui x on väiksem kui 3, siis panen väike. 119 00:08:11,100 --> 00:08:14,030 Kui see on väiksem kui 7, keskmise, teine ​​suur. 120 00:08:14,030 --> 00:08:17,340 Nii 5 on keskmise arvu. 121 00:08:17,340 --> 00:08:22,270 Ja ma lõpetan selle ploki kood lõpus. 122 00:08:22,270 --> 00:08:24,920 >> Siin on minu jaoks silmus. 123 00:08:24,920 --> 00:08:28,240 Ja see süntaks on ka veidi erinev. 124 00:08:28,240 --> 00:08:33,500 0 kuni viie vaid sisuliselt on tunnistamise massiive 0-5. 125 00:08:33,500 --> 00:08:36,120 Nii et viis teenindusaega massiivi. 126 00:08:36,120 --> 00:08:40,500 Ja siis iga pesa, et massiiv, mul on incrementing i. 127 00:08:40,500 --> 00:08:46,080 Nii peaks see printida 0-5 või 0-4. 128 00:08:46,080 --> 00:08:49,630 Ja see peaks ajalehtedest. 129 00:08:49,630 --> 00:08:51,370 >> Ja ma lihtsalt Blaze. 130 00:08:51,370 --> 00:08:54,466 Te ei ole juurdepääsu Selle koodi hiljem. 131 00:08:54,466 --> 00:08:55,965 Nii saate ikka käivitada ise. 132 00:08:55,965 --> 00:09:02,090 133 00:09:02,090 --> 00:09:06,620 >> Nii et see on teie põhilised samas loop. 134 00:09:06,620 --> 00:09:12,230 See oleks lihtsalt printimisel j, incrementing 1 kuni me tabas 5. 135 00:09:12,230 --> 00:09:18,320 >> Super kiire Ruby kiirkursuse kuidas kirjutada funktsiooni. 136 00:09:18,320 --> 00:09:24,460 Selle asemel, et öelda, int faktoriaali number on olemas vaid def. 137 00:09:24,460 --> 00:09:28,450 Ja sisuliselt sa oled määratleva funktsiooni siin. 138 00:09:28,450 --> 00:09:30,600 See saab olla funktsiooni nimi, 139 00:09:30,600 --> 00:09:34,280 ja see on igal muutujaid tahan lähevad funktsiooni. 140 00:09:34,280 --> 00:09:36,760 Sul võib olla kui avaldused jooksul. 141 00:09:36,760 --> 00:09:38,030 Võite tagastada. 142 00:09:38,030 --> 00:09:42,620 Sel juhul me määratledes rekursiivselt 143 00:09:42,620 --> 00:09:45,000 rakendatakse faktoriaali funktsiooni. 144 00:09:45,000 --> 00:09:48,660 Nii et me lihtsalt helistada funktsioonid Ruby niimoodi. 145 00:09:48,660 --> 00:09:54,700 >> Nii et kui ma olen määratletud, ma võib helistada faktoriaali, sündis 3, 146 00:09:54,700 --> 00:09:59,700 ja siis 3 on mitmeid muutuva et ma saan kasutada piires funktsiooni. 147 00:09:59,700 --> 00:10:08,010 Ja see to_s on lihtsalt keerates tagasi väärtust faktoriaali string. 148 00:10:08,010 --> 00:10:10,760 Muidu viska error ütleb oh, ma 149 00:10:10,760 --> 00:10:13,230 ei saa printida string-- sest kui see teile meenub, 150 00:10:13,230 --> 00:10:18,230 paneb pannakse string-- sest see faktoriaali on tagastanud number. 151 00:10:18,230 --> 00:10:21,850 Nii saame me muuta, et string nagu selline. 152 00:10:21,850 --> 00:10:27,856 Ja vastupidi, võid ka teisendada stringi täisarv to_i. 153 00:10:27,856 --> 00:10:32,650 >> Nii tehes kõike super lihtne, kui ma just välja kommenteerida, salvestada 154 00:10:32,650 --> 00:10:36,250 ja joosta faktoriaali funktsiooni. 155 00:10:36,250 --> 00:10:39,850 Me peaksime suutma näha et faktoriaali 3 on 6. 156 00:10:39,850 --> 00:10:42,790 Ja see on tõsi. 157 00:10:42,790 --> 00:10:46,160 >> Nii et teie kiirkursuse Ruby. 158 00:10:46,160 --> 00:10:53,550 Ja nüüd sa tead, Ruby, saame minna põhi Nokogiri kraapides luua. 159 00:10:53,550 --> 00:10:58,190 Sisuliselt kõik mida sa pead tegema, on, Ruby nõuda raamatukogud. 160 00:10:58,190 --> 00:11:04,390 Ja meie eesmärkidel saadame abil raamatukogu OpenURI samuti Nokogiri. 161 00:11:04,390 --> 00:11:07,870 Ja siis, mida sa do-- ja tulen teile süntaks see-- 162 00:11:07,870 --> 00:11:16,010 on avate URL palju kui te oleks lokkima taotluse, mis tähistab C URL. 163 00:11:16,010 --> 00:11:20,330 >> Nii te võtate URL Veebilehe küsimus. 164 00:11:20,330 --> 00:11:22,030 Sa hoia teda muutuja. 165 00:11:22,030 --> 00:11:27,400 Ja siis saab otsida selle kaudu muutuja unikaalne HTML kasutades 166 00:11:27,400 --> 00:11:30,590 CSS käsk. 167 00:11:30,590 --> 00:11:34,360 Ja siis võid väljundi sisu kuhu tahad. 168 00:11:34,360 --> 00:11:35,720 Te võite alustada andmebaasis. 169 00:11:35,720 --> 00:11:42,040 Võite väljundi faili, või isegi lihtsalt printida ekraanil. 170 00:11:42,040 --> 00:11:47,290 >> Nii et me näitame teile põhilised skreeperit. 171 00:11:47,290 --> 00:11:52,570 Nii siin näed meil nõuab nokogiri, nõuavad avatud uri. 172 00:11:52,570 --> 00:11:57,150 Teie põhi loodud, olgem nimetame seda dokumenti või doc, 173 00:11:57,150 --> 00:12:07,780 võrdub Nokogiri :: HTML avatud, mis on käsk anda meile OpenURI 174 00:12:07,780 --> 00:12:08,920 raamatukogu. 175 00:12:08,920 --> 00:12:14,000 Ja me otsima, neile Teile, kes võiks olla elavad quad, 176 00:12:14,000 --> 00:12:21,270 jalgratastega, mis on Boston loetletud Boston Craigslistissa bike osa 177 00:12:21,270 --> 00:12:22,020 site. 178 00:12:22,020 --> 00:12:26,460 >> Nii et kui te ei tunne Curl, ma lihtsalt 179 00:12:26,460 --> 00:12:28,930 näitan sulle reaalne kiire mida cURL teevad. 180 00:12:28,930 --> 00:12:38,350 Kui ma tahtsin saada kõik URL Craigslistissa kohas, kui ma tüüpi Curl 181 00:12:38,350 --> 00:12:44,950 see lihtsalt puistab kõik URL alates Craigslistissa jalgratta site 182 00:12:44,950 --> 00:12:46,720 peale minu terminal. 183 00:12:46,720 --> 00:12:49,130 See ei ole eriti kasulik, sest ma ei ole 184 00:12:49,130 --> 00:12:53,330 tahad käsitsi läbida ja leida asi, mida ma otsin. 185 00:12:53,330 --> 00:13:01,590 Aga just nii saab näha, et ma olen tegelikult 186 00:13:01,590 --> 00:13:13,966 kasutades õige koodi, kui te vaatate kell URL Craigslistissa bikes-- 187 00:13:13,966 --> 00:13:17,460 mingil põhjusel see ei ole leitud. 188 00:13:17,460 --> 00:13:20,340 Kui te vaatate seda lehte ja te vaatate URL, 189 00:13:20,340 --> 00:13:23,970 see peaks olema identne cURL taotluse, et ma lihtsalt saata. 190 00:13:23,970 --> 00:13:27,700 Ja tõepoolest, see on, mida kuramuse salvestatud doc muutuja. 191 00:13:27,700 --> 00:13:36,540 >> Nii et kui sa lähed tagasi meie koodiga hoiame Seejärel saab tegutseda selle doc muutuja 192 00:13:36,540 --> 00:13:40,660 abil CSS. 193 00:13:40,660 --> 00:13:49,240 Nii öelda tahtsin saada kõik sildid, mis on span.txt, 194 00:13:49,240 --> 00:13:51,740 ja kõik a siltide mis tag. 195 00:13:51,740 --> 00:13:56,150 Ja miks võiks me tahame Selleks, kuulen sind nutma? 196 00:13:56,150 --> 00:14:02,920 >> Kui me Kontrollige Element, see annab sulle jaotus kuidas URL on üles ehitatud. 197 00:14:02,920 --> 00:14:06,200 Kui ma kerige läbi Siin näed 198 00:14:06,200 --> 00:14:08,770 mida kõik need erinevad elemendid esindab. 199 00:14:08,770 --> 00:14:13,410 Ehk ma tahan juurde see konkreetne element. 200 00:14:13,410 --> 00:14:16,820 Nii ma kasutan Chrome arendaja tööriistad kontrollida Element. 201 00:14:16,820 --> 00:14:22,970 Ma näen siin, et seda on silt sees span 202 00:14:22,970 --> 00:14:26,230 Tag klassi txt. 203 00:14:26,230 --> 00:14:29,610 >> Nii et see jõuab meie Esimene operatsioon, mis 204 00:14:29,610 --> 00:14:37,330 on doc.css span, mis on tag et Otsin jooksul kõik selle URL. 205 00:14:37,330 --> 00:14:43,650 Ja siis txt tegutseb palju nagu CSS teeb, kui sa oled lihtsalt kirjalikult CSS 206 00:14:43,650 --> 00:14:49,630 HTML faile täpsustades klassi. 207 00:14:49,630 --> 00:14:57,980 Nii et see eriti operaator määrata span silt klassi txt. 208 00:14:57,980 --> 00:15:02,800 Ja siis, kui ma jätan ruumi, see on siis minna sees, et tag 209 00:15:02,800 --> 00:15:05,170 ja siis leida sildi selles. 210 00:15:05,170 --> 00:15:10,750 >> Nii et kui ma lihtsalt panna see terminali, ma peaks 211 00:15:10,750 --> 00:15:21,630 võimalik näha sisuliselt kõike mis on selle ajavahemiku klassi txt. 212 00:15:21,630 --> 00:15:22,890 Nii anname et minna. 213 00:15:22,890 --> 00:15:25,870 214 00:15:25,870 --> 00:15:27,756 ruby craigslist-skreeperit. 215 00:15:27,756 --> 00:15:31,850 216 00:15:31,850 --> 00:15:37,250 Ja tõepoolest, mis annab meile kõik need sildid erinevate nimekirjad, mis 217 00:15:37,250 --> 00:15:40,400 on Craigslistissa lehel. 218 00:15:40,400 --> 00:15:45,670 >> Nii et kui me läheme tagasi, saame muuta see midagi natuke rohkem kasu. 219 00:15:45,670 --> 00:15:51,050 Võib-olla me tahame lihtsalt linke. 220 00:15:51,050 --> 00:15:58,790 Kuna selle sildi, ma ka on hyper tee 221 00:15:58,790 --> 00:16:00,590 et see leht läheb. 222 00:16:00,590 --> 00:16:09,100 Nii et kui te vaatate seda koodi siin, mida ma teen on selle asemel CSS, 223 00:16:09,100 --> 00:16:12,380 Ma ei saa minna at_css. 224 00:16:12,380 --> 00:16:16,820 Ja see lihtsalt saada esimene osa kõik need asjad. 225 00:16:16,820 --> 00:16:20,890 Nii kui ma seda üles koodi ma lihtsalt varem näidanud, 226 00:16:20,890 --> 00:16:23,800 asemel tagasi kõik Selle, see oleks lihtsalt 227 00:16:23,800 --> 00:16:26,850 tagasi esimese üks nendest. 228 00:16:26,850 --> 00:16:31,310 Nii et kuidas at_css operaator töötab. 229 00:16:31,310 --> 00:16:39,460 >> Nii et me tahame säilitada path kõik esimesed silt. 230 00:16:39,460 --> 00:16:47,430 Ja kuna annab meile a-- nii et me oleme ikka veel kasutada CSS. 231 00:16:47,430 --> 00:16:53,830 Aga kuna see on annan meid tagasi kogu massiivi silte 232 00:16:53,830 --> 00:16:55,710 me juurdepääsu esimene element. 233 00:16:55,710 --> 00:17:01,700 Nii et see on üks viis, et saate juurdepääsu mingit erilist elementi, kui teil 234 00:17:01,700 --> 00:17:04,810 on massiivi elemendid tagastatud, 235 00:17:04,810 --> 00:17:11,930 sest saab ravida midagi, mis CSS naaseb massiivi sisuliselt. 236 00:17:11,930 --> 00:17:16,880 Ja siis me läheme pääseda hüperteksti viide atribuuti. 237 00:17:16,880 --> 00:17:24,810 >> Nii et kui te võtate pilk, kui sa vaatasid tõesti lähedal siin, 238 00:17:24,810 --> 00:17:28,270 kui sa just sisuliselt vaadata URL bar, 239 00:17:28,270 --> 00:17:33,880 see on tee, mis sa lähed tuleb kraapides. 240 00:17:33,880 --> 00:17:41,565 Nii et kui me lihtsalt käivitada uuesti, ja veenduge, et oleme salvestanud. 241 00:17:41,565 --> 00:17:47,040 242 00:17:47,040 --> 00:17:48,300 Te saate vaadata kodus. 243 00:17:48,300 --> 00:17:51,430 See tegelikult sobib kuni seda linki. 244 00:17:51,430 --> 00:17:55,950 >> Miks võiks me tahame seda kasutada? 245 00:17:55,950 --> 00:17:57,870 Kui soovite kraapima lehekülje ja see on 246 00:17:57,870 --> 00:18:00,270 linkide lehekülje nagu Craigslistissa teeb, siis 247 00:18:00,270 --> 00:18:03,210 Võiksid minna siis igasse neid sidemeid 248 00:18:03,210 --> 00:18:05,120 ja siis kraapima sisu, et mis 249 00:18:05,120 --> 00:18:08,520 on täpselt see, mida me teeme. 250 00:18:08,520 --> 00:18:11,660 >> Nii et kui teil on rada, varieeruv, ma ei ole enam tõesti 251 00:18:11,660 --> 00:18:13,200 hoolivad lasta välja trükkida. 252 00:18:13,200 --> 00:18:15,420 Ma lihtsalt pean seda säilitada muutujana. 253 00:18:15,420 --> 00:18:20,980 Ja siis ma pääseb teise lk samamoodi ma pääsen 254 00:18:20,980 --> 00:18:22,260 doc esimese koha. 255 00:18:22,260 --> 00:18:25,920 Välja arvatud URL, me ei kavatse kasutada string interpolatsiooni 256 00:18:25,920 --> 00:18:29,180 nagu ma olin kirjeldades Ruby varem lisama 257 00:18:29,180 --> 00:18:32,010 tee lõpus root. 258 00:18:32,010 --> 00:18:38,970 >> Mis siis, et see saab teha, on see saab panna teele 259 00:18:38,970 --> 00:18:42,360 et ma kaabitakse varem ja seejärel lülitage see 260 00:18:42,360 --> 00:18:49,580 uude punkti, mida soovite helistada see-- first_listing, näiteks. 261 00:18:49,580 --> 00:18:52,900 Aga ma jätan see kirje nüüd, 262 00:18:52,900 --> 00:18:55,420 sest see on see, mida ma kasutan siin. 263 00:18:55,420 --> 00:19:02,900 >> Nii öelda tahtsin saada kirjeldus esimese postitad Craigslistissa. 264 00:19:02,900 --> 00:19:04,740 Nii et ma läheks siin. 265 00:19:04,740 --> 00:19:10,660 Ma kliki Kontrollige Element jälle sest see on kirjelduses. 266 00:19:10,660 --> 00:19:14,350 Ma tahaks minna siia ja vaata kui ma ei leia kuidas ma võiks 267 00:19:14,350 --> 00:19:16,530 võimalik otsida ainulaadne tag. 268 00:19:16,530 --> 00:19:19,530 Ja sel juhul on tal ID-, mis viib meid 269 00:19:19,530 --> 00:19:26,810 meie kõrval viis otsima sildid, mis on koos hashtag. 270 00:19:26,810 --> 00:19:30,670 >> Nii klassidele, saate kasuta dot operaator. 271 00:19:30,670 --> 00:19:38,610 Nii txt on täpsustades klassi txt, samas kui hash täpsustab ID. 272 00:19:38,610 --> 00:19:43,720 Nii et sel juhul silt on osa ja ID on postingbody. 273 00:19:43,720 --> 00:19:47,780 >> Nii see läheb ja leiab first-- sest me oleme 274 00:19:47,780 --> 00:19:51,200 kasutades at_css-- see läheb ja leiab, esimene element, mis 275 00:19:51,200 --> 00:19:57,180 kerkib märksõnaga punkti ja ID postingbody. 276 00:19:57,180 --> 00:20:02,636 Ja siis pääsete teksti element Selle eseme tagastada .text. 277 00:20:02,636 --> 00:20:06,230 Ja siis me saame salvestada et kirjelduses. 278 00:20:06,230 --> 00:20:09,370 >> Nüüd, et meil on muutuja kirjeldus, 279 00:20:09,370 --> 00:20:14,850 võiksime teha, ütleme, faili I / O. Nii faili I / O Ruby 280 00:20:14,850 --> 00:20:21,310 on väga sarnane faili I / O C, kus me avada faili. 281 00:20:21,310 --> 00:20:23,260 Me võime kirjutada seda. 282 00:20:23,260 --> 00:20:25,060 Ja siis me sulgeda, et fail. 283 00:20:25,060 --> 00:20:29,660 >> Nii et siin, me lihtsalt nimetades faili, mõned suvalise muutuja. 284 00:20:29,660 --> 00:20:33,120 Me oleks võinud ka lihtsalt panna see siin. 285 00:20:33,120 --> 00:20:39,630 Meil on muutuja, mis me salvestamiseks Avatud faili nagu File.open. 286 00:20:39,630 --> 00:20:46,370 Ja me kirjutame seda pilti, nii me seda avada koos w operaator. 287 00:20:46,370 --> 00:20:54,280 Ja siis me paneme string sisse esitada koos .puts operaator. 288 00:20:54,280 --> 00:20:58,310 Ja siis me paneme muutuja, mida me tahan kirjutada faili selles. 289 00:20:58,310 --> 00:21:00,200 Ja siis me lihtsalt sulgeda fail. 290 00:21:00,200 --> 00:21:04,000 >> Nii et kui me minna ja käivitada, see peaks koostama dokumendi, 291 00:21:04,000 --> 00:21:10,840 koos description.txt mis on see kirjeldus sees. 292 00:21:10,840 --> 00:21:14,015 Nii et kui ma saan see-- ole. 293 00:21:14,015 --> 00:21:17,520 294 00:21:17,520 --> 00:21:23,330 See on toodetud tekstifail, loodetavasti sama asi. 295 00:21:23,330 --> 00:21:25,850 296 00:21:25,850 --> 00:21:33,290 Nii oleks võinud olla uue postitamist mis on tulla, kui ma olen rääkinud. 297 00:21:33,290 --> 00:21:36,580 Ja tõepoolest tundub, et on olnud. 298 00:21:36,580 --> 00:21:43,380 Nii et kui me läheme see klassikaline bike, 1962-1966, mis tundub, et sobitada. 299 00:21:43,380 --> 00:21:45,620 Ja seal, kuhu lähed. 300 00:21:45,620 --> 00:21:51,250 >> Nii et kõige elementaarsem funktsionaalsust pühkimist. 301 00:21:51,250 --> 00:21:57,510 Me oleks võinud selle asemel lihtsalt kirjutan seda pilti, 302 00:21:57,510 --> 00:21:59,930 lisame asju massiivi. 303 00:21:59,930 --> 00:22:03,770 Nii et kui ma kuulutada kolm massiivid, pealkiri, hind ja kirjeldus. 304 00:22:03,770 --> 00:22:06,310 305 00:22:06,310 --> 00:22:13,790 Ja me tegutsevad doc kirje nüüd. 306 00:22:13,790 --> 00:22:16,940 Me ei lähe läbi ja leida kõik span.txt. 307 00:22:16,940 --> 00:22:21,710 Ja pidage meeles, see tagastab massiivi kõik esemed, mis ta teeb. 308 00:22:21,710 --> 00:22:27,300 Ja siis Ruby, võid lihtsalt kasutada .Iga itereerima läbi iga kirje 309 00:22:27,300 --> 00:22:28,410 massiivi. 310 00:22:28,410 --> 00:22:31,330 Ja siis iga objekti Ma lihtsalt seda kutsuda 311 00:22:31,330 --> 00:22:34,620 link, sest see on sisuliselt, mis see on. 312 00:22:34,620 --> 00:22:46,830 >> Nii et kui ma panen iga link.css dot a.hdrlnk, see on tegelikult läheb link 313 00:22:46,830 --> 00:22:58,280 ja leides jooksul, mis viitavad teise HTML element ja vastava klassi. 314 00:22:58,280 --> 00:23:04,990 Nii et kui me mäletame, mis see oli, siis span.txt, 315 00:23:04,990 --> 00:23:13,160 võite KATKENDLIK lubage mul tagasi minna tõeline quick-- jooksul span.txt 316 00:23:13,160 --> 00:23:17,490 meil on palju teisi klasse. 317 00:23:17,490 --> 00:23:27,180 Nii sees span.txt, ootame jaoks silt, millel on klassi hdrlnk. 318 00:23:27,180 --> 00:23:29,890 Lubage mul leiavad, et kutid reaalne kiire. 319 00:23:29,890 --> 00:23:37,390 320 00:23:37,390 --> 00:23:42,850 >> Nii et näete, siin on see silt see on sees span class txt 321 00:23:42,850 --> 00:23:44,920 mis on klassi hdrlnk. 322 00:23:44,920 --> 00:23:47,610 Ja see on tõesti see, mida me üritame saada. 323 00:23:47,610 --> 00:23:54,680 >> Nii et me nüüd püüame hoida kõik neid sidemeid sees tiitli. 324 00:23:54,680 --> 00:23:59,545 Ja siis me läheme printida välja kõik need lingid. 325 00:23:59,545 --> 00:24:00,360 Ei vabandust. 326 00:24:00,360 --> 00:24:04,530 Me läheme välja printida hind kõigi nimetatud. 327 00:24:04,530 --> 00:24:09,350 Nii saab käivitada tõesti Kiire ja vaata mida ta teeb. 328 00:24:09,350 --> 00:24:14,680 329 00:24:14,680 --> 00:24:17,720 >> Nii see lihtsalt põhimõtteliselt läks läbi iga lingid 330 00:24:17,720 --> 00:24:27,310 omakorda ligi sildi küsimus, ja siis välja tõmmata hind. 331 00:24:27,310 --> 00:24:33,910 Ja ta tegi, et kuna pärast teil on kõik pealkirjas, 332 00:24:33,910 --> 00:24:37,260 oleme lihtsalt salvestatud pealkiri seal. 333 00:24:37,260 --> 00:24:40,180 Me oleme lihtsalt salvestatud link jooksul massiivi pealkiri. 334 00:24:40,180 --> 00:24:47,720 Ja seda ahel, kus selle asemel, et minna a.hdrlnk, 335 00:24:47,720 --> 00:24:50,490 me otsime span.price. 336 00:24:50,490 --> 00:24:56,500 Nii et kui ma ei saa lihtsalt tõesti kiiresti leida hind, kui te kontrollida element, 337 00:24:56,500 --> 00:25:00,610 näete, et see on span klassiga hinna. 338 00:25:00,610 --> 00:25:04,670 Ja see on sisuliselt kuidas Saame hind seal. 339 00:25:04,670 --> 00:25:10,040 >> Nii see on tõesti põhilised puhul pühkimist. 340 00:25:10,040 --> 00:25:13,550 See, kuidas sa saad kõik elementide lehel 341 00:25:13,550 --> 00:25:16,510 et, ütleme, sa juba tead URL. 342 00:25:16,510 --> 00:25:21,050 >> Nii et kui me tahame saada veidi rohkem sügavuti, 343 00:25:21,050 --> 00:25:23,950 saame kraapida lehekülgi lehekülge. 344 00:25:23,950 --> 00:25:28,480 Ja see näide, ma olla väljastamiseks, CSV faili. 345 00:25:28,480 --> 00:25:39,510 Nii et ma vajavad csv siin sest Ruby ei, endasse 346 00:25:39,510 --> 00:25:42,350 on funktsionaalsus lihtsalt väljund CSV faile. 347 00:25:42,350 --> 00:25:45,030 Nii et super lihtne. 348 00:25:45,030 --> 00:25:48,710 Lubage mul minna järgmisele. 349 00:25:48,710 --> 00:25:51,640 350 00:25:51,640 --> 00:25:57,170 Me kaetud faili I / O. Nii et see on sarnane sellele, kuidas see on C. 351 00:25:57,170 --> 00:26:00,870 Ja enne kui me liikuda Kimono, Ma lihtsalt näitan sulle tõesti kiire, kui 352 00:26:00,870 --> 00:26:02,790 kraapida asulakohtadest vaatamisväärsusi. 353 00:26:02,790 --> 00:26:10,040 >> Nii et me juba õppinud kuulutada massiivid Ruby. 354 00:26:10,040 --> 00:26:13,280 Nii et ma lihtsalt kuulutab tervest hulgast massiivid 355 00:26:13,280 --> 00:26:16,310 et ma siis andmete salvestamiseks jooksul. 356 00:26:16,310 --> 00:26:20,680 doc töötab samamoodi nagu ta tegi eelmise faili. 357 00:26:20,680 --> 00:26:23,580 Me läheme, leides Iga span.txt s. 358 00:26:23,580 --> 00:26:25,040 Me juba teame seda. 359 00:26:25,040 --> 00:26:32,130 See on mahuti, mille jooksul iga link on kõik andmed, mida me tahame. 360 00:26:32,130 --> 00:26:40,800 >> Nii et siin see, mida me teeme on iga link span class txt, me läheme 361 00:26:40,800 --> 00:26:45,720 ja me leida sildi, leidmisel esimene element seda. 362 00:26:45,720 --> 00:26:49,937 Pea meeles, CSS tagastab massiivi, nii et sa ei saa lihtsalt kasutada seda nagu on. 363 00:26:49,937 --> 00:26:51,520 Me leiame esimene element. 364 00:26:51,520 --> 00:26:56,430 Isegi kui see on massiivi üks objekti, sa pead seda süntaksit, 365 00:26:56,430 --> 00:26:58,800 ja tõmmake href atribuut. 366 00:26:58,800 --> 00:27:01,800 >> Nii et me tegime seda varem. 367 00:27:01,800 --> 00:27:04,440 Nii et see peaks vaatama tuttav. 368 00:27:04,440 --> 00:27:14,330 Ja nii nüüd on meil hulgaliselt nimetatakse teed kõik meie linke 369 00:27:14,330 --> 00:27:16,590 et me tahame seda kasutada. 370 00:27:16,590 --> 00:27:21,350 Nii et kui meil on see massiiv kõik radade et tahame kasutada, 371 00:27:21,350 --> 00:27:26,840 siis saame luua kirje iga nendel lehekülgedel, kui me avame sellel lehel. 372 00:27:26,840 --> 00:27:31,150 Nii nagu me nägime ka edasi süntaks enne, kui see 373 00:27:31,150 --> 00:27:37,450 teeme string interpolatsiooni koos teele siin, nii süntaks on ainult tee. 374 00:27:37,450 --> 00:27:41,450 Ja ma võiksin nimetada seda muutuja suvalise nime. 375 00:27:41,450 --> 00:27:43,070 >> See on oluline. 376 00:27:43,070 --> 00:27:46,650 See on massiiv, et teil olla juurdepääs iga element. 377 00:27:46,650 --> 00:27:52,400 Aga kui sa ütled et tee teed, See tähendab iga element rajad, 378 00:27:52,400 --> 00:27:55,150 nimetame seda teed, ja kasutada seda. 379 00:27:55,150 --> 00:27:59,266 See on sisuliselt nagu siis, kui teha jaoks silmus ja te kasutate int i. 380 00:27:59,266 --> 00:28:04,000 Nii saab ravida tee kui muutuja, mis on mis suureneb. 381 00:28:04,000 --> 00:28:07,820 >> Ja siis kõik need, lähevad kõik need lingid. 382 00:28:07,820 --> 00:28:11,710 Kuna me hoiustamisel punktis lehel nii me luua uue lehekülje iga kord 383 00:28:11,710 --> 00:28:13,330 me seda kasutada. 384 00:28:13,330 --> 00:28:20,560 Ja siis selles uue lehekülje, leida span.postingtitletext, span.price, 385 00:28:20,560 --> 00:28:22,240 ja siis jaotises # postingbody. 386 00:28:22,240 --> 00:28:28,430 Meil on juba kaetud osa # postingbody kui me vaatasime kirjeldus. 387 00:28:28,430 --> 00:28:34,890 >> Nii saame minna näed Craigslistissa posti kui sa oled lihtsalt vaadates pealkirja, 388 00:28:34,890 --> 00:28:38,810 näete siin, span postingtitletext. 389 00:28:38,810 --> 00:28:41,390 Ja see on põhjus, miks see seal. 390 00:28:41,390 --> 00:28:49,120 Ja siis hind, saate kasutada seda koos span class hinna. 391 00:28:49,120 --> 00:28:54,480 >> Nii me ka võib-olla võiks soovite salvestada URL. 392 00:28:54,480 --> 00:28:58,580 Nii me lihtsalt käivitada uuesti, siis hoia seda massiivi, 393 00:28:58,580 --> 00:29:01,150 sest kui te otsite Craigslistissa, sa oled 394 00:29:01,150 --> 00:29:05,290 ilmselt läheb taha viis, kui sa näed midagi, mis sind huvitab, 395 00:29:05,290 --> 00:29:06,620 minna tagasi sellele saidile. 396 00:29:06,620 --> 00:29:10,480 Nii et sa lihtsalt tahad salvestada URL viited huvides. 397 00:29:10,480 --> 00:29:13,840 398 00:29:13,840 --> 00:29:19,630 >> See on lihtsalt sisuliselt teine ​​süntaks silmus. 399 00:29:19,630 --> 00:29:26,360 Ma võiks lihtsalt ei paths.each asemel on ette tee teed koos indeksiga. 400 00:29:26,360 --> 00:29:31,280 Ja see süntaks on Ruby for-- tee on see, mida me tegime siin üleval, 401 00:29:31,280 --> 00:29:33,920 kuulutab muutuja iga kirje. 402 00:29:33,920 --> 00:29:38,540 Ja indeks käitub i in C silmuseid. 403 00:29:38,540 --> 00:29:41,280 Nii saate jälgida mida indeks on. 404 00:29:41,280 --> 00:29:45,200 >> Nii et siin on lihtsalt väike mugav asi 405 00:29:45,200 --> 00:29:46,950 sest kui sa kasutad skreeperit. 406 00:29:46,950 --> 00:29:50,580 Kui oled kraapides sadu lehekülgi, veenduda, et see ei ole rippuvad, 407 00:29:50,580 --> 00:29:53,320 See lihtsalt väljund, Ma pääseda sellele lehele 408 00:29:53,320 --> 00:29:55,960 ning tagada, et see on ikka jätkub. 409 00:29:55,960 --> 00:29:59,250 Aga meie eesmärkidel, sest seal on sada esemed, 410 00:29:59,250 --> 00:30:08,000 Ma lähen pääseda vaid kolm neist nii et me ei otsa aega siin. 411 00:30:08,000 --> 00:30:13,040 >> Aga enne kui me, et ma olen lihtsalt näitan sulle tõesti kiire, 412 00:30:13,040 --> 00:30:16,940 Räägin väljaantav tiitel, hind, kirjeldus ja URL 413 00:30:16,940 --> 00:30:19,600 Iga linke, mis ma olen kraapida. 414 00:30:19,600 --> 00:30:23,720 Ja siis see on lihtsalt süntaks CSV raamatukogu. 415 00:30:23,720 --> 00:30:25,240 Sa avada CSV. 416 00:30:25,240 --> 00:30:27,070 See on see, mida ma nimetan seda. 417 00:30:27,070 --> 00:30:29,430 Avage see kirjutada do. 418 00:30:29,430 --> 00:30:33,830 Ja siis CSV on faili sa oled sisestanud kõike arvesse. 419 00:30:33,830 --> 00:30:37,800 See on lihtsalt terve mõistuse kontroll ma tean, et see töötab. 420 00:30:37,800 --> 00:30:41,240 Ja see on minu mõistuse kontrolli tean, et see on lõpetatud. 421 00:30:41,240 --> 00:30:46,670 Nii et ma panen pealkirja arvesse järjest CSV, hind, url, kirjeldus, 422 00:30:46,670 --> 00:30:49,420 kõik ridadesse CSV. 423 00:30:49,420 --> 00:30:53,410 >> Nii et kui me läheme ja joosta Selle now-- ja ma lihtsalt 424 00:30:53,410 --> 00:31:04,710 veenduge, et olen päästetud see-- asemel lihtsalt väljastab selle terminal, 425 00:31:04,710 --> 00:31:09,750 meil peaks olema CSV faili, mis on toodetud. 426 00:31:09,750 --> 00:31:13,500 Nii et siin me näeme CSV faili, mis on toodetud. 427 00:31:13,500 --> 00:31:19,330 See on väljund Maastik, et ma lihtsalt jooksin. 428 00:31:19,330 --> 00:31:23,030 Nagu näete siin, tutvumise lehele 0, 1, 2, 3. 429 00:31:23,030 --> 00:31:27,400 Need on pealkirjad, hinnad, kirjelduse. 430 00:31:27,400 --> 00:31:31,710 Ja kui me vaatame seda CSV file et me oleme loodud, 431 00:31:31,710 --> 00:31:35,700 näed oma väljastada siin. 432 00:31:35,700 --> 00:31:40,350 See ei ole Excel, nii see ei ole vormindatud ridu ja veerge. 433 00:31:40,350 --> 00:31:45,140 Aga te võite ette kujutada, kuidas see võib olla vormindatud. 434 00:31:45,140 --> 00:31:47,740 >> CSV tähistab komaga eraldatud väärtused. 435 00:31:47,740 --> 00:31:50,090 Nii võite ette kujutada seda võib järjest. 436 00:31:50,090 --> 00:31:54,700 Ja iga komaga oleks näidata eraldi veerus. 437 00:31:54,700 --> 00:32:00,010 Just sõna caution-- Mõnikord sa oled 438 00:32:00,010 --> 00:32:02,260 kraapides asju palju komasid. 439 00:32:02,260 --> 00:32:05,100 Seega, kui olete väljastamiseks, see CSV faili, 440 00:32:05,100 --> 00:32:10,340 see ei pruugi väljund kuidas sa võiksid mõelda. 441 00:32:10,340 --> 00:32:16,770 >> Nii et sisuliselt kõik seal on kraapides HTML 442 00:32:16,770 --> 00:32:20,110 lehekülgi Nokogiri. 443 00:32:20,110 --> 00:32:26,000 >> Nii internetis olemise uuenduslik, kuna on tulnud välja 444 00:32:26,000 --> 00:32:33,220 koos rohkem automatiseeritud ja GUI versiooni, ehkki vähem jõuline 445 00:32:33,220 --> 00:32:35,540 versioon kraapides erinevatel veebilehtedel. 446 00:32:35,540 --> 00:32:39,060 Ja meie eesmärkidel Ma tulen näidates 447 00:32:39,060 --> 00:32:42,920 Chrome laiendus nimega Kimono. 448 00:32:42,920 --> 00:32:46,690 Ja kõik mida sa pead tegema, on teil liikuda lehele, mida soovite kraapida. 449 00:32:46,690 --> 00:32:48,590 Sa klõpsad huvialasid. 450 00:32:48,590 --> 00:32:51,510 Sa kalibreerida väljad sest see automaatselt 451 00:32:51,510 --> 00:32:54,360 tuvastada, mida ta mõtleb sa tahad olla kraapides, 452 00:32:54,360 --> 00:32:56,280 ja siis sa lihtsalt luua API. 453 00:32:56,280 --> 00:33:03,700 >> Nii et kui me olime näidata seda Craigslistissa, siis tegelikult ei tööta. 454 00:33:03,700 --> 00:33:08,290 Ja see on see, mida ma läksin tagasi öelnud see ei ole nii tugev. 455 00:33:08,290 --> 00:33:10,320 See on hädas luua API. 456 00:33:10,320 --> 00:33:13,400 Aga kui meeleavaldus mida see teeks, 457 00:33:13,400 --> 00:33:17,460 Kui installite Chrome'i laiendus, kõik sul on klõpsate seda. 458 00:33:17,460 --> 00:33:21,750 See Kimonofies lehel, ja siis kliki asi, mida sa tahad skripti. 459 00:33:21,750 --> 00:33:24,480 >> Nii et kui ma oleksin klikkima et oleks esile 460 00:33:24,480 --> 00:33:28,130 mida see arvab, et ma tahan olla kraapides sellel lehel. 461 00:33:28,130 --> 00:33:33,660 Ehk ma nimetan seda nimekirjad. 462 00:33:33,660 --> 00:33:36,430 See, kui palju punkte ma valinud. 463 00:33:36,430 --> 00:33:43,810 Ja ma lihtsalt kinnitada ega ümber lükata mõned teiste pakutud nimekirjad 464 00:33:43,810 --> 00:33:49,600 saada see lisada Mis saab kraapida. 465 00:33:49,600 --> 00:33:52,330 >> Nüüd näeme seal sada valitud üksused. 466 00:33:52,330 --> 00:33:58,060 Kui ma tahan olla teises valdkonnas, et ma Samuti kraapida, mis on seotud sellega 467 00:33:58,060 --> 00:34:02,540 öelda tahan kraapida hind samuti, siis ma saan teha sama. 468 00:34:02,540 --> 00:34:06,190 469 00:34:06,190 --> 00:34:11,550 >> Nii et siin on näide sellest, kuidas see on palju vähem jõuline, sest nüüd on see 470 00:34:11,550 --> 00:34:15,050 pealevõtmine linna asemel lihtsalt hind, mida ma tahan. 471 00:34:15,050 --> 00:34:16,989 Ja nüüd on see kiirenenud 200 asja. 472 00:34:16,989 --> 00:34:19,880 Võite minna tagasi ja kustutada. 473 00:34:19,880 --> 00:34:21,449 Võid proovida uuesti. 474 00:34:21,449 --> 00:34:24,250 Aga mingit garantiid. 475 00:34:24,250 --> 00:34:29,909 See on, kuidas see töötab mõnikord. 476 00:34:29,909 --> 00:34:32,969 Nagu näete, siin, nüüd ta ütleb 96 siin. 477 00:34:32,969 --> 00:34:37,000 See on kiirenenud enamik linke mis sa tahad kraapida, kuid mitte 478 00:34:37,000 --> 00:34:39,280 tingimata kõigile. 479 00:34:39,280 --> 00:34:43,909 >> Veel üks kasulik vahend Kimono kuigi on sul võimalik minna lisafunktsioonid 480 00:34:43,909 --> 00:34:47,980 siin, mine Advanced, ja siis näitan sulle 481 00:34:47,980 --> 00:34:53,139 jaotus unikaalne viivat HTML 482 00:34:53,139 --> 00:34:54,909 sildid, mis sa tahad kraapida. 483 00:34:54,909 --> 00:35:01,450 Nii nimekirjad, kui te vaatate siin Kui te juurde div p span span, 484 00:35:01,450 --> 00:35:06,030 tegelikult võite lihtsalt kasutada see oma Nokogiri koodi 485 00:35:06,030 --> 00:35:10,780 kus enne oli meil span.txt juurdepääsuks iga loetelu. 486 00:35:10,780 --> 00:35:13,270 Kui ma tahan teksti jooksul nimekirjad, 487 00:35:13,270 --> 00:35:18,950 Suutsin sisend div ruumi p ruumi span ruumi span ruumile, 488 00:35:18,950 --> 00:35:21,570 ja see oleks sama efekti. 489 00:35:21,570 --> 00:35:26,320 Ja neile, kes on huvitatud kasutades regulaaravaldisi, 490 00:35:26,320 --> 00:35:31,670 see juhtub ka teile regulaarselt Väljend omamoodi string sisestada 491 00:35:31,670 --> 00:35:34,900 leida asju sa üritad leida. 492 00:35:34,900 --> 00:35:44,130 >> Nii et on veel üks lahe omadus kimono, kus saab pagineerima, 493 00:35:44,130 --> 00:35:47,780 mis ei ole mitte ainult ma kraapima selle tulemuste lehel 494 00:35:47,780 --> 00:35:50,890 Ma ei vajuta seda vähe nuppu siin, PAGINATION, 495 00:35:50,890 --> 00:35:55,580 määrata nupule, mis oleks võta mind järgmisel leheküljel, 496 00:35:55,580 --> 00:35:59,500 ja siis lihtsalt tean, et see võib kinnitada, et järgmisel leheküljel, 497 00:35:59,500 --> 00:36:04,120 ja siis kraapige kõik the-- niikaua kui see on sama formaati course-- 498 00:36:04,120 --> 00:36:06,110 Maastik kõik need lingid ka. 499 00:36:06,110 --> 00:36:15,230 >> Nii sest Kimono ei taha töötada Craigslistissa, mida oleme teinud 500 00:36:15,230 --> 00:36:19,790 on mul Kimonofied Harvard Crimson. 501 00:36:19,790 --> 00:36:29,380 Olen tõmmatud mõned omamoodi top Soovitatavad artiklid, kinnitavad siin. 502 00:36:29,380 --> 00:36:33,090 Ütle kõik need. 503 00:36:33,090 --> 00:36:35,830 Olen koostanud selle API Teile enne tähtaega. 504 00:36:35,830 --> 00:36:38,990 Aga muidu mida sa teeksid on sul oleks lihtsalt nuppu Valmis. 505 00:36:38,990 --> 00:36:40,940 Sisesta oma API üksikasjad. 506 00:36:40,940 --> 00:36:45,260 Seadke see kas automatiseeritud või käsitsi indekseerimist. 507 00:36:45,260 --> 00:36:48,460 Nii võib uuendada andmeid iga 15 minuti 508 00:36:48,460 --> 00:36:50,330 nädalal, iga päev, mida iganes sa tahad. 509 00:36:50,330 --> 00:36:51,160 Pane oma API. 510 00:36:51,160 --> 00:36:52,790 Loo API. 511 00:36:52,790 --> 00:36:58,460 Teie kasuks, lõin Crimson esilehel API juba. 512 00:36:58,460 --> 00:37:02,480 >> Nii et sa lihtsalt luua kontole sisse Kimono ja see 513 00:37:02,480 --> 00:37:06,240 salvestab kõik oma API teile. 514 00:37:06,240 --> 00:37:10,330 Nii et sisuliselt ongi kõik teie Eraldi erinevad kriimustuste eest. 515 00:37:10,330 --> 00:37:18,250 >> Nii et kui me vaatame siin, see on arvamused lingid, et olen kogunud. 516 00:37:18,250 --> 00:37:21,290 Need on iseloomustanud lingid, mida olen kogunud. 517 00:37:21,290 --> 00:37:24,090 Ja need on kõige lugeda lingid, mida olen kogunud 518 00:37:24,090 --> 00:37:27,120 Sellest viimasest API Maastik. 519 00:37:27,120 --> 00:37:30,790 >> Nii et kui te näete siin, Need oleks Objekte, 520 00:37:30,790 --> 00:37:34,130 Need oleks arvamusi, mis selles näites 521 00:37:34,130 --> 00:37:38,150 Olen kokku neid kõiki ühte kollektsioon. 522 00:37:38,150 --> 00:37:42,780 Aga kui sa lihtsalt mängida seda natuke, saate jagada seda üles 523 00:37:42,780 --> 00:37:45,090 ning jagada see aga tahad niikaua 524 00:37:45,090 --> 00:37:47,520 kui vormindamine on veidi erinev. 525 00:37:47,520 --> 00:37:51,320 >> Lihtsalt mängida seda on indekseerimise luua üks varjuküljed 526 00:37:51,320 --> 00:37:58,120 on sul võimalik ainult kerra 25 lehekülge korraga. 527 00:37:58,120 --> 00:38:00,430 See ongi üks piiravaks teguriks. 528 00:38:00,430 --> 00:38:03,060 Aga siin, kui valid käsitsi indekseerimine, 529 00:38:03,060 --> 00:38:06,100 kuidas saab öelda, et Ajakohastage oma andmeid. 530 00:38:06,100 --> 00:38:11,010 Ja siin näete indekseerimise ajalugu kõike, mida olete roomas. 531 00:38:11,010 --> 00:38:16,000 Ja kutid minna tagasi, sisse logida, mängida kõiki erinevaid võimalusi 532 00:38:16,000 --> 00:38:20,340 et saate muuta ja kasutada oma andmed. 533 00:38:20,340 --> 00:38:24,580 >> Kimono saab seadistada kraapida linke linke. 534 00:38:24,580 --> 00:38:29,700 Ja siis oleks seda teha esimese kraapides linkide nimekiri, 535 00:38:29,700 --> 00:38:35,390 ja hiljem kasutada seda API kui hüpata punkti teise API 536 00:38:35,390 --> 00:38:36,710 et loote skripti. 537 00:38:36,710 --> 00:38:42,040 Aga see on keerulisem kui mida me hakka täna. 538 00:38:42,040 --> 00:38:44,270 >> Nii et Kimono. 539 00:38:44,270 --> 00:38:46,980 Me räägime plusse ja miinuseid Nokogiri ja Kimono. 540 00:38:46,980 --> 00:38:50,380 >> Nokogiri, see on tõesti kiire. 541 00:38:50,380 --> 00:38:51,640 See on lihtne testida. 542 00:38:51,640 --> 00:38:55,910 Sa võid paneb midagi konsool, lihtne seadistada. 543 00:38:55,910 --> 00:39:00,400 Võite otsustada täpselt, mida tahad kraapida ja poest. 544 00:39:00,400 --> 00:39:02,060 Puuduvad leht piirides. 545 00:39:02,060 --> 00:39:08,010 Ma tegelikult kasutas seda kraapida nagu 1800 Lõuna-Aafrika koolis veebilehed 546 00:39:08,010 --> 00:39:10,870 kirju internatuuri, mis ma tegin. 547 00:39:10,870 --> 00:39:16,060 >> Nii et see on võimalik, kuigi hea tava oleks lahku skripti. 548 00:39:16,060 --> 00:39:19,310 Sest kui see ei õnnestu, siis sa ei saa midagi teha. 549 00:39:19,310 --> 00:39:22,790 Aga kui sa sada, äkki 200 lehekülge korraga, 550 00:39:22,790 --> 00:39:27,840 siis on mõned võimalused vähemalt saada see tükkhaaval, eriti 551 00:39:27,840 --> 00:39:30,280 kui teil on halb internet. 552 00:39:30,280 --> 00:39:32,720 >> Kahjuks saab ainult kraapida HTML. 553 00:39:32,720 --> 00:39:35,190 Nii et kui teil on dünaamiliselt koormatud pages-- 554 00:39:35,190 --> 00:39:39,480 ja ma näitan teile näide nagu Kayak on second-- 555 00:39:39,480 --> 00:39:42,270 Nokogiri kahjuks ei kraabi seda. 556 00:39:42,270 --> 00:39:45,700 >> Aga Kimono on ka lihtne kasutada. 557 00:39:45,700 --> 00:39:48,330 Nagu nägid, et see on sisuliselt punkti ja klõpsa. 558 00:39:48,330 --> 00:39:50,260 See võib kraapida JavaScript. 559 00:39:50,260 --> 00:39:53,790 Kahjuks on maksimaalselt et mitu lehekülge saab kraapida. 560 00:39:53,790 --> 00:39:55,710 Mõnikord on vähe raske seadistada. 561 00:39:55,710 --> 00:39:57,240 See saab segaduses. 562 00:39:57,240 --> 00:40:00,920 Aga see on kindlasti midagi arvata 563 00:40:00,920 --> 00:40:05,930 kui sa ei taha olla super tugev hooldatav kraapima. 564 00:40:05,930 --> 00:40:09,010 Kui tahad lihtsalt saada kõik off lehe kiiresti, 565 00:40:09,010 --> 00:40:10,970 siis Kimono on tõesti hea vahend kasutada. 566 00:40:10,970 --> 00:40:16,490 Ja nagu ma mainisin, ei arenenud omadus Kimono 567 00:40:16,490 --> 00:40:19,260 mis näitab teile, kuidas juurdepääsu ainulaadne HTML 568 00:40:19,260 --> 00:40:24,210 element, mis on super kasulik ka Kui te töötate Nokogiri. 569 00:40:24,210 --> 00:40:30,370 >> Nii et kui me läheme Kayak saidi jaoks Näiteks näete on-- 570 00:40:30,370 --> 00:40:31,750 või äkki sa ei näe. 571 00:40:31,750 --> 00:40:38,910 Aga kui ma näitan sulle URL Kayak, see tegelikult on just allikas URL. 572 00:40:38,910 --> 00:40:43,800 See on URL enne olemisele modifitseeritud iganes JavaScript skripte 573 00:40:43,800 --> 00:40:45,350 et nad on pooleli. 574 00:40:45,350 --> 00:40:52,420 Ja see läheb teistmoodi alates kontrollimise element. 575 00:40:52,420 --> 00:40:55,940 >> Nii et kui sa lähed läbi ja sa sobivad kuni Kontrollige Element 576 00:40:55,940 --> 00:41:00,340 koodi lähtekoodi, see on tegelikult saab olema erinev. 577 00:41:00,340 --> 00:41:05,640 Ja see on sisuliselt miks Nokogiri ei saa kraapida dünaamiliselt koormatud kohtades. 578 00:41:05,640 --> 00:41:08,810 Kuna Nokogiri on kraapides allikas URL, 579 00:41:08,810 --> 00:41:16,310 samas Kimono on tegelikult kraapides mida sa sisuliselt 580 00:41:16,310 --> 00:41:18,260 näeme Vali Element. 581 00:41:18,260 --> 00:41:23,880 >> Nii et kui ma lähen läbi ja ma proovida ja Kimonofy Kayak, 582 00:41:23,880 --> 00:41:26,600 Ma ei saa tegelikult läbida ja valige hinnaga. 583 00:41:26,600 --> 00:41:32,360 See on natuke raskem, ja sel juhul, see on 584 00:41:32,360 --> 00:41:36,600 tegelikult näeme seda hinda erinevana neid. 585 00:41:36,600 --> 00:41:41,110 Nii et võite configure-- või kui see ei ole dünaamiliselt koormatud, 586 00:41:41,110 --> 00:41:43,620 võid seadistada Nokogiri saada kõiki neid. 587 00:41:43,620 --> 00:41:48,230 >> Kuna vormindamine on veidi erinevad selle oksjoni 588 00:41:48,230 --> 00:41:51,280 sest see on võrreldes ülejäänud neist, ja näed siin 589 00:41:51,280 --> 00:41:54,830 see on tegelikult läinud ja valitud kogu lennu hindades. 590 00:41:54,830 --> 00:42:01,200 Äkki ma tahan valida lennuaja samuti. 591 00:42:01,200 --> 00:42:04,700 Ja ma ei lähe läbi ja omamoodi seadistada nii. 592 00:42:04,700 --> 00:42:06,950 Ma ei taha seda. 593 00:42:06,950 --> 00:42:10,200 Ma tahan järgmise lennu ajal. 594 00:42:10,200 --> 00:42:17,030 Ja siis pärast paari neid läbimas, siis saab pilt. 595 00:42:17,030 --> 00:42:19,080 Nii Kimono on päris tark. 596 00:42:19,080 --> 00:42:21,900 See lihtsalt ei ole päris nii tugev. 597 00:42:21,900 --> 00:42:26,710 >> On teisigi alternatiive, mida saab kasutada. 598 00:42:26,710 --> 00:42:31,600 Ja ma näitan sulle neid siin. 599 00:42:31,600 --> 00:42:35,790 Kui teil on mugavam Python asemel Ruby äkki, 600 00:42:35,790 --> 00:42:39,290 on raamatukogu Ilusaid supp. 601 00:42:39,290 --> 00:42:40,430 Võite kasutada seda. 602 00:42:40,430 --> 00:42:42,270 See on väga sarnane Nokogiri. 603 00:42:42,270 --> 00:42:44,620 See on veel mõned omadused. 604 00:42:44,620 --> 00:42:52,160 Leiad HTML tag ja siis liikuda üles või külgsuunas liikuda. 605 00:42:52,160 --> 00:42:54,690 >> Seal PyQt. 606 00:42:54,690 --> 00:42:57,820 See võib tegelikult kraapida dünaamiline saite, sest see on omamoodi 607 00:42:57,820 --> 00:43:02,540 on WebKit mis teeskleb, et brauser, ilma et tegelikult 608 00:43:02,540 --> 00:43:03,670 olles brauserit. 609 00:43:03,670 --> 00:43:07,490 Seega oleks oodata kõik JavaScript laadida kõigepealt ja siis 610 00:43:07,490 --> 00:43:09,560 minna ja proovida ja kraapida kohas. 611 00:43:09,560 --> 00:43:13,560 >> Kui sa tahad jääda Ruby, siis võib minna üks tasandil üles Nokogiri. 612 00:43:13,560 --> 00:43:17,650 Võite kasutada Vesi Siga koos poltergeist ümbris. 613 00:43:17,650 --> 00:43:22,910 Ja seda saab tegelikult sisuliselt sama asja tegema 614 00:43:22,910 --> 00:43:26,610 kui PyQt, mis on see on WebKit. 615 00:43:26,610 --> 00:43:29,610 See ootab jaoks JavaScript laadida esimesena. 616 00:43:29,610 --> 00:43:33,340 Kui te viiul ringi seda piisavalt, võite isegi saada see klikkima asju. 617 00:43:33,340 --> 00:43:42,780 >> Nii et kui seal on link, et ei ole klassikaline href kus 618 00:43:42,780 --> 00:43:46,350 tee on kergesti ligipääsetav ja see on mingi JavaScript asi, mis tuvastab 619 00:43:46,350 --> 00:43:49,490 Click saab tegelikult teha. 620 00:43:49,490 --> 00:43:53,430 Üha populaarsemaks raamatukogu simuleerida kasutaja 621 00:43:53,430 --> 00:43:56,390 on JavaScript, mis on PhantomJS. 622 00:43:56,390 --> 00:44:01,010 See saab ilmselt kraapida dünaamiline saite, sest see on sisuliselt 623 00:44:01,010 --> 00:44:04,270 teeseldes Chrome ilma kasutajaliides. 624 00:44:04,270 --> 00:44:09,970 >> Ja siis muidugi kõige jõuline, kuid aeglasem variant, 625 00:44:09,970 --> 00:44:13,260 on Seleen brauseri automaatika. 626 00:44:13,260 --> 00:44:15,550 Ja kahjuks sa ei kavatse olla 627 00:44:15,550 --> 00:44:19,770 seda teha teie CS50 IDE. 628 00:44:19,770 --> 00:44:24,140 Kuna sisuliselt mida see ei ole see käivitub Chrome, 629 00:44:24,140 --> 00:44:27,090 Firefox, olenemata brauseri mida soovite kasutada, 630 00:44:27,090 --> 00:44:32,570 ja ta lugusid äkki hiirt liikumine, mida sa kirjutad, 631 00:44:32,570 --> 00:44:35,170 ja see lihtsalt omamoodi automatiseerib selle protsessi. 632 00:44:35,170 --> 00:44:42,070 Seega töötati välja omamoodi veebisait automaatika testimise tööriist. 633 00:44:42,070 --> 00:44:45,910 Aga paljud inimesed kasutavad Seleen kraapida veebilehed 634 00:44:45,910 --> 00:44:49,990 et nad muidu on palju raskusi kraapides 635 00:44:49,990 --> 00:44:53,700 kusjuures mõned neist Teine, kiirem tööriistu. 636 00:44:53,700 --> 00:44:57,530 >> Nii et kõik on mul web pühkimist. 637 00:44:57,530 --> 00:44:58,090 Lõbutse hästi. 638 00:44:58,090 --> 00:45:01,762 639 00:45:01,762 --> 00:45:02,680 >> Sihtrühm: Küsimus. 640 00:45:02,680 --> 00:45:04,016 >> ROBERT KRABEK: Jah. 641 00:45:04,016 --> 00:45:12,840 >> Sihtrühm: Kas on olemas mehhanism hash kodulehel, et sa võiksid põhimõtteliselt 642 00:45:12,840 --> 00:45:14,207 läbida seda hiljem. 643 00:45:14,207 --> 00:45:15,040 ROBERT KRABEK: Jah. 644 00:45:15,040 --> 00:45:21,530 Nii panime meie Näiteks nii neist, 645 00:45:21,530 --> 00:45:24,980 paneme kogu kodulehel doc. 646 00:45:24,980 --> 00:45:31,260 Ja siis võiks tegelikult lihtsalt võtta muutuja doc ja kirjutada faili. 647 00:45:31,260 --> 00:45:35,490 Nii et kui ma tahtsin, et ma võiks kirjuta välja HTML-failina, 648 00:45:35,490 --> 00:45:39,280 ja seejärel kasutamise asemel OpenURI ja cURL taotluse, 649 00:45:39,280 --> 00:45:43,520 siis ma võiks lihtsalt avada doc HTML ja siis otsida seda. 650 00:45:43,520 --> 00:45:47,960 >> Sihtrühm: Aga kas sa säilitad omamoodi online kogemusi 651 00:45:47,960 --> 00:45:48,930 Kuigi te offline. 652 00:45:48,930 --> 00:45:51,013 Näiteks. kui sa oled sõidavad mõnetunnist 653 00:45:51,013 --> 00:45:54,070 Ma tahan, et põhimõtteliselt arhiiv Kogu kodulehel. [Kuuldamatu] 654 00:45:54,070 --> 00:45:58,780 >> ROBERT KRABEK: Jah, see on exactly-- nii sõna otseses mõttes, mida see teeb 655 00:45:58,780 --> 00:46:03,010 on see võtab kõik et oleks sellelt aadressilt. 656 00:46:03,010 --> 00:46:11,280 Nii et kui me jooksime Curl, see on Seda kõike HTML, 657 00:46:11,280 --> 00:46:14,590 ja see on hoiustamisel sees muutuja doc. 658 00:46:14,590 --> 00:46:17,290 Nii siis võid teha mida iganes sa tahad teha doc. 659 00:46:17,290 --> 00:46:18,575 Soovi korral saate seda faili. 660 00:46:18,575 --> 00:46:19,950 Sihtrühm: Aga see ei ole seostatud. 661 00:46:19,950 --> 00:46:20,780 See ei ole dünaamiline. 662 00:46:20,780 --> 00:46:22,770 See ei ole rekursiivne, eks? 663 00:46:22,770 --> 00:46:24,016 Sa näed, mida ma mõtlen? 664 00:46:24,016 --> 00:46:28,359 Püüan põhiliselt omamoodi hash Kogu kodulehel minu kõvakettale 665 00:46:28,359 --> 00:46:31,150 nii et ma võiks põhimõtteliselt teha mitmeks tunniks ilma internet. 666 00:46:31,150 --> 00:46:32,025 >> ROBERT KRABEK: Right. 667 00:46:32,025 --> 00:46:37,140 Nii et kui ma had-- siis kus on mu faili I / O? 668 00:46:37,140 --> 00:46:47,766 Nii et see on faili I / O. Nii öelda asemel Selle kutsun seda craigslist.html. 669 00:46:47,766 --> 00:46:52,620 670 00:46:52,620 --> 00:46:53,940 Ma avada see üles. 671 00:46:53,940 --> 00:46:59,020 Ma paneb doc ta. 672 00:46:59,020 --> 00:47:00,470 Ma fail sulgeda. 673 00:47:00,470 --> 00:47:05,410 Ja siis lihtsalt sellepärast, et CS50 IDE on pilve, mis on iganes. 674 00:47:05,410 --> 00:47:07,710 Ma ei lähe siin. 675 00:47:07,710 --> 00:47:09,320 Võin laadida faili. 676 00:47:09,320 --> 00:47:11,830 Ja siis oleks minu kõvakettale. 677 00:47:11,830 --> 00:47:13,930 Nii et sa ei saa seda teha nii. 678 00:47:13,930 --> 00:47:18,830 Või kui sa oled kodus, ei kasuta CS50 IDE, nagu Sublime või midagi, 679 00:47:18,830 --> 00:47:21,900 see on isegi lihtsam, sest see kõik on kohapeal olemas, 680 00:47:21,900 --> 00:47:23,020 ole seotud interneti. 681 00:47:23,020 --> 00:47:24,720 >> Sihtrühm: ma näen. 682 00:47:24,720 --> 00:47:26,580 See on üks eriline probleem. 683 00:47:26,580 --> 00:47:30,410 Kas sa seda rekursiivselt nii, et teil minna mitu kihti sügav selline asi? 684 00:47:30,410 --> 00:47:33,801 >> ROBERT KRABEK: ma ei lae kaustad samuti, kui see on, mida sa küsida. 685 00:47:33,801 --> 00:47:34,426 Sihtrühm: Jah. 686 00:47:34,426 --> 00:47:39,890 687 00:47:39,890 --> 00:47:41,440 >> ROBERT KRABEK: Cool. 688 00:47:41,440 --> 00:47:43,182