1 00:00:00,000 --> 00:00:03,234 >> [Zenelejátszási] 2 00:00:03,234 --> 00:00:05,275 3 00:00:05,275 --> 00:00:06,400 ROBERT KRABEK: Hello, srácok. 4 00:00:06,400 --> 00:00:09,980 A nevem Robert Krabek, és Én lesz tanítás, fiúk 5 00:00:09,980 --> 00:00:15,470 hogyan kaparja a weben Nokogiri, ami egy Ruby könyvtár, 6 00:00:15,470 --> 00:00:17,566 és kimonó, amely a Chrome-bővítmény. 7 00:00:17,566 --> 00:00:20,940 8 00:00:20,940 --> 00:00:25,010 >> Tehát először van egy Néhány dolog, amit 9 00:00:25,010 --> 00:00:28,790 tehet, ha esetleg te voltál mindent megtesz a psets eddig 10 00:00:28,790 --> 00:00:31,170 és a munkaterület Kicsit tele. 11 00:00:31,170 --> 00:00:37,060 Mi is valójában csak megy és Új munkaterület az Ön számára 12 00:00:37,060 --> 00:00:41,220 hogy csak nem egy teljesen új projektet. 13 00:00:41,220 --> 00:00:46,160 Tehát, ha nem akarjuk, hogy továbbra is dolgozik a CS50-azonosító 14 00:00:46,160 --> 00:00:49,080 hogy jelenleg, bátran, és ha csak a 15 00:00:49,080 --> 00:00:54,700 telepíteni Nokogiri a CFLAGS equals-- gem install nokogiri. 16 00:00:54,700 --> 00:00:56,930 De egyébként én megmutatom hogyan kell beállítani egy újat fel. 17 00:00:56,930 --> 00:01:01,210 És akkor ez lényegében csepegtető több képzési kerekek. 18 00:01:01,210 --> 00:01:07,120 És te kódolás, mintha Csak kódolás Sublime, vagy valami. 19 00:01:07,120 --> 00:01:12,365 Tehát, ha műszak vége. 20 00:01:12,365 --> 00:01:14,930 21 00:01:14,930 --> 00:01:18,690 >> Tehát mondjuk ez a jelenlegi CS 50 ID. 22 00:01:18,690 --> 00:01:21,490 Akkor csak megy a Cloud9 itt. 23 00:01:21,490 --> 00:01:22,725 Mehetsz a műszerfalon. 24 00:01:22,725 --> 00:01:26,720 25 00:01:26,720 --> 00:01:29,950 Meg kell felnevelni munkaterületek lap. 26 00:01:29,950 --> 00:01:32,980 És akkor csak kattints Itt, Új munkaterület létrehozása. 27 00:01:32,980 --> 00:01:37,600 Nevezze el az új munkaterület, Talán vizsgálat, vagy kaparás. 28 00:01:37,600 --> 00:01:42,700 Majd kattintson erre a saját fül van, ahelyett, hogy a CS50 sablonok lapot. 29 00:01:42,700 --> 00:01:45,155 És akkor csak megy és hozzon létre egy új munkaterületet. 30 00:01:45,155 --> 00:01:48,280 >> Én már létrehozott egy munkaterületet itt. 31 00:01:48,280 --> 00:01:50,640 Így fogunk dolgozni ezzel. 32 00:01:50,640 --> 00:01:55,380 És ha létrehozott egy új munkaterületet, a Custom fülre, 33 00:01:55,380 --> 00:02:04,560 egyszerűen beírhatja gem install nokogiri, ami nem megy itt. 34 00:02:04,560 --> 00:02:06,230 OK, ez egy kicsit fagyott. 35 00:02:06,230 --> 00:02:08,979 De akkor írja gem install nokogiri. 36 00:02:08,979 --> 00:02:15,970 És hogy legyen minden, van, hogy a telepítést. 37 00:02:15,970 --> 00:02:20,590 >> Mint már mondtam, ha még mindig a munkát a CS50-azonosító, 38 00:02:20,590 --> 00:02:30,270 akkor csak meg kell írja CFLAGS egyenlő gem install nokogiri. 39 00:02:30,270 --> 00:02:33,130 És én már telepítve itt tehát nem tudom megtenni. 40 00:02:33,130 --> 00:02:38,500 De azok számára, következő mentén, nyugodtan erre. 41 00:02:38,500 --> 00:02:46,000 >> Tehát ha egyszer megvan a Nokogiri munkaterülethez vagy könyvtár telepítve, 42 00:02:46,000 --> 00:02:49,500 Megyek, hogy adjak egy kicsit Egy gyorstalpaló Ruby szintaxis 43 00:02:49,500 --> 00:02:53,380 mert Nokogiri egy Ruby könyvtár. 44 00:02:53,380 --> 00:03:03,710 Szóval akkor tudnod kell néhány alapvető Ruby szintaxis dolgozó Nokogiri. 45 00:03:03,710 --> 00:03:08,750 Tehát néhány alapvető különbségek attól, amit használni 46 00:03:08,750 --> 00:03:13,370 talán ha már dolgozik eddig csak a C és a PHP, 47 00:03:13,370 --> 00:03:16,010 Ön kijelenti változók nincs típus. 48 00:03:16,010 --> 00:03:19,720 Nem használja pontosvessző, ami egyfajta megkönnyebbülés. 49 00:03:19,720 --> 00:03:25,480 Nincs zárójelben mára mintegy A vagy while, például. 50 00:03:25,480 --> 00:03:29,460 Csak van egy blokk-kód, és akkor tedd végén végén, hogy. 51 00:03:29,460 --> 00:03:32,380 Nincs plus plus vagy mínusz mínusz, így csak 52 00:03:32,380 --> 00:03:36,180 tudom, hogy mikor teszel hurkok, 53 00:03:36,180 --> 00:03:38,620 Csak plusz egyenlők és mínusz egyenlő. 54 00:03:38,620 --> 00:03:43,310 És ahelyett, hogy hash közé, akkor használja igényel majd 55 00:03:43,310 --> 00:03:47,755 amit könyvtár próbál betölteni a programba. 56 00:03:47,755 --> 00:03:51,610 57 00:03:51,610 --> 00:03:53,430 >> Ruby nem összeállított nyelven. 58 00:03:53,430 --> 00:03:55,550 Szóval ez egy másik megkönnyebbülés. 59 00:03:55,550 --> 00:03:59,350 Ez jobban hasonlít a PHP, ahol ez egy értelmezett nyelv. 60 00:03:59,350 --> 00:04:03,570 Futtatható bármilyen Ruby programon írsz Ruby követ 61 00:04:03,570 --> 00:04:07,380 a neve a szkriptet, programot. 62 00:04:07,380 --> 00:04:13,000 Annak jeléül, hogy ez egy Ruby program csak a végén azt .rb helyett .c. 63 00:04:13,000 --> 00:04:17,440 És vannak változó méretű tömbök Ruby, 64 00:04:17,440 --> 00:04:23,200 ami szuper kényelmes, ha éppen kaparás és talán kíván hozzáfűzni 65 00:04:23,200 --> 00:04:26,090 adatok, hogy már kaparni egy tömbben. 66 00:04:26,090 --> 00:04:31,960 Nem kell malloc egy új tömböt és másolja át a régi tömböt az új tömb. 67 00:04:31,960 --> 00:04:36,150 Tudod csak hozzáfűzni a A két nyíl jelzéseket. 68 00:04:36,150 --> 00:04:39,820 És nincsenek karakter van Csak egyetlen betű szálakat. 69 00:04:39,820 --> 00:04:44,760 Szóval, hogy kell egy kicsit könnyebb. 70 00:04:44,760 --> 00:04:50,130 >> Ezért most is csak ad egy kis példák néhány alapvető Ruby szintaxis. 71 00:04:50,130 --> 00:04:57,100 Tehát itt láthatjuk, hogy ahelyett, A perjel perjel, hogy észrevételeiket Ruby, 72 00:04:57,100 --> 00:04:58,740 csak használja a font jele. 73 00:04:58,740 --> 00:05:04,990 És változó nyilatkozatot, akkor Csak írja be a változó egyenlők 74 00:05:04,990 --> 00:05:07,971 amit akarsz változó lenni. 75 00:05:07,971 --> 00:05:09,220 Lehetnek szálakat. 76 00:05:09,220 --> 00:05:14,120 Akkor lehet tömb, amely Ön népességnövekedés értékekkel. 77 00:05:14,120 --> 00:05:17,240 helyezi és nyomatok hasonlóak. 78 00:05:17,240 --> 00:05:20,110 A mi szempontunkból, a egyetlen különbség valóban 79 00:05:20,110 --> 00:05:25,500 hogy hozza, amelynek jelentése helyezi, csak hozza egy új vonal 80 00:05:25,500 --> 00:05:27,440 karaktert, bármit nyomtat. 81 00:05:27,440 --> 00:05:30,980 >> Tehát ha adunk egy kis demonstrációs itt, 82 00:05:30,980 --> 00:05:41,800 tudjuk futtatni ezt with-- nyit egy új terminál. 83 00:05:41,800 --> 00:05:46,020 Láthatjuk az összes ilyen fájlok az én terminál. 84 00:05:46,020 --> 00:05:50,960 És ha csak futni Ruby, Ruby intro.rb, hogy 85 00:05:50,960 --> 00:05:53,530 kioltja öt napot Mather, Quincy, Carrier. 86 00:05:53,530 --> 00:05:54,410 Adams. 87 00:05:54,410 --> 00:05:59,295 Szóval ez minden van hogy nyilvánító tömbök. 88 00:05:59,295 --> 00:06:01,670 Közönség: Robert, lehet, hogy a font egy kicsit nagyobb? 89 00:06:01,670 --> 00:06:02,461 ROBERT KRABEK: Igen. 90 00:06:02,461 --> 00:06:05,370 91 00:06:05,370 --> 00:06:12,280 És én nagyíthatjuk, mert nem lehet Nagyításhoz terminál betűtípusok látszólag. 92 00:06:12,280 --> 00:06:18,790 93 00:06:18,790 --> 00:06:24,630 >> Szóval így kinyomtatni változók a terminálra. 94 00:06:24,630 --> 00:06:28,820 Ön is használja változók string belsejében. 95 00:06:28,820 --> 00:06:33,720 Így az utóbbi időben PHP- talán tanultak 96 00:06:33,720 --> 00:06:37,340 hogy van húr interpoláció. 97 00:06:37,340 --> 00:06:43,830 Tehát, ha veszel egy pillantást ide, ha Kijelentem, három változó, név, könyvtár, 98 00:06:43,830 --> 00:06:49,700 és a nyelv, és én minden kimenet, I levelet húr, hello my name is. 99 00:06:49,700 --> 00:06:54,190 És akkor ahelyett, hogy a PHP változata húr interpoláció 100 00:06:54,190 --> 00:06:58,960 ami úgy néz ki egy kicsit több, mint ez, Van egy font jel, majd 101 00:06:58,960 --> 00:07:01,220 Egy kapcsos zárójel, majd A változó neve. 102 00:07:01,220 --> 00:07:07,350 És így azt nyomtatni, azt mondják, függetlenül a változó neve. 103 00:07:07,350 --> 00:07:10,140 >> És akkor is, összefűzni szálakat. 104 00:07:10,140 --> 00:07:12,890 Ruby teszi szuper egyszerű a plusz jel. 105 00:07:12,890 --> 00:07:16,110 Csak meg egy húr a bal oldalon, valamint egy változó 106 00:07:16,110 --> 00:07:18,860 vagy egy másik szöveg, plusz egy string. 107 00:07:18,860 --> 00:07:23,500 Szóval, ha nyomtatni ezt ki, ahogy kellene Csak köszönni, a nevem Robert. 108 00:07:23,500 --> 00:07:27,340 Én lesz tanítás, nokogiri Ruby. 109 00:07:27,340 --> 00:07:35,370 >> És nézzük csak megerősíti, hogy ez valóban a case-- rubin intro. 110 00:07:35,370 --> 00:07:36,480 Helló, a nevem Robert. 111 00:07:36,480 --> 00:07:40,160 Én lesz tanítás, nokogiri Ruby. 112 00:07:40,160 --> 00:07:45,600 >> Továbblépve, ha mást nyilatkozatok, ez egy kicsit más 113 00:07:45,600 --> 00:07:49,800 abból, amit fel lehetne használni a ha már dolgozik C. 114 00:07:49,800 --> 00:07:53,200 Nem kell a zárójelben. 115 00:07:53,200 --> 00:07:55,220 Nem kell a kapcsos zárójelek. 116 00:07:55,220 --> 00:08:00,170 És ahelyett, hogy else if, ez egy összefűzött elsif. 117 00:08:00,170 --> 00:08:07,260 Tehát itt, ha már kijelentette, x-ig Itt, mint látjuk, x még mindig 5. 118 00:08:07,260 --> 00:08:11,100 Tehát, ha x kisebb, mint 3, akkor majd fel kicsi. 119 00:08:11,100 --> 00:08:14,030 Ha ez kevesebb, mint 7, közepes, nagy mást. 120 00:08:14,030 --> 00:08:17,340 Tehát 5 egy közepes számát. 121 00:08:17,340 --> 00:08:22,270 És én ér véget ez a blokk a kódot végén. 122 00:08:22,270 --> 00:08:24,920 >> Itt van a hurok. 123 00:08:24,920 --> 00:08:28,240 És ez a szintaxis is Kicsit más. 124 00:08:28,240 --> 00:08:33,500 A 0-öt csak alapvetően A nyilvánító tömbök 0-5. 125 00:08:33,500 --> 00:08:36,120 Tehát van öt olyan résidő, a tömbben. 126 00:08:36,120 --> 00:08:40,500 És akkor minden nyílásába, hogy tömb, én leszek megnő i. 127 00:08:40,500 --> 00:08:46,080 Tehát ez nyomtassa 0-5, illetve 0-4. 128 00:08:46,080 --> 00:08:49,630 És ez nyomtatott médium. 129 00:08:49,630 --> 00:08:51,370 >> És én csak lángol át. 130 00:08:51,370 --> 00:08:54,466 Srácok lesz hozzáférése hogy ezt a kódot a későbbiekben. 131 00:08:54,466 --> 00:08:55,965 Szóval ti is futtatni ezt magatokat. 132 00:08:55,965 --> 00:09:02,090 133 00:09:02,090 --> 00:09:06,620 >> Tehát ez az alapvető while ciklus. 134 00:09:06,620 --> 00:09:12,230 Ez csak úgy lesz a nyomtatás j, megnő 1-ig elérjük 5. 135 00:09:12,230 --> 00:09:18,320 >> Szuper gyors Ruby gyorstalpaló hogyan kell írni egy függvény. 136 00:09:18,320 --> 00:09:24,460 Ahelyett, hogy, mondjuk, int faktoros számú, már csak def. 137 00:09:24,460 --> 00:09:28,450 És lényegében te meghatározó funkciója van. 138 00:09:28,450 --> 00:09:30,600 Ez lesz a A függvény neve, 139 00:09:30,600 --> 00:09:34,280 és ez olyan változók, amelyeket szeretnénk átadni a funkciót. 140 00:09:34,280 --> 00:09:36,760 Akkor lehet, ha megállapításoknak minősülnek. 141 00:09:36,760 --> 00:09:38,030 Akkor vissza. 142 00:09:38,030 --> 00:09:42,620 Ebben az esetben mi vagyunk meghatározó rekurzív 143 00:09:42,620 --> 00:09:45,000 végre faktoriális függvény. 144 00:09:45,000 --> 00:09:48,660 Szóval csak hívási funkciók Ruby, mint ez. 145 00:09:48,660 --> 00:09:54,700 >> Tehát, ha én már definiált ezt, hívhatják faktoros, át 3, 146 00:09:54,700 --> 00:09:59,700 majd 3 lesz a száma változó hogy tudom használni a funkciót. 147 00:09:59,700 --> 00:10:08,010 És ez to_s csak fordult a visszatérési értéke faktoros egy húr. 148 00:10:08,010 --> 00:10:10,760 Máskülönben ez fog dobni egy hiba mondás ó, 149 00:10:10,760 --> 00:10:13,230 nem lehet kinyomtatni a string-- mert ahogy emlékszem, 150 00:10:13,230 --> 00:10:18,230 helyezi üzembe string-- mert ez faktoros visszatért egy számot. 151 00:10:18,230 --> 00:10:21,850 Így tudjuk alakítani, hogy hogy egy string, mint olyat. 152 00:10:21,850 --> 00:10:27,856 És fordítva, akkor is konvertálni egy string egy integer to_i. 153 00:10:27,856 --> 00:10:32,650 >> Tehát, hogy mindent szuper egyszerű, ha én csak kommentálom el, kivéve 154 00:10:32,650 --> 00:10:36,250 és futtassa a faktoriális függvény. 155 00:10:36,250 --> 00:10:39,850 Meg kell látni hogy faktoriálisát 3 6. 156 00:10:39,850 --> 00:10:42,790 És ez valóban igaz. 157 00:10:42,790 --> 00:10:46,160 >> Szóval ez a gyorstalpaló Ruby. 158 00:10:46,160 --> 00:10:53,550 És most, hogy tudod Ruby, mehetünk Az alapvető Nokogiri kaparás létre. 159 00:10:53,550 --> 00:10:58,190 Lényegében csak annyit kell tennie, hogy Ruby, szükség könyvtárak. 160 00:10:58,190 --> 00:11:04,390 És mi célból fogjuk használni a könyvtár OpenURI valamint Nokogiri. 161 00:11:04,390 --> 00:11:07,870 És akkor mit do-- és ez lesz megadja a szintaxis this-- 162 00:11:07,870 --> 00:11:16,010 ez megnyitja az URL sokat, ahogy azt a göndör kérelmet, amely áll a C URL. 163 00:11:16,010 --> 00:11:20,330 >> Szóval, hogy az URL-t A kérdéses weboldal. 164 00:11:20,330 --> 00:11:22,030 Tárolja egy változóban. 165 00:11:22,030 --> 00:11:27,400 És akkor kereshet keresztül, hogy változó egyedi HTML címkéket használ 166 00:11:27,400 --> 00:11:30,590 A .css parancsot. 167 00:11:30,590 --> 00:11:34,360 És akkor tud kiadni a tartalmat, bárhova is kíván. 168 00:11:34,360 --> 00:11:35,720 Meg lehet kezdeni egy adatbázisban. 169 00:11:35,720 --> 00:11:42,040 Kivezetheti egy fájlt, vagy akár csak nyomtassa ki a képernyőn. 170 00:11:42,040 --> 00:11:47,290 >> Szóval mi megmutatjuk, alapvető lehúzó. 171 00:11:47,290 --> 00:11:52,570 Tehát itt láthatjuk van igénylő nokogiri igényelnek nyílt uri. 172 00:11:52,570 --> 00:11:57,150 Az Ön alap létrehozását, hadd hívják dokumentum vagy doc, 173 00:11:57,150 --> 00:12:07,780 egyenlő Nokogiri :: HTML nyitott, amely a parancsot, nekünk a OpenURI 174 00:12:07,780 --> 00:12:08,920 könyvtár. 175 00:12:08,920 --> 00:12:14,000 És mi lesz keresnek, azoknak te, aki lehet, hogy él a quad, 176 00:12:14,000 --> 00:12:21,270 kerékpárok, amelyek a bostoni felsorolt A Boston Craigslist kerékpáros szakaszt 177 00:12:21,270 --> 00:12:22,020 telek. 178 00:12:22,020 --> 00:12:26,460 >> Tehát, ha nem ismerik hurokkal, én csak 179 00:12:26,460 --> 00:12:28,930 mutassa meg, tényleg gyorsan, milyen USE fog tenni. 180 00:12:28,930 --> 00:12:38,350 Ha azt akartam, hogy az összes URL-t A Craigslist oldalon, ha az I. típusú göndör, 181 00:12:38,350 --> 00:12:44,950 ez csak guba összes URL a Craigslist kerékpár helyszínen 182 00:12:44,950 --> 00:12:46,720 rá a terminált. 183 00:12:46,720 --> 00:12:49,130 Ez nem különösebben hasznos, mert én nem 184 00:12:49,130 --> 00:12:53,330 kézzel szeretné megy keresztül, és megtalálják a dolog, amit keresek. 185 00:12:53,330 --> 00:13:01,590 De csak így lehet látom, hogy én valójában 186 00:13:01,590 --> 00:13:13,966 A találó kódot, ha megnézi az URL-t a Craigslist bikes-- 187 00:13:13,966 --> 00:13:17,460 valamilyen oknál fogva ez nem találtak. 188 00:13:17,460 --> 00:13:20,340 Ha megnézed ezt az oldalt és nézd meg az URL-t, 189 00:13:20,340 --> 00:13:23,970 ez azonosnak kell lennie, hogy a USE kérését, hogy én csak küldeni. 190 00:13:23,970 --> 00:13:27,700 És valóban, ez az, ami lenni tárolt doc változó. 191 00:13:27,700 --> 00:13:36,540 >> Szóval, ha visszamegyünk a kódot, akkor Ezután működni ezen a doc változó 192 00:13:36,540 --> 00:13:40,660 segítségével .css. 193 00:13:40,660 --> 00:13:49,240 Tehát mondjuk azt akartam, hogy minden A címkék, amelyek span.txt, 194 00:13:49,240 --> 00:13:51,740 és az összes olyan címkéket, hogy a tag. 195 00:13:51,740 --> 00:13:56,150 És miért lehet akarunk Ehhez Hallom sírni? 196 00:13:56,150 --> 00:14:02,920 >> Ha Elem vizsgálata, ez ad egy bontása hogyan URL épül. 197 00:14:02,920 --> 00:14:06,200 Ha én nézd végig Itt látható 198 00:14:06,200 --> 00:14:08,770 mi minden egyes ilyen eltérő elemek képvisel. 199 00:14:08,770 --> 00:14:13,410 Úgyhogy talán szeretne hozzáférni az adott elem. 200 00:14:13,410 --> 00:14:16,820 Tehát én vagyok a Chrome fejlesztői eszközöket Elem vizsgálata. 201 00:14:16,820 --> 00:14:22,970 Látom itt lent, hogy ez a egy olyan tag leforgása alatt 202 00:14:22,970 --> 00:14:26,230 tag egy osztály a txt. 203 00:14:26,230 --> 00:14:29,610 >> Szóval ez lesz a mi első művelet, amely 204 00:14:29,610 --> 00:14:37,330 jelentése doc.css span, amely a tag, hogy Keresem belül mindez URL. 205 00:14:37,330 --> 00:14:43,650 És akkor .txt működik ugyanúgy, mint a CSS nem, ha te csak írásban CSS 206 00:14:43,650 --> 00:14:49,630 a HTML-fájlokat meghatározza egy osztályt. 207 00:14:49,630 --> 00:14:57,980 Tehát ebben az üzemben tartó adjon meg egy span címke osztálya txt. 208 00:14:57,980 --> 00:15:02,800 És akkor, ha elmegyek egy helyet, ezt követően megy belül, hogy a tag 209 00:15:02,800 --> 00:15:05,170 majd talál egy címkét belül. 210 00:15:05,170 --> 00:15:10,750 >> Szóval ha csak hogy ezt a a terminál, azt kell 211 00:15:10,750 --> 00:15:21,630 lehet látni lényegében mindent vagyis ezen belül span osztály txt. 212 00:15:21,630 --> 00:15:22,890 Tehát azt fogjuk adni, hogy egy megy. 213 00:15:22,890 --> 00:15:25,870 214 00:15:25,870 --> 00:15:27,756 ruby Craigslist-lehúzó. 215 00:15:27,756 --> 00:15:31,850 216 00:15:31,850 --> 00:15:37,250 És valóban, hogy megadja nekünk az összes ilyen címkék a különböző listák hogy 217 00:15:37,250 --> 00:15:40,400 vannak a Craigslist oldalon. 218 00:15:40,400 --> 00:15:45,670 >> Tehát ha visszamegyünk, tudjuk be ezt a valami egy kicsit hasznosabb. 219 00:15:45,670 --> 00:15:51,050 Talán azt akarjuk, csak a linkek. 220 00:15:51,050 --> 00:15:58,790 Mivel ebben a címkét, én is Van a hivatkozást az út 221 00:15:58,790 --> 00:16:00,590 hogy ez az oldal megy. 222 00:16:00,590 --> 00:16:09,100 Tehát, ha megnézi ezt a kódot itt, mit fogok csinálni a helyett .css, 223 00:16:09,100 --> 00:16:12,380 Mehetek at_css. 224 00:16:12,380 --> 00:16:16,820 És ez csak kap az első eleme minden olyan dolog. 225 00:16:16,820 --> 00:16:20,890 Tehát, ha én is csinálni, hogy akár a kód, amit csak a korábban bizonyították, 226 00:16:20,890 --> 00:16:23,800 A találatok Ennek akkor csak 227 00:16:23,800 --> 00:16:26,850 vissza az első egy ilyet. 228 00:16:26,850 --> 00:16:31,310 Tehát így a at_css üzemeltető működik. 229 00:16:31,310 --> 00:16:39,460 >> Ezért szeretnénk tárolni a útját végig az első címkét. 230 00:16:39,460 --> 00:16:47,430 És mivel egy ad nekünk egy-- így még mindig lesz használni .css. 231 00:16:47,430 --> 00:16:53,830 De mivel ez fog adni vissza minket egy egész sor címkék, 232 00:16:53,830 --> 00:16:55,710 fogunk hozzáférést Az első elem. 233 00:16:55,710 --> 00:17:01,700 Szóval ez egy másik módja, hogy tudsz hozzáférni bizonyos elemet, ha 234 00:17:01,700 --> 00:17:04,810 Van tömbjére A visszaadott, 235 00:17:04,810 --> 00:17:11,930 mert tudod kezelni semmit, .css visszatér, mint egy tömb, alapvetően. 236 00:17:11,930 --> 00:17:16,880 És akkor mi lesz hozzáférni a hypertext referencia jellemzője ennek. 237 00:17:16,880 --> 00:17:24,810 >> Tehát, ha egy pillantást, ha Megnézted igazán közel van, 238 00:17:24,810 --> 00:17:28,270 ha csak lényegében nézd meg a címsorba, 239 00:17:28,270 --> 00:17:33,880 ez az az út, hogy fogsz kaparás. 240 00:17:33,880 --> 00:17:41,565 Tehát, ha csak futni még egyszer, és győződjön meg arról, mi mentette meg. 241 00:17:41,565 --> 00:17:47,040 242 00:17:47,040 --> 00:17:48,300 Meg tudja nézni otthon. 243 00:17:48,300 --> 00:17:51,430 Ez valóban összeillik erre a linkre. 244 00:17:51,430 --> 00:17:55,950 >> Akkor miért lehet használni akarjuk ezt? 245 00:17:55,950 --> 00:17:57,870 Ha azt szeretnénk, hogy kaparja Az oldal és van 246 00:17:57,870 --> 00:18:00,270 egy oldalt a linkek, mint Craigslist válik, akkor 247 00:18:00,270 --> 00:18:03,210 érdemes menni, akkor minden egyes ilyen kapcsolatok 248 00:18:03,210 --> 00:18:05,120 majd kaparja a tartalmát, hogy melyik 249 00:18:05,120 --> 00:18:08,520 Pontosan mit fogunk csinálni. 250 00:18:08,520 --> 00:18:11,660 >> Tehát ha az utat, mint egy változó, már nem igazán 251 00:18:11,660 --> 00:18:13,200 törődnek nyomtatás ki. 252 00:18:13,200 --> 00:18:15,420 Csak kell tárolni, mint egy változó. 253 00:18:15,420 --> 00:18:20,980 És akkor tudok hozzáférni egy másik Oldal ugyanúgy tudok hozzáférni 254 00:18:20,980 --> 00:18:22,260 doc az első helyen. 255 00:18:22,260 --> 00:18:25,920 Kivéve az URL, megyünk használni karakterlánc interpoláció 256 00:18:25,920 --> 00:18:29,180 mint én leírja Ruby korábban hozzáfűzni 257 00:18:29,180 --> 00:18:32,010 az utat, hogy a végén a gyökér. 258 00:18:32,010 --> 00:18:38,970 >> Szóval, mi ez az eredménye, hogy ez megy, hogy azon az úton, 259 00:18:38,970 --> 00:18:42,360 hogy én kapart korábban majd kapcsolja, hogy 260 00:18:42,360 --> 00:18:49,580 egy új elem, amit csak akarsz hívja it-- first_listing, például. 261 00:18:49,580 --> 00:18:52,900 De én elmegyek ez a tétel most, 262 00:18:52,900 --> 00:18:55,420 mert ez az, amit én használok itt. 263 00:18:55,420 --> 00:19:02,900 >> Tehát mondjuk azt akartam, hogy a leírás Az első kiküldetés Craigslist. 264 00:19:02,900 --> 00:19:04,740 Szóval menne le itt. 265 00:19:04,740 --> 00:19:10,660 Szeretném kattintson Elem vizsgálata ismét, mert ez a leírás. 266 00:19:10,660 --> 00:19:14,350 Mennék le ide, és lásd ha találok hogyan lehet, hogy 267 00:19:14,350 --> 00:19:16,530 képes legyen megtalálni ezt az egyedi címkét. 268 00:19:16,530 --> 00:19:19,530 És ebben az esetben, azt Az azonosító, ami elvezet minket 269 00:19:19,530 --> 00:19:26,810 hogy mi a következő módon keres Címkék, ami egy hashtag. 270 00:19:26,810 --> 00:19:30,670 >> Tehát osztályok, akkor Használja a dot-üzemeltető. 271 00:19:30,670 --> 00:19:38,610 Tehát .txt meghatározza egy osztály a txt, mivel a hash meghatározza egy azonosítót. 272 00:19:38,610 --> 00:19:43,720 Tehát ebben az esetben, a címke rész, és az azonosító postingbody. 273 00:19:43,720 --> 00:19:47,780 >> Tehát ez megy, és megállapítja, A first-- mert mi vagyunk 274 00:19:47,780 --> 00:19:51,200 segítségével at_css-- ez megy, és megkeresi az első elem, 275 00:19:51,200 --> 00:19:57,180 jön fel a tag a szekció és az ID postingbody. 276 00:19:57,180 --> 00:20:02,636 És akkor elérheti a szöveg elem ezen elem visszatért .text. 277 00:20:02,636 --> 00:20:06,230 És akkor tudjuk tárolni hogy a leírás. 278 00:20:06,230 --> 00:20:09,370 >> Tehát most, hogy van egy változó leírás, 279 00:20:09,370 --> 00:20:14,850 akkor talán csinálni, mondjuk, file I / O. Szóval fájl I / O Ruby 280 00:20:14,850 --> 00:20:21,310 nagyon hasonlít a fájl I / O C ahol megnyit egy fájlt. 281 00:20:21,310 --> 00:20:23,260 Lehet írni. 282 00:20:23,260 --> 00:20:25,060 És akkor majd zárja a fájlt. 283 00:20:25,060 --> 00:20:29,660 >> Tehát itt, mi csak nevezte meg a fájlt, akkor néhány önkényes változó. 284 00:20:29,660 --> 00:20:33,120 Mi is most tette ezt ide. 285 00:20:33,120 --> 00:20:39,630 Van egy változó, hogy mi tárolására A fájl megnyitása as File.open. 286 00:20:39,630 --> 00:20:46,370 És mi írásban ezt a fájlt, így nyissa meg a w üzemeltető. 287 00:20:46,370 --> 00:20:54,280 És akkor tesszük karaktersorozatot a fájlt a .puts üzemeltető. 288 00:20:54,280 --> 00:20:58,310 És akkor tesszük a változó, hogy mi szeretné írni a fájlt belül. 289 00:20:58,310 --> 00:21:00,200 És aztán csak zárja be a fájlt. 290 00:21:00,200 --> 00:21:04,000 >> Tehát, ha megy előre, és futtatni ezt, ez egy olyan dokumentum 291 00:21:04,000 --> 00:21:10,840 A description.txt amely Van ez a leírás benne. 292 00:21:10,840 --> 00:21:14,015 Tehát, ha futok it-- nincs. 293 00:21:14,015 --> 00:21:17,520 294 00:21:17,520 --> 00:21:23,330 Ez készített egy szöveges fájlt, Remélhetőleg ugyanezt. 295 00:21:23,330 --> 00:21:25,850 296 00:21:25,850 --> 00:21:33,290 Tehát ott lehetett volna az új küldemény hogy közbejött, miközben beszéltem. 297 00:21:33,290 --> 00:21:36,580 És valóban úgy néz ki, nem volt. 298 00:21:36,580 --> 00:21:43,380 Tehát, ha megy ez a klasszikus kerékpár, 1962-1966, amely úgy tűnik, hogy megfeleljen. 299 00:21:43,380 --> 00:21:45,620 És már megy is. 300 00:21:45,620 --> 00:21:51,250 >> Szóval ez a legalapvetőbb funkcionalitása kaparás. 301 00:21:51,250 --> 00:21:57,510 Mi volna ahelyett, Csak írásban ezt a fájlt, 302 00:21:57,510 --> 00:21:59,930 tudunk hozzá dolgokat egy tömbben. 303 00:21:59,930 --> 00:22:03,770 Tehát, ha kijelentem, három tömböt, cím, ár, és a leírás. 304 00:22:03,770 --> 00:22:06,310 305 00:22:06,310 --> 00:22:13,790 És mi működik a doki tartalmat most. 306 00:22:13,790 --> 00:22:16,940 Mi lehet átmenni és megtalálja a span.txt. 307 00:22:16,940 --> 00:22:21,710 És ne feledd, ez egy tömböt ad vissza Az összes elem, hogy úgy találja. 308 00:22:21,710 --> 00:22:27,300 És akkor a Ruby, akkor csak használ .Minden végiglépkedhetünk minden elemet 309 00:22:27,300 --> 00:22:28,410 A tömb. 310 00:22:28,410 --> 00:22:31,330 És akkor minden egyes tételre, Én csak fogom hívni 311 00:22:31,330 --> 00:22:34,620 egy linket, mert ez az, Lényegében mi az. 312 00:22:34,620 --> 00:22:46,830 >> Tehát ha tettem minden link.css dot a.hdrlnk, ez valójában megy a kapcsolatot 313 00:22:46,830 --> 00:22:58,280 és megállapította, ezen belül a linket egy másik HTML elem és a megfelelő osztályba. 314 00:22:58,280 --> 00:23:04,990 Tehát, ha arra gondolunk, milyen ez volt az span.txt, 315 00:23:04,990 --> 00:23:13,160 akkor a látó hadd menjen vissza valós quick-- belül span.txt 316 00:23:13,160 --> 00:23:17,490 van egy csomó más osztályokba. 317 00:23:17,490 --> 00:23:27,180 Tehát belülről span.txt keresünk egy olyan tag egy osztály hdrlnk. 318 00:23:27,180 --> 00:23:29,890 Szóval hadd találja, hogy A srácok gyorsan. 319 00:23:29,890 --> 00:23:37,390 320 00:23:37,390 --> 00:23:42,850 >> Tehát itt is látszik, hogy ez egy olyan tag ez leforgása osztály txt 321 00:23:42,850 --> 00:23:44,920 amely az osztály hdrlnk. 322 00:23:44,920 --> 00:23:47,610 És ez valóban így értette próbálunk megszerezni. 323 00:23:47,610 --> 00:23:54,680 >> Szóval most próbál tárolni az összes ezeknek a kapcsolatoknak belül a cím. 324 00:23:54,680 --> 00:23:59,545 És akkor fogunk nyomtatni ki minden egyes ilyen linkeket. 325 00:23:59,545 --> 00:24:00,360 Nem sajnálom. 326 00:24:00,360 --> 00:24:04,530 Fogunk kinyomtatni az ár minden ilyen. 327 00:24:04,530 --> 00:24:09,350 Szóval ez tényleg futtatni gyors és mit csinál. 328 00:24:09,350 --> 00:24:14,680 329 00:24:14,680 --> 00:24:17,720 >> Tehát ez alapvetően csak ment révén mind a kapcsolatok 330 00:24:17,720 --> 00:24:27,310 viszont elérhető a tag a szóban forgó, majd kihúzta az ár. 331 00:24:27,310 --> 00:24:33,910 És ez azért tettem, mert miután akkor mindent a címben, 332 00:24:33,910 --> 00:24:37,260 most már csak tárolt cím van. 333 00:24:37,260 --> 00:24:40,180 Már csak tárolni a kapcsolatot a tömb neve. 334 00:24:40,180 --> 00:24:47,720 És ebben a for ciklus működését, ahol ahelyett, hogy a.hdrlnk, 335 00:24:47,720 --> 00:24:50,490 keresünk egy span.price. 336 00:24:50,490 --> 00:24:56,500 Szóval, ha tudok csak nagyon gyorsan megtalálja az ár, ha vizsgáljuk meg a elemet, 337 00:24:56,500 --> 00:25:00,610 látni fogod, hogy ez egy arasznyi az osztályban az ár. 338 00:25:00,610 --> 00:25:04,670 És ez alapvetően hogyan mi megvagyunk az ár ott. 339 00:25:04,670 --> 00:25:10,040 >> Szóval ez az igazán alapesete kaparás. 340 00:25:10,040 --> 00:25:13,550 Így kap minden Az elemek egy oldalon 341 00:25:13,550 --> 00:25:16,510 hogy, mondjuk, már tudja az URL-t. 342 00:25:16,510 --> 00:25:21,050 >> Tehát ha azt akarjuk, hogy egy kicsit mélyebben, 343 00:25:21,050 --> 00:25:23,950 tudjuk kaparni oldalakat oldalakon. 344 00:25:23,950 --> 00:25:28,480 És ezt a példát, én lehet kimenetre egy CSV fájlba. 345 00:25:28,480 --> 00:25:39,510 Úgyhogy igénylő csv itt mert Ruby nem, belül is, 346 00:25:39,510 --> 00:25:42,350 van alkalmassága hogy csak a kimeneten CSV fájlokat. 347 00:25:42,350 --> 00:25:45,030 Szóval ez szuper egyszerű. 348 00:25:45,030 --> 00:25:48,710 Hadd menjen a következő. 349 00:25:48,710 --> 00:25:51,640 350 00:25:51,640 --> 00:25:57,170 Mi fedett file I / O. Tehát ez hasonló ahhoz, ahogy ez a C. 351 00:25:57,170 --> 00:26:00,870 És mielőtt rátérnénk a kimonó, Én csak azt mutatják, hogy tényleg gyors, hogyan 352 00:26:00,870 --> 00:26:02,790 kaparja oldalakon belül látnivalóit. 353 00:26:02,790 --> 00:26:10,040 >> Így már megtanultuk, hogyan tömböt deklarálni a Ruby. 354 00:26:10,040 --> 00:26:13,280 Szóval én csak nyilvánító csomó tetszőleges tömbök 355 00:26:13,280 --> 00:26:16,310 hogy én leszek az adattárolásra belül. 356 00:26:16,310 --> 00:26:20,680 doc működik ugyanúgy mint ahogy az előző fájlt. 357 00:26:20,680 --> 00:26:23,580 Bemegyünk, megtalálása minden egyes span.txt években. 358 00:26:23,580 --> 00:26:25,040 Azt már tudjuk, hogy. 359 00:26:25,040 --> 00:26:32,130 Ez az a konténer, amelyen belül az egyes láncszemnek az összes adatot, amit szeretnénk. 360 00:26:32,130 --> 00:26:40,800 >> Tehát itt mit csinálunk az, hogy minden Link a span class txt, megyünk 361 00:26:40,800 --> 00:26:45,720 és mi megtaláljuk a címkét, megállapította, az első eleme, hogy. 362 00:26:45,720 --> 00:26:49,937 Ne feledje, .css vissza egy tömbben, így nem lehet csak elérni úgy, ahogy van. 363 00:26:49,937 --> 00:26:51,520 Fogunk találni az első elemet. 364 00:26:51,520 --> 00:26:56,430 Még ha ez egy sor egy elemet, akkor használja ezt a szintaxist, 365 00:26:56,430 --> 00:26:58,800 majd húzza ki a href attribútum. 366 00:26:58,800 --> 00:27:01,800 >> Így volt ez korábban. 367 00:27:01,800 --> 00:27:04,440 Szóval ez ismerős. 368 00:27:04,440 --> 00:27:14,330 És így most van egy tömbben nevű ösvényein minden kedves linkek 369 00:27:14,330 --> 00:27:16,590 hogy fogunk használni kíván. 370 00:27:16,590 --> 00:27:21,350 Tehát, ha itt van ez a tömb összes Az utak, hogy szeretnénk használni, 371 00:27:21,350 --> 00:27:26,840 tudunk majd létrehozni egy elemet minden azoknak az oldalaknak amikor kinyitjuk az oldalon. 372 00:27:26,840 --> 00:27:31,150 Így például azt is láttuk, a A szintaxis előtt, ahol 373 00:27:31,150 --> 00:27:37,450 Ennek húr az interpoláció az utat itt, így a szintaxis csak a pálya. 374 00:27:37,450 --> 00:27:41,450 És tudnék nevezni ezt változó tetszőleges nevet. 375 00:27:41,450 --> 00:27:43,070 >> Ez a fontos. 376 00:27:43,070 --> 00:27:46,650 Ez a tömb, hogy akkor hozzáférhet az egyes elemek. 377 00:27:46,650 --> 00:27:52,400 De amikor azt mondják, az utat utak, ez azt jelenti, minden egyes eleme utak, 378 00:27:52,400 --> 00:27:55,150 hívják utat, és azt használd. 379 00:27:55,150 --> 00:27:59,266 Ez lényegében olyan, mint amikor nem egy hurok, és használja int i. 380 00:27:59,266 --> 00:28:04,000 Szóval lehet kezelni az utat, mint a változó, ami megnöveli. 381 00:28:04,000 --> 00:28:07,820 >> És akkor minden egyes ilyen, bemegy minden egyes ilyen linkeket. 382 00:28:07,820 --> 00:28:11,710 Mert mi tárolja azt elem lapon így hozunk létre egy új oldalt minden alkalommal 383 00:28:11,710 --> 00:28:13,330 mi hozzáférni. 384 00:28:13,330 --> 00:28:20,560 És akkor azon belül az új oldalon keresse span.postingtitletext, span.price, 385 00:28:20,560 --> 00:28:22,240 majd rész # postingbody. 386 00:28:22,240 --> 00:28:28,430 Mi már lefedett rész # postingbody Mikor megnéztük a leírás. 387 00:28:28,430 --> 00:28:34,890 >> Szóval mehetünk látni a Craigslist hozzászólás, ha csak ránézünk a cím, 388 00:28:34,890 --> 00:28:38,810 látod itt, span postingtitletext. 389 00:28:38,810 --> 00:28:41,390 És ez miért van ott. 390 00:28:41,390 --> 00:28:49,120 És akkor az ár, akkor elérheti a span class ára. 391 00:28:49,120 --> 00:28:54,480 >> Így is lehet, hogy talán szeretné tárolni az URL. 392 00:28:54,480 --> 00:28:58,580 Ezért most is csak futtatni ezt ismét tárolja egy tömbben, 393 00:28:58,580 --> 00:29:01,150 mert ha keres Craigslist, te 394 00:29:01,150 --> 00:29:05,290 Valószínűleg szeretne majd egy módja annak, hogy, ha látsz valamit, ami érdekli, 395 00:29:05,290 --> 00:29:06,620 menj vissza az oldalon. 396 00:29:06,620 --> 00:29:10,480 Szóval csak szeretné tárolni az URL hivatkozásokat kedvéért. 397 00:29:10,480 --> 00:29:13,840 398 00:29:13,840 --> 00:29:19,630 >> Ez csak alapvetően Egy másik szintaxis a for ciklus. 399 00:29:19,630 --> 00:29:26,360 Én is csak ezt paths.each helyett Az az útvonal utak index. 400 00:29:26,360 --> 00:29:31,280 És ez a szintaxis Ruby for-- út, amit tettünk fel ide, 401 00:29:31,280 --> 00:29:33,920 nyilvánító változó minden egyes tételt. 402 00:29:33,920 --> 00:29:38,540 És index viselkedik Az i-C hurok. 403 00:29:38,540 --> 00:29:41,280 Szóval lehet nyomon követni hogy mi az index. 404 00:29:41,280 --> 00:29:45,200 >> Tehát itt csak egy kicsit kényelmes dolog 405 00:29:45,200 --> 00:29:46,950 ha éppen fut a lehúzó. 406 00:29:46,950 --> 00:29:50,580 Ha kaparás több száz oldalas, meggyőződni arról, hogy ez nem lóg, 407 00:29:50,580 --> 00:29:53,320 akkor csak kimenet, Én belép az oldalra, 408 00:29:53,320 --> 00:29:55,960 és gondoskodjanak arról, hogy ez ma is tart. 409 00:29:55,960 --> 00:29:59,250 De a mi szempontunkból, hiszen van egy száz példány, 410 00:29:59,250 --> 00:30:08,000 Megyek eléréséhez mindössze hárman hogy mi ne fogyjon el az idő itt. 411 00:30:08,000 --> 00:30:13,040 >> De mielőtt erre, én csak Megmutatom, nagyon gyors, 412 00:30:13,040 --> 00:30:16,940 Én is kimenetre a cím, ár, leírás, és URL- 413 00:30:16,940 --> 00:30:19,600 Az egyes linkek, hogy én már kapart. 414 00:30:19,600 --> 00:30:23,720 És akkor ez még csak a szintaxis a CSV könyvtár. 415 00:30:23,720 --> 00:30:25,240 Megnyit egy CSV. 416 00:30:25,240 --> 00:30:27,070 Ez mit fogok nevezni. 417 00:30:27,070 --> 00:30:29,430 Nyisd ki a write do. 418 00:30:29,430 --> 00:30:33,830 És akkor CSV lesz a fájl te bevitelére mindent. 419 00:30:33,830 --> 00:30:37,800 Ez csak egy józan csekket hogy tudjam, hogy ez fut. 420 00:30:37,800 --> 00:30:41,240 És ez az én józan ellenőrzés Fontos tudni, hogy ez elkészült. 421 00:30:41,240 --> 00:30:46,670 Szóval én üzembe cím egy sort A CSV, ár, url, leírás, 422 00:30:46,670 --> 00:30:49,420 Az összes sorokra a CSV. 423 00:30:49,420 --> 00:30:53,410 >> Tehát, ha megyünk, és fuss ez now-- és én csak 424 00:30:53,410 --> 00:31:04,710 győződjön meg arról, hogy hagytam it-- helyett csak kimenetre, hogy a terminál, 425 00:31:04,710 --> 00:31:09,750 mi kell egy CSV fájl előállítása után. 426 00:31:09,750 --> 00:31:13,500 Tehát itt láthatjuk a CSV fájlt, hogy a már előállított. 427 00:31:13,500 --> 00:31:19,330 Ez a kimenet a menekülsz, hogy én csak futott. 428 00:31:19,330 --> 00:31:23,030 Mint látható itt, elérése oldal 0, 1, 2, 3. 429 00:31:23,030 --> 00:31:27,400 Ezek azok a címek, árak, leírások. 430 00:31:27,400 --> 00:31:31,710 És ha megnézzük ezt a CSV fájlt, amit létrehoztunk, 431 00:31:31,710 --> 00:31:35,700 látod, hogy outputted itt. 432 00:31:35,700 --> 00:31:40,350 Ez nem az Excel, így nem formázott sorokba és oszlopokba. 433 00:31:40,350 --> 00:31:45,140 De el lehet képzelni, milyen ez lehet formázni. 434 00:31:45,140 --> 00:31:47,740 >> CSV jelentése vesszővel elválasztva. 435 00:31:47,740 --> 00:31:50,090 Így el lehet képzelni, ez lehet egy sorban. 436 00:31:50,090 --> 00:31:54,700 És minden egyes vessző lenne jelzik külön oszlopban. 437 00:31:54,700 --> 00:32:00,010 Csak egy szót caution-- Néha te 438 00:32:00,010 --> 00:32:02,260 kaparás a dolgokat egy csomó vesszővel. 439 00:32:02,260 --> 00:32:05,100 Tehát ha a kimenetre ez egy CSV fájlba, 440 00:32:05,100 --> 00:32:10,340 lehet, hogy nem a kimeneti ahogy azt gondolnánk. 441 00:32:10,340 --> 00:32:16,770 >> Szóval ez lényegében az összes van, hogy kaparás alap HTML 442 00:32:16,770 --> 00:32:20,110 oldalak Nokogiri. 443 00:32:20,110 --> 00:32:26,000 >> Tehát az internet lény innovatív, mert közbejött 444 00:32:26,000 --> 00:32:33,220 egy jobban automatizált és GUI változata, bár kevésbé robusztus 445 00:32:33,220 --> 00:32:35,540 változata kaparás különböző honlapokon. 446 00:32:35,540 --> 00:32:39,060 És mi célból Majd bemutatójával 447 00:32:39,060 --> 00:32:42,920 Chrome nevű kiterjesztést kimonó. 448 00:32:42,920 --> 00:32:46,690 És csak annyit kell tennie, hogy navigálni A kívánt oldal kaparja. 449 00:32:46,690 --> 00:32:48,590 Rákattint egy érdeklődési köre. 450 00:32:48,590 --> 00:32:51,510 Kalibrálja a területeken, mert akkor automatikusan 451 00:32:51,510 --> 00:32:54,360 érzékeli, amit gondol azt szeretné, hogy kaparás, 452 00:32:54,360 --> 00:32:56,280 és akkor csak létrehozni egy API. 453 00:32:56,280 --> 00:33:03,700 >> Tehát ha mi voltunk annak bizonyítására, hogy a Craigslist, hogy valójában nem működik. 454 00:33:03,700 --> 00:33:08,290 És ez az, amit én akartam vissza mondván róla, hogy nem olyan erős. 455 00:33:08,290 --> 00:33:10,320 Ez baj létre az API-t. 456 00:33:10,320 --> 00:33:13,400 De mint a demonstrációs hogy mit fog csinálni, 457 00:33:13,400 --> 00:33:17,460 ha telepíti a Chrome-bővítmény, minden, amit csinál akkor kattints rá. 458 00:33:17,460 --> 00:33:21,750 Ez Kimonofies az oldalt, akkor kattintson a dolog, amit szeretnénk forgatókönyvet. 459 00:33:21,750 --> 00:33:24,480 >> Tehát ha én kattintva hogy szeretné kiemelni 460 00:33:24,480 --> 00:33:28,130 mit gondol akarok lehet kaparás le az oldalt. 461 00:33:28,130 --> 00:33:33,660 Úgyhogy talán hívni ezt listáját. 462 00:33:33,660 --> 00:33:36,430 Így sok példány választottam. 463 00:33:36,430 --> 00:33:43,810 És én is csak megerősíteni, sem cáfolni néhány a többi javasolt listák 464 00:33:43,810 --> 00:33:49,600 hogy azt felvenni mi fog kaparni. 465 00:33:49,600 --> 00:33:52,330 >> Tehát most már látjuk van Száz kiválasztott elem. 466 00:33:52,330 --> 00:33:58,060 Ha azt szeretnénk, hogy egy másik területen, hogy én is kaparjuk, amely ehhez kapcsolódik, 467 00:33:58,060 --> 00:34:02,540 mondani akarok kaparja az ár is, akkor meg tudom csinálni ugyanazt. 468 00:34:02,540 --> 00:34:06,190 469 00:34:06,190 --> 00:34:11,550 >> Tehát itt egy bemutató, hogyan ez sokkal kevésbé robusztus, mert most ez a 470 00:34:11,550 --> 00:34:15,050 felvette, hanem a város Az csak az ára, hogy akarok. 471 00:34:15,050 --> 00:34:16,989 És most felvette 200 dolgokat. 472 00:34:16,989 --> 00:34:19,880 Akkor menj vissza, és törli. 473 00:34:19,880 --> 00:34:21,449 Meg lehet próbálni újra. 474 00:34:21,449 --> 00:34:24,250 De nincs garancia. 475 00:34:24,250 --> 00:34:29,909 Ez hogyan működik ez néha. 476 00:34:29,909 --> 00:34:32,969 Amint látod itt, most azt mondja, 96 itt. 477 00:34:32,969 --> 00:34:37,000 Ez felvette a legtöbb linkek kívánt kaparja, de nem 478 00:34:37,000 --> 00:34:39,280 feltétlenül mindegyik. 479 00:34:39,280 --> 00:34:43,909 >> Egy másik hasznos eszköz a kimonó bár az mehetsz Speciális funkciók 480 00:34:43,909 --> 00:34:47,980 Itt, menj Részletes, és akkor megmutatja 481 00:34:47,980 --> 00:34:53,139 A bontást a sajátos módon hozzáférhessenek a HTML 482 00:34:53,139 --> 00:34:54,909 címkék kívánt kaparja. 483 00:34:54,909 --> 00:35:01,450 Tehát listák, ha megnézi itt, ha nyilvános div p span span, 484 00:35:01,450 --> 00:35:06,030 akkor valójában csak használ ez a Nokogiri kódot, 485 00:35:06,030 --> 00:35:10,780 ahol előtte voltunk span.txt eléréséhez mindegyik felsorolás. 486 00:35:10,780 --> 00:35:13,270 Ha én csak azt a szöveget a listák, 487 00:35:13,270 --> 00:35:18,950 Tudtam bemeneti div helyet p helyet span tér span tér egy, 488 00:35:18,950 --> 00:35:21,570 és ez elérni ugyanazt a hatást. 489 00:35:21,570 --> 00:35:26,320 És azoknak, akik érdeklődnek A reguláris kifejezések, 490 00:35:26,320 --> 00:35:31,670 ez történik, hogy Önnek is a rendszeres véleménynyilvánítás egyfajta string input 491 00:35:31,670 --> 00:35:34,900 megtalálni azokat a dolgokat akarsz találni. 492 00:35:34,900 --> 00:35:44,130 >> Szóval van egy másik jó tulajdonsága A kimonó ahol tördeléséhez, 493 00:35:44,130 --> 00:35:47,780 amely nem csak tudok kaparja Az eredmények ezen az oldalon, 494 00:35:47,780 --> 00:35:50,890 Én kattintson erre a kis gombra itt, tördelés, 495 00:35:50,890 --> 00:35:55,580 adja meg a gombot, amely vigyen el a következő oldalra, 496 00:35:55,580 --> 00:35:59,500 és akkor csak tudom, hogy akkor hajtogat a következő oldalra, 497 00:35:59,500 --> 00:36:04,120 majd kaparjuk összes the-- mindaddig mivel ez ugyanaz a formátum course-- 498 00:36:04,120 --> 00:36:06,110 menekülsz az összes ilyen linkeket is. 499 00:36:06,110 --> 00:36:15,230 >> Szóval azért, mert kimonó nem akar dolgozni Craigslist, mit tettünk 500 00:36:15,230 --> 00:36:19,790 Már van Kimonofied a Harvard Crimson. 501 00:36:19,790 --> 00:36:29,380 Már kihúzta néhány fajta Top Kiemelt cikkek, erősítse meg itt. 502 00:36:29,380 --> 00:36:33,090 Mondja el, mindezeket. 503 00:36:33,090 --> 00:36:35,830 Már össze ezt az API- Önnek előre az időben. 504 00:36:35,830 --> 00:36:38,990 De különben mit tenne, A akkor csak a Kész gombra. 505 00:36:38,990 --> 00:36:40,940 Írja be a API részleteket. 506 00:36:40,940 --> 00:36:45,260 Meg azt, hogy bármelyik automatikus vagy manuális csúszás. 507 00:36:45,260 --> 00:36:48,460 Szóval lehet frissíteni a adatok 15 percenként, 508 00:36:48,460 --> 00:36:50,330 heti, napi, amit akarsz. 509 00:36:50,330 --> 00:36:51,160 Nevezze el API. 510 00:36:51,160 --> 00:36:52,790 Hozza létre az API-t. 511 00:36:52,790 --> 00:36:58,460 Az Ön javára, amit teremtett a Bíbor címlapon API már. 512 00:36:58,460 --> 00:37:02,480 >> Szóval csak létrehozni fiók a kimonó, és ez 513 00:37:02,480 --> 00:37:06,240 tárolja az összes API-k az Ön számára. 514 00:37:06,240 --> 00:37:10,330 Tehát lényegében ez minden Külön különböző karcolásoktól. 515 00:37:10,330 --> 00:37:18,250 >> Tehát, ha megnézzük itt, ez a vélemények linkeket, hogy én már begyűjtött. 516 00:37:18,250 --> 00:37:21,290 Ezek a kiemelt linkek, hogy én már begyűjtött. 517 00:37:21,290 --> 00:37:24,090 És ezek a legolvasottabb linkek, hogy már összegyűjtött 518 00:37:24,090 --> 00:37:27,120 ettől a legutóbbi API ga. 519 00:37:27,120 --> 00:37:30,790 >> Tehát, ha itt is látszik, ezek lennének a kiemelt, 520 00:37:30,790 --> 00:37:34,130 ezek lennének a véleményeket, amely ebben a példában, 521 00:37:34,130 --> 00:37:38,150 Már kombinált mindet egyetlen gyűjteménye. 522 00:37:38,150 --> 00:37:42,780 De ha csak játszadozik vele egy kicsit, akkor feldarabolja 523 00:37:42,780 --> 00:37:45,090 és azt szét kell osztani azonban azt szeretnénk, hogy mindaddig, 524 00:37:45,090 --> 00:37:47,520 mivel a formázás kicsit más. 525 00:37:47,520 --> 00:37:51,320 >> Csak játszani körül ezt a csúszás létre, az egyik árnyoldala 526 00:37:51,320 --> 00:37:58,120 A akkor csak kúszik 25 oldalt egy időben. 527 00:37:58,120 --> 00:38:00,430 Ez az egyik korlátozó tényező. 528 00:38:00,430 --> 00:38:03,060 De itt, ha meg azt A kézi csúszás, ez 529 00:38:03,060 --> 00:38:06,100 hogyan lehet mondani, hogy Információi frissítéséhez. 530 00:38:06,100 --> 00:38:11,010 És itt láthatjuk a csúszás története mindent, hogy már mászott. 531 00:38:11,010 --> 00:38:16,000 És ti is megy vissza, iratkozzon fel, játszadozni a különböző módon 532 00:38:16,000 --> 00:38:20,340 hogy lehet módosítani, és az Ön adatait. 533 00:38:20,340 --> 00:38:24,580 >> Kimonó be lehet állítani, hogy kaparja linkek a linkek. 534 00:38:24,580 --> 00:38:29,700 És akkor erre először kaparás a hivatkozások listáját, 535 00:38:29,700 --> 00:38:35,390 majd használja ezt az API, mint egy leugrik pont egy másik API 536 00:38:35,390 --> 00:38:36,710 hogy megteremtse a forgatókönyvet. 537 00:38:36,710 --> 00:38:42,040 De ez sokkal bonyolultabb, mint mit fogunk bejutni ma. 538 00:38:42,040 --> 00:38:44,270 >> Szóval ez kimonó. 539 00:38:44,270 --> 00:38:46,980 Megbeszéljük az érvek és hátrányairól Nokogiri és kimonó. 540 00:38:46,980 --> 00:38:50,380 >> Nokogiri, ez tényleg gyors. 541 00:38:50,380 --> 00:38:51,640 Ez könnyen ellenőrizhető. 542 00:38:51,640 --> 00:38:55,910 Tudod csak hoz valami konzol, könnyen konfigurálható. 543 00:38:55,910 --> 00:39:00,400 Tudod hogy pontosan melyik azt szeretné, hogy kaparja és tárolja. 544 00:39:00,400 --> 00:39:02,060 Nincsenek határok oldalon. 545 00:39:02,060 --> 00:39:08,010 Igazából arra használta, hogy kaparja, mint 1800 dél-afrikai iskolai honlapok 546 00:39:08,010 --> 00:39:10,870 E-mailek egy gyakorlat, hogy én tettem. 547 00:39:10,870 --> 00:39:16,060 >> Szóval ez lehetséges, de a legjobb gyakorlatok az lenne, hogy osszuk el a forgatókönyvet. 548 00:39:16,060 --> 00:39:19,310 Mert ha ez nem sikerül, akkor nem kap semmit. 549 00:39:19,310 --> 00:39:22,790 De ha száz, talán 200 oldalt egy időben, 550 00:39:22,790 --> 00:39:27,840 akkor van némi esélye legalább szerzés ez darabonként, különösen 551 00:39:27,840 --> 00:39:30,280 ha rossz interneten. 552 00:39:30,280 --> 00:39:32,720 >> Sajnos ez csak kaparja HTML. 553 00:39:32,720 --> 00:39:35,190 Tehát, ha van dinamikusan betöltött pages-- 554 00:39:35,190 --> 00:39:39,480 és megmutatom neked egy példát mint Kajak egy second-- 555 00:39:39,480 --> 00:39:42,270 Nokogiri sajnos nem kaparja, hogy. 556 00:39:42,270 --> 00:39:45,700 >> De kimonó is könnyen használható. 557 00:39:45,700 --> 00:39:48,330 Ahogy láttam, ez lényegében egy pontot és kattintson. 558 00:39:48,330 --> 00:39:50,260 Meg lehet kaparni a JavaScript. 559 00:39:50,260 --> 00:39:53,790 Sajnos, van egy maximális hogy hány oldalt lehet kaparni. 560 00:39:53,790 --> 00:39:55,710 Néha ez egy kicsit nehezen konfigurálható. 561 00:39:55,710 --> 00:39:57,240 Ez összezavarodik. 562 00:39:57,240 --> 00:40:00,920 De határozottan valami, hogy fontolja 563 00:40:00,920 --> 00:40:05,930 ha nem próbál egy szuper erős fenntartható kaparja. 564 00:40:05,930 --> 00:40:09,010 Ha csak azt, hogy mindent le egy oldalt gyorsan, 565 00:40:09,010 --> 00:40:10,970 majd kimonó egy igazán jó eszköz használatát. 566 00:40:10,970 --> 00:40:16,490 És mint már említettem, van A speciális jellemzője kimonó 567 00:40:16,490 --> 00:40:19,260 amely megmutatja, hogyan kell hozzáférhet az egyedülálló HTML 568 00:40:19,260 --> 00:40:24,210 elem, ami szuper hasznos is, ha dolgozik Nokogiri. 569 00:40:24,210 --> 00:40:30,370 >> Tehát, ha megyünk a Kajak helyszínen, Például ott látsz, is-- 570 00:40:30,370 --> 00:40:31,750 vagy talán nem látod. 571 00:40:31,750 --> 00:40:38,910 De ha én megmutatom az URL Kajak, ez valójában csak a forrás URL-jét. 572 00:40:38,910 --> 00:40:43,800 Ez az URL előtt, hogy módosította bármilyen JavaScript scriptek 573 00:40:43,800 --> 00:40:45,350 hogy az általuk folyik. 574 00:40:45,350 --> 00:40:52,420 És ez meg fog máshogy néznek re ellenőrzésre az elem. 575 00:40:52,420 --> 00:40:55,940 >> Tehát, ha megy keresztül, és akkor egyeznek meg a Elem vizsgálata 576 00:40:55,940 --> 00:41:00,340 kódot a forráskódot, hogy valóban más lesz. 577 00:41:00,340 --> 00:41:05,640 És ez lényegében miért Nokogiri nem kaparja dinamikusan betöltött oldalakat. 578 00:41:05,640 --> 00:41:08,810 Mivel Nokogiri van kaparás a forrás URL-t, 579 00:41:08,810 --> 00:41:16,310 mivel kimonó valójában kaparás, amit te alapvetően 580 00:41:16,310 --> 00:41:18,260 látva select elem. 581 00:41:18,260 --> 00:41:23,880 >> Tehát, ha megyek át, és én megpróbálja Kimonofy Kajak, 582 00:41:23,880 --> 00:41:26,600 Én valóban megy keresztül, és válassza ki az árat. 583 00:41:26,600 --> 00:41:32,360 Ez egy kicsit nehezebb, és ebben az esetben, ez 584 00:41:32,360 --> 00:41:36,600 valóban látta ezt az árat mivel a különböző ezekből. 585 00:41:36,600 --> 00:41:41,110 Tehát mivel akkor configure-- vagy Ha ez nem lenne dinamikusan betöltött, 586 00:41:41,110 --> 00:41:43,620 meg tudná beállítani Nokogiri hogy az összes ilyen. 587 00:41:43,620 --> 00:41:48,230 >> Mivel a formázás valamivel eltérő ezt a hirdetést 588 00:41:48,230 --> 00:41:51,280 mivel többi részéhez képest közülük, és láthatjuk itt 589 00:41:51,280 --> 00:41:54,830 ez valóban elment, és kiválasztotta az összes járat áron. 590 00:41:54,830 --> 00:42:01,200 Talán én szeretném kiválasztani repülési idő is. 591 00:42:01,200 --> 00:42:04,700 És tudom megy keresztül, és fajta beállítani ezt. 592 00:42:04,700 --> 00:42:06,950 Nem akarom, hogy. 593 00:42:06,950 --> 00:42:10,200 Csak azt akarom, a következő járat idejét. 594 00:42:10,200 --> 00:42:17,030 És ismét egy pár ilyen megy keresztül, ez lesz a kép. 595 00:42:17,030 --> 00:42:19,080 Tehát kimonó csinos okos. 596 00:42:19,080 --> 00:42:21,900 Ez csak nem annyira erős. 597 00:42:21,900 --> 00:42:26,710 >> Vannak más alternatívák, amelyek segítségével. 598 00:42:26,710 --> 00:42:31,600 És én megmutatom őket ide. 599 00:42:31,600 --> 00:42:35,790 Ha kényelmesebb Python helyett Ruby talán, 600 00:42:35,790 --> 00:42:39,290 van egy könyvtár nevű Gyönyörű leves. 601 00:42:39,290 --> 00:42:40,430 Ezekkel is. 602 00:42:40,430 --> 00:42:42,270 Ez nagyon hasonlít a Nokogiri. 603 00:42:42,270 --> 00:42:44,620 Van egy pár funkciókat. 604 00:42:44,620 --> 00:42:52,160 Megtalálható egy HTML tag- majd feljebb vagy oldalirányban mozogni. 605 00:42:52,160 --> 00:42:54,690 >> Van PyQt. 606 00:42:54,690 --> 00:42:57,820 Ez valóban kaparja dinamikus oldalakat, mert ez a fajta 607 00:42:57,820 --> 00:43:02,540 egy WebKit, hogy úgy tesz, mintha a böngésző anélkül, ténylegesen 608 00:43:02,540 --> 00:43:03,670 hogy egy böngésző. 609 00:43:03,670 --> 00:43:07,490 Így lenne megvárni az összes JavaScript betölteni először, majd 610 00:43:07,490 --> 00:43:09,560 menjen be, és megpróbálja kaparja az oldalon. 611 00:43:09,560 --> 00:43:13,560 >> Ha azt szeretnénk, hogy kibír Ruby, lehet menni egy szinttel fel Nokogiri. 612 00:43:13,560 --> 00:43:17,650 Használhatja Vízidisznó a A Poltergeist wrapper. 613 00:43:17,650 --> 00:43:22,910 És ez valóban Lényegében ugyanezt csinálja 614 00:43:22,910 --> 00:43:26,610 mint PyQt, ami ez egy WebKit. 615 00:43:26,610 --> 00:43:29,610 Arra vár, hogy a JavaScript betölteni először. 616 00:43:29,610 --> 00:43:33,340 Ha hegedű körül vele elég, akkor is kap, hogy kattintson a dolgokat. 617 00:43:33,340 --> 00:43:42,780 >> Szóval, ha van egy link, hogy nem egy klasszikus href ahol 618 00:43:42,780 --> 00:43:46,350 az út könnyen megközelíthető, és ez valami JavaScript dolog, ami érzékeli 619 00:43:46,350 --> 00:43:49,490 Egy kattintás, akkor valójában csinálni. 620 00:43:49,490 --> 00:43:53,430 Az egyre népszerűbb könyvtár szimulálni egy felhasználó 621 00:43:53,430 --> 00:43:56,390 van JavaScript, ami PhantomJS. 622 00:43:56,390 --> 00:44:01,010 Ez nyilvánvalóan kaparja dinamikus oldalak, mert ez lényegében 623 00:44:01,010 --> 00:44:04,270 úgy tesz, mintha Chrome anélkül, hogy a felhasználói felület. 624 00:44:04,270 --> 00:44:09,970 >> És aztán, persze a legtöbb robusztus, de leglassabb lehetőség, 625 00:44:09,970 --> 00:44:13,260 egy szelén böngésző automatizálás. 626 00:44:13,260 --> 00:44:15,550 És sajnos, te nem lesz 627 00:44:15,550 --> 00:44:19,770 tudni, hogy ezt az Ön CS50 IDE. 628 00:44:19,770 --> 00:44:24,140 Mert alapvetően mi nem az, hogy elindul a Chrome, 629 00:44:24,140 --> 00:44:27,090 Firefox, bármilyen böngésző hogy a használni kívánt, 630 00:44:27,090 --> 00:44:32,570 és hogy nyomában talán az egér mozgás, amit beír, 631 00:44:32,570 --> 00:44:35,170 és ez csak egyfajta automatizálja ezt a folyamatot. 632 00:44:35,170 --> 00:44:42,070 Tehát alakult, mint egyfajta honlap automatizálási tesztelő eszköz. 633 00:44:42,070 --> 00:44:45,910 De egy csomó ember használja A szelén kaparja honlapok 634 00:44:45,910 --> 00:44:49,990 amit egyébként van egy sok nehézség kaparás 635 00:44:49,990 --> 00:44:53,700 néhány ilyen más, gyorsabb eszközöket. 636 00:44:53,700 --> 00:44:57,530 >> Szóval ez minden, amim van a web kaparás. 637 00:44:57,530 --> 00:44:58,090 Érezd jól magad. 638 00:44:58,090 --> 00:45:01,762 639 00:45:01,762 --> 00:45:02,680 >> Közönség: Kérdés. 640 00:45:02,680 --> 00:45:04,016 >> ROBERT KRABEK: Igen. 641 00:45:04,016 --> 00:45:12,840 >> Közönség: Van-e olyan mechanizmus a hash A honlapon így lehet alapvetően 642 00:45:12,840 --> 00:45:14,207 megy keresztül, hogy a későbbiekben. 643 00:45:14,207 --> 00:45:15,040 ROBERT KRABEK: Igen. 644 00:45:15,040 --> 00:45:21,530 Így tesszük a, a mi Például mind a ketten, 645 00:45:21,530 --> 00:45:24,980 tesszük a teljes honlapját doc. 646 00:45:24,980 --> 00:45:31,260 És így már valóban csak hogy a változó doc és kiírja egy fájlba. 647 00:45:31,260 --> 00:45:35,490 Tehát, ha akartam, nem tudtam írd ki, mint egy HTML fájlt, 648 00:45:35,490 --> 00:45:39,280 majd ahelyett, hogy a OpenURI és a curl kérelmet, 649 00:45:39,280 --> 00:45:43,520 akkor tudtam csak megnyitni doc HTML és keressen rá arra. 650 00:45:43,520 --> 00:45:47,960 >> Közönség: De tudod megőrizni az a fajta online élmény 651 00:45:47,960 --> 00:45:48,930 míg te nem elérhető. 652 00:45:48,930 --> 00:45:51,013 Például. ha éppen repülő több órán keresztül, 653 00:45:51,013 --> 00:45:54,070 Azt akarom, hogy alapvetően archívum Az egész honlap. [NEM HALLHATÓ] 654 00:45:54,070 --> 00:45:58,780 >> ROBERT KRABEK: Igen, ez exactly-- így szó, hogy ez mit is csinál 655 00:45:58,780 --> 00:46:03,010 A túl sok időt vesz mindent ez lenne a következő URL. 656 00:46:03,010 --> 00:46:11,280 Ha tehát futott USE, ez figyelembe mindezt HTML, 657 00:46:11,280 --> 00:46:14,590 és ez tárolás belül a változó doki. 658 00:46:14,590 --> 00:46:17,290 Így aztán azt csinálsz, amit akarsz csinálni doc. 659 00:46:17,290 --> 00:46:18,575 Kivezetheti egy fájlba. 660 00:46:18,575 --> 00:46:19,950 Közönség: De ez nem kapcsolódik fel. 661 00:46:19,950 --> 00:46:20,780 Ez nem dinamikus. 662 00:46:20,780 --> 00:46:22,770 Ez nem rekurzív, ugye? 663 00:46:22,770 --> 00:46:24,016 Látod, mire gondolok? 664 00:46:24,016 --> 00:46:28,359 Próbálom alapvetően egyfajta hash Az egész honlap a merevlemezünkön 665 00:46:28,359 --> 00:46:31,150 így tudtam alapvetően csinálni néhány órán internet nélkül. 666 00:46:31,150 --> 00:46:32,025 >> ROBERT KRABEK: Így van. 667 00:46:32,025 --> 00:46:37,140 Tehát ha én had-- így hol a fájl I / O? 668 00:46:37,140 --> 00:46:47,766 Szóval ez a fájl I / O. Tehát mondjuk helyett E hívom ezt a craigslist.html. 669 00:46:47,766 --> 00:46:52,620 670 00:46:52,620 --> 00:46:53,940 Én nyitni, hogy akár. 671 00:46:53,940 --> 00:46:59,020 Lennék helyezi doc bele. 672 00:46:59,020 --> 00:47:00,470 Becsukom a fájlt. 673 00:47:00,470 --> 00:47:05,410 És akkor csak azért, mert a CS50 IDE ez a felhő, ami bármi. 674 00:47:05,410 --> 00:47:07,710 Én is megy itt. 675 00:47:07,710 --> 00:47:09,320 Tudom letölteni a fájlt. 676 00:47:09,320 --> 00:47:11,830 És akkor ez lenne az én merevlemezére. 677 00:47:11,830 --> 00:47:13,930 Szóval meg tudod csinálni így. 678 00:47:13,930 --> 00:47:18,830 Vagy ha éppen otthon, nem használja a CS50 IDE, mint a Sublime, vagy valami, 679 00:47:18,830 --> 00:47:21,900 ez még könnyebb, mert ez mind helyben rendelkezésre álló, 680 00:47:21,900 --> 00:47:23,020 nem kötődik az interneten. 681 00:47:23,020 --> 00:47:24,720 >> Közönség: Értem. 682 00:47:24,720 --> 00:47:26,580 Ez egy adott problémát. 683 00:47:26,580 --> 00:47:30,410 Meg tudod tenni rekurzív úgy, hogy menj több réteg mély fajta dolog? 684 00:47:30,410 --> 00:47:33,801 >> ROBERT KRABEK: tudom letölteni mappák valamint, ha ez az, amit kérsz. 685 00:47:33,801 --> 00:47:34,426 Közönség: Igen. 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