1 00:00:00,000 --> 00:00:03,234 >> [Музички] 2 00:00:03,234 --> 00:00:05,275 3 00:00:05,275 --> 00:00:06,400 РОБЕРТ KRABEK: Здраво, момци. 4 00:00:06,400 --> 00:00:09,980 Моето име е Роберт Krabek, и Јас ќе ви учењето момци 5 00:00:09,980 --> 00:00:15,470 како да се изгребе веб со Nokogiri, која е библиотека Руби, 6 00:00:15,470 --> 00:00:17,566 и Кимоно, што е продолжување Хром. 7 00:00:17,566 --> 00:00:20,940 8 00:00:20,940 --> 00:00:25,010 >> Значи прво постои неколку работи кои што 9 00:00:25,010 --> 00:00:28,790 можете да направите ако Можеби сте биле прават сите psets досега 10 00:00:28,790 --> 00:00:31,170 и вашиот работен простор е добивање малку полна. 11 00:00:31,170 --> 00:00:37,060 Ние всушност може само оди и се создаде нов простор за вас 12 00:00:37,060 --> 00:00:41,220 само да се направи сосема нов проект во. 13 00:00:41,220 --> 00:00:46,160 Па ако не сакаат да продолжат работа во проект дефиниција CS50 14 00:00:46,160 --> 00:00:49,080 дека во моментов имаат, се чувствуваат слободни, и може да се само 15 00:00:49,080 --> 00:00:54,700 инсталирате Nokogiri со CFLAGS equals-- дијамант инсталирате nokogiri. 16 00:00:54,700 --> 00:00:56,930 Но инаку јас ќе ви покажам како да поставите нова нагоре. 17 00:00:56,930 --> 00:01:01,210 И тогаш тоа е во суштина паѓајќи повеќе обука тркала. 18 00:01:01,210 --> 00:01:07,120 А ти си кодирање како да сте биле само кодирање во Високата или нешто. 19 00:01:07,120 --> 00:01:12,365 Значи, ако ние го префрли во текот. 20 00:01:12,365 --> 00:01:14,930 21 00:01:14,930 --> 00:01:18,690 >> Така велат дека ова е вашата сегашна CS 50 проект. 22 00:01:18,690 --> 00:01:21,490 Вие само може да оди Cloud9 тука. 23 00:01:21,490 --> 00:01:22,725 Можете да одат на семафорот. 24 00:01:22,725 --> 00:01:26,720 25 00:01:26,720 --> 00:01:29,950 Тоа треба да се донесе до табот работните површини. 26 00:01:29,950 --> 00:01:32,980 А потоа можете да кликнете тука, се создаде нов работен простор. 27 00:01:32,980 --> 00:01:37,600 Именува вашиот нов простор, можеби тест, или стружење. 28 00:01:37,600 --> 00:01:42,700 И потоа кликнете на овој обичај табот тука, наместо табот CS50 шаблони. 29 00:01:42,700 --> 00:01:45,155 А потоа ќе може да оди и да се создаде нов простор за работа. 30 00:01:45,155 --> 00:01:48,280 >> Јас веќе се создаде простор за работа тука. 31 00:01:48,280 --> 00:01:50,640 Па ние ќе се работи со ова. 32 00:01:50,640 --> 00:01:55,380 И ако се создаде нова работна површина, така со јазичето прилагодено, 33 00:01:55,380 --> 00:02:04,560 можете да напишете дијамант инсталирате nokogiri, што не се случува тука. 34 00:02:04,560 --> 00:02:06,230 Добро, тоа е малку замрзнати. 35 00:02:06,230 --> 00:02:08,979 Но, можете да напишете дијамант инсталирате nokogiri. 36 00:02:08,979 --> 00:02:15,970 И дека треба да биде сето тоа постои со инсталацијата. 37 00:02:15,970 --> 00:02:20,590 >> Како што реков претходно, ако сте уште работат во вашата CS50 дефиниција проект, 38 00:02:20,590 --> 00:02:30,270 вие само треба да напишеш CFLAGS еднаква дијамант инсталирате nokogiri. 39 00:02:30,270 --> 00:02:33,130 И јас сум веќе се инсталирани тоа тука, па јас нема да го стори тоа. 40 00:02:33,130 --> 00:02:38,500 Но, за оние кои по заедно, се чувствуваат слободни да го стори тоа. 41 00:02:38,500 --> 00:02:46,000 >> Значи откако ќе го имаме вашиот Nokogiri простор или библиотека инсталиран, 42 00:02:46,000 --> 00:02:49,500 Одам да ви даде малку на несреќата се разбира во Руби синтакса 43 00:02:49,500 --> 00:02:53,380 бидејќи Nokogiri е библиотека Руби. 44 00:02:53,380 --> 00:03:03,710 Па ќе треба да знаете некои основни Руби синтаксата за работа со Nokogiri. 45 00:03:03,710 --> 00:03:08,750 Па така некои основни разлики од она што сте навикнати да ги 46 00:03:08,750 --> 00:03:13,370 можеби ако сте биле работат досега во само Ц и PHP, 47 00:03:13,370 --> 00:03:16,010 ви се декларираат променливи без тип. 48 00:03:16,010 --> 00:03:19,720 Што не го користат на точка-запирки, која е вид на олеснување. 49 00:03:19,720 --> 00:03:25,480 Нема загради сега околу за или додека петелки, на пример. 50 00:03:25,480 --> 00:03:29,460 Вие само треба блок од код, и потоа ќе се стави крај на крајот на тоа. 51 00:03:29,460 --> 00:03:32,380 Нема плус плус или минус минус, па само 52 00:03:32,380 --> 00:03:36,180 знам дека кога што го правиш за петелки, 53 00:03:36,180 --> 00:03:38,620 само плус и минус еднакви рамноправни. 54 00:03:38,620 --> 00:03:43,310 И наместо тоа на хаш вклучуваат, ќе користите, а потоа бараат 55 00:03:43,310 --> 00:03:47,755 што и се обидува библиотека да се вчита во вашата програма. 56 00:03:47,755 --> 00:03:51,610 57 00:03:51,610 --> 00:03:53,430 >> Руби не е компајлирана јазик. 58 00:03:53,430 --> 00:03:55,550 Па тоа е друга помош. 59 00:03:55,550 --> 00:03:59,350 Тоа е повеќе сличен на PHP каде тоа е препознаена јазик. 60 00:03:59,350 --> 00:04:03,570 Можете да го стартувате некој Руби скрипта која ти пишувам со Руби проследено 61 00:04:03,570 --> 00:04:07,380 со името на вашата скрипта или програма. 62 00:04:07,380 --> 00:04:13,000 Да значи дека тоа е програма со Руби, можете само да го заврши со .rb наместо .C. 63 00:04:13,000 --> 00:04:17,440 А тука се и променлива големина на низи во Руби, 64 00:04:17,440 --> 00:04:23,200 што е супер лесен кога сте стружење и можеби ќе сакате да се додаде 65 00:04:23,200 --> 00:04:26,090 податоците што сте ги добиеше во низа. 66 00:04:26,090 --> 00:04:31,960 Вие не мора да се Примерок нова низа и копија на старата низа во новата низа. 67 00:04:31,960 --> 00:04:36,150 Вие само може да се додаде со двете стрелки знаци. 68 00:04:36,150 --> 00:04:39,820 И нема знаци, има само еден жици писмо. 69 00:04:39,820 --> 00:04:44,760 Така што треба да биде малку полесно. 70 00:04:44,760 --> 00:04:50,130 >> Па ние само ќе ви даде некои примери на некои основни Руби синтакса. 71 00:04:50,130 --> 00:04:57,100 Па тука може да се види дека наместо коса црта коса црта, да коментира во Руби, 72 00:04:57,100 --> 00:04:58,740 само користење на знакот фунтата. 73 00:04:58,740 --> 00:05:04,990 И променлива декларација, ќе само тип на променлива еднаквите 74 00:05:04,990 --> 00:05:07,971 што и да сакате променливата да биде. 75 00:05:07,971 --> 00:05:09,220 Тие можат да бидат жици. 76 00:05:09,220 --> 00:05:14,120 Ќе може да има низа, која ви населуваат со вредности. 77 00:05:14,120 --> 00:05:17,240 става и отпечатоци се слични. 78 00:05:17,240 --> 00:05:20,110 За нашите цели, Единствената разлика е навистина 79 00:05:20,110 --> 00:05:25,500 што го става, која се залага за става, само го става нова линија 80 00:05:25,500 --> 00:05:27,440 карактер на она што сте печатење. 81 00:05:27,440 --> 00:05:30,980 >> Значи, ако ние даде мал демонстрација тука, 82 00:05:30,980 --> 00:05:41,800 можеме да ја извршите оваа with-- отвори нов терминал. 83 00:05:41,800 --> 00:05:46,020 Можете да ги видите сите овие додадени фајлови кои се во мојата терминал. 84 00:05:46,020 --> 00:05:50,960 И ако јас само се кандидира Руби, рубин intro.rb тоа, 85 00:05:50,960 --> 00:05:53,530 гаси пет Здраво Mather, Квинси, оператор. 86 00:05:53,530 --> 00:05:54,410 Адамс. 87 00:05:54,410 --> 00:05:59,295 Значи, тоа е сè што постои за прогласување на низи. 88 00:05:59,295 --> 00:06:01,670 ПУБЛИКАТА: Роберт, можете да направите вашиот фонт малку поголем? 89 00:06:01,670 --> 00:06:02,461 РОБЕРТ KRABEK: Да. 90 00:06:02,461 --> 00:06:05,370 91 00:06:05,370 --> 00:06:12,280 И можам да зумирате, бидејќи не можете зумирате во терминал фонтови очигледно. 92 00:06:12,280 --> 00:06:18,790 93 00:06:18,790 --> 00:06:24,630 >> Па тоа е како да се печати променливи во вашиот терминал. 94 00:06:24,630 --> 00:06:28,820 Можете да ги користите променливи внатре во низа. 95 00:06:28,820 --> 00:06:33,720 Така неодамна во PHP, сте го научиле 96 00:06:33,720 --> 00:06:37,340 дека постои низа интерполација. 97 00:06:37,340 --> 00:06:43,830 Значи, ако се погледне тука, ако јас прогласи три променливи, име, библиотека, 98 00:06:43,830 --> 00:06:49,700 и јазикот, и јас се става, јас напише низа, Здраво, моето име е. 99 00:06:49,700 --> 00:06:54,190 А потоа, наместо на PHP верзија на стринг интерполација 100 00:06:54,190 --> 00:06:58,960 кој изгледа малку повеќе, како таков, имате една фунта знак, а потоа 101 00:06:58,960 --> 00:07:01,220 кадрава голема заграда, а потоа името на променливата. 102 00:07:01,220 --> 00:07:07,350 А тоа е како што би се печати, да речеме, без оглед на името на променливата е. 103 00:07:07,350 --> 00:07:10,140 >> И тогаш ќе може, исто така, concatenate жици. 104 00:07:10,140 --> 00:07:12,890 Руби го прави супер лесно со знакот плус. 105 00:07:12,890 --> 00:07:16,110 Вие само треба еден стринг на левата плус варијабилен 106 00:07:16,110 --> 00:07:18,860 или некој друг збор и низи. 107 00:07:18,860 --> 00:07:23,500 Значи, ако јас печати ја оваа надвор, што треба само да се каже Здраво, моето име е Роберт. 108 00:07:23,500 --> 00:07:27,340 Јас ќе биде настава ви nokogiri во Ruby. 109 00:07:27,340 --> 00:07:35,370 >> И ајде да потврди дека тој навистина е case-- рубин интро. 110 00:07:35,370 --> 00:07:36,480 Здраво, моето име е Роберт. 111 00:07:36,480 --> 00:07:40,160 Јас ќе биде настава ви nokogiri во Ruby. 112 00:07:40,160 --> 00:07:45,600 >> Преселба на, ако друго извештаи, тоа е малку различен 113 00:07:45,600 --> 00:07:49,800 од она што може да се користи за да се ако сте биле работат во В. 114 00:07:49,800 --> 00:07:53,200 Вие не треба загради. 115 00:07:53,200 --> 00:07:55,220 Вие не треба на големите загради. 116 00:07:55,220 --> 00:08:00,170 И наместо тоа на друго место, ако, тоа е споена elsif. 117 00:08:00,170 --> 00:08:07,260 Па овде, ако сум го прогласи x нагоре тука, како што можеме да видиме, x е уште 5. 118 00:08:07,260 --> 00:08:11,100 Значи, ако x е помалку од 3, тоа ќе се стави мал. 119 00:08:11,100 --> 00:08:14,030 Ако тоа е помалку од 7, средни, големи друго. 120 00:08:14,030 --> 00:08:17,340 Па 5 е медиум број. 121 00:08:17,340 --> 00:08:22,270 И јас се стави крај на овој блок од код со крај. 122 00:08:22,270 --> 00:08:24,920 >> Овде е мојот за телефонска линија. 123 00:08:24,920 --> 00:08:28,240 И оваа синтакса е исто така малку поинаква. 124 00:08:28,240 --> 00:08:33,500 Од 0 до пет само во суштина е прогласување на низи на 0-5. 125 00:08:33,500 --> 00:08:36,120 Значи има шест места во низа. 126 00:08:36,120 --> 00:08:40,500 А потоа за секој слот во таа низа, јас ќе бидам јас ја зголемува. 127 00:08:40,500 --> 00:08:46,080 Па ова треба да се печати 0-5 или 0-4. 128 00:08:46,080 --> 00:08:49,630 И ова треба да се печати медиум. 129 00:08:49,630 --> 00:08:51,370 >> И јас само ќе беснеат низ. 130 00:08:51,370 --> 00:08:54,466 Вие момци ќе имаат пристап со овој законик подоцна. 131 00:08:54,466 --> 00:08:55,965 Па вие момци можат да ја извршите оваа себе. 132 00:08:55,965 --> 00:09:02,090 133 00:09:02,090 --> 00:09:06,620 >> Значи ова е твојата основна додека јамка. 134 00:09:06,620 --> 00:09:12,230 Ова ќе биде само на печатење ј, ја зголемува од 1 до 5 ние хит. 135 00:09:12,230 --> 00:09:18,320 >> Супер брз Руби несреќата се разбира за тоа како да се напише функција. 136 00:09:18,320 --> 00:09:24,460 Наместо, да речеме, int факториел број, ние само треба дефиниција. 137 00:09:24,460 --> 00:09:28,450 И во суштина сте дефинирање на функција овде. 138 00:09:28,450 --> 00:09:30,600 Ова се случува да биде името на функцијата, 139 00:09:30,600 --> 00:09:34,280 и ова е сите променливи што ќе сакате да го помине во функција. 140 00:09:34,280 --> 00:09:36,760 Ќе може да има ако изјави во рамките. 141 00:09:36,760 --> 00:09:38,030 Може да се врати. 142 00:09:38,030 --> 00:09:42,620 Во овој случај, ние сме дефинирање на рекурзивно 143 00:09:42,620 --> 00:09:45,000 спроведува факториел функција. 144 00:09:45,000 --> 00:09:48,660 Па ние само повик функции во Руби се допаѓа ова. 145 00:09:48,660 --> 00:09:54,700 >> Значи, ако сум го дефинира ова, јас може да се јавите факториел, да помине во 3, 146 00:09:54,700 --> 00:09:59,700 а потоа и 3 ќе биде променлив број што ќе можам да се користи во рамките на функцијата. 147 00:09:59,700 --> 00:10:08,010 To_s и ова е само вртење на се врати вредноста на факториел во низа. 148 00:10:08,010 --> 00:10:10,760 Инаку ова ќе фрли грешка велејќи ох, 149 00:10:10,760 --> 00:10:13,230 не може да се печати string-- бидејќи, како што се сеќавам, 150 00:10:13,230 --> 00:10:18,230 става е ставен string-- бидејќи ова факториел се врати на број. 151 00:10:18,230 --> 00:10:21,850 За да можеме да го конвертирате дека до жиците како такви. 152 00:10:21,850 --> 00:10:27,856 И обратно, исто така можете да го конвертирате стринг во цел број со to_i. 153 00:10:27,856 --> 00:10:32,650 >> Така правејќи сè супер едноставен, ако јас само се коментира ова, да заштедат 154 00:10:32,650 --> 00:10:36,250 и да ја стартувате факториел функција. 155 00:10:36,250 --> 00:10:39,850 Ние треба да биде во можност да се види дека факториел од 3 е 6. 156 00:10:39,850 --> 00:10:42,790 И тоа е навистина точно. 157 00:10:42,790 --> 00:10:46,160 >> Па тоа е вашата несреќата се разбира во Руби. 158 00:10:46,160 --> 00:10:53,550 И сега дека знаете Руби, ние може да се оди на на основните Nokogiri стружење постави. 159 00:10:53,550 --> 00:10:58,190 Суштина се што треба да направите е да, во Руби, да бараат на библиотеките. 160 00:10:58,190 --> 00:11:04,390 И за нашите цели, ние ќе бидеме со користење на библиотека OpenURI како и Nokogiri. 161 00:11:04,390 --> 00:11:07,870 А потоа она што do-- и тоа ќе го ви даде синтакса за this-- 162 00:11:07,870 --> 00:11:16,010 е ќе се отвори многу URL-то како што би во навивам барање, што претставува С URL-то. 163 00:11:16,010 --> 00:11:20,330 >> Па ве однесе на URL-то на веб-сајтот во прашање. 164 00:11:20,330 --> 00:11:22,030 Вие чувајте го на променлива. 165 00:11:22,030 --> 00:11:27,400 А потоа можете да пребарувате низ кои променлива за единствена HTML тагови користење 166 00:11:27,400 --> 00:11:30,590 на .css команда. 167 00:11:30,590 --> 00:11:34,360 А потоа можете да излез на содржината на секаде каде што сакате. 168 00:11:34,360 --> 00:11:35,720 Можете да почнете да во нашата база. 169 00:11:35,720 --> 00:11:42,040 Можете да излез во датотека, или дури и само да ги печатите на екранот. 170 00:11:42,040 --> 00:11:47,290 >> Па ние ќе ви учат основните стругалка. 171 00:11:47,290 --> 00:11:52,570 Значи тука можете да видите ние сме бара nokogiri, бараат отворен URI. 172 00:11:52,570 --> 00:11:57,150 Твојата основна поставеност, ајде го нарекуваат документ или документ, 173 00:11:57,150 --> 00:12:07,780 е еднаква на Nokogiri :: HTML отворен, што е команда доставени до нас од страна на OpenURI 174 00:12:07,780 --> 00:12:08,920 библиотека. 175 00:12:08,920 --> 00:12:14,000 И ние ќе се бараат, за оние од вие, кои би можеле да живеат во четири, 176 00:12:14,000 --> 00:12:21,270 за велосипеди, кои се наведени во Бостон на делницата велосипед Бостон Craigslist 177 00:12:21,270 --> 00:12:22,020 страница. 178 00:12:22,020 --> 00:12:26,460 >> Значи, ако не сте доволно запознаени со навивам, јас само ќе 179 00:12:26,460 --> 00:12:28,930 ви покаже вистински брз што ќе направи навивам. 180 00:12:28,930 --> 00:12:38,350 Ако сакав да ги добиете сите од URL-то од сајтот Craigslist, ако сум тип навивам, 181 00:12:38,350 --> 00:12:44,950 тоа само исфрлување на сите URL-то од велосипед страницата на Craigslist 182 00:12:44,950 --> 00:12:46,720 на мојот терминал. 183 00:12:46,720 --> 00:12:49,130 Тоа не е особено корисно бидејќи јас не 184 00:12:49,130 --> 00:12:53,330 сакате рачно да одат преку и најдете нешто што го барам. 185 00:12:53,330 --> 00:13:01,590 Но, само така може да се види дека јас сум всушност 186 00:13:01,590 --> 00:13:13,966 користење на правото код, ако се погледне во URL-то за Craigslist во bikes-- 187 00:13:13,966 --> 00:13:17,460 поради некоја причина тоа не е пронајден. 188 00:13:17,460 --> 00:13:20,340 Ако се погледне на оваа страница и ќе се погледне на URL-то, 189 00:13:20,340 --> 00:13:23,970 ова треба да биде идентична со навивам барање дека само што ги испраќате. 190 00:13:23,970 --> 00:13:27,700 И навистина, тоа е она што се се чуваат во променлива doc. 191 00:13:27,700 --> 00:13:36,540 >> Значи, кога ќе се вратиме на нашиот код, ние тогаш може да работи на овој doc променлива 192 00:13:36,540 --> 00:13:40,660 со користење на .css. 193 00:13:40,660 --> 00:13:49,240 Така да се каже јас сакав да ги добиете сите од тагови кои се span.txt, 194 00:13:49,240 --> 00:13:51,740 и сите на тагови во рамките на таа ознака. 195 00:13:51,740 --> 00:13:56,150 И зошто можеби сакаме да да го направите ова, слушам плачеш? 196 00:13:56,150 --> 00:14:02,920 >> Ако ние Увид елемент, тоа ви дава дефект на тоа како е структурирана на URL-то. 197 00:14:02,920 --> 00:14:06,200 Ако јас дојдете долу преку Тука може да се види 198 00:14:06,200 --> 00:14:08,770 она што секој од овие различни елементи претставува. 199 00:14:08,770 --> 00:14:13,410 Па можеби и јас сакам да пристапите ова особено елемент. 200 00:14:13,410 --> 00:14:16,820 Затоа, јас сум со користење Хром инвеститорот алатки за да ги провери Елемент. 201 00:14:16,820 --> 00:14:22,970 Јас може да се види дека ова овде е ознака во распон 202 00:14:22,970 --> 00:14:26,230 ознака со класа на txt. 203 00:14:26,230 --> 00:14:29,610 >> Па ова добива на нашите Првата работа која 204 00:14:29,610 --> 00:14:37,330 е doc.css век, што е ознака што Јас сум во потрага за сето ова во рок од URL-то. 205 00:14:37,330 --> 00:14:43,650 А потоа и .txt работи многу како CSS прави кога сте само пишување CSS 206 00:14:43,650 --> 00:14:49,630 во вашиот HTML датотеки со одредување на класа. 207 00:14:49,630 --> 00:14:57,980 Па овој конкретен оператор ќе наведете еден распон таг со класа на txt. 208 00:14:57,980 --> 00:15:02,800 А потоа, ако јас се остави простор, тогаш ова ќе одиме во тој таг 209 00:15:02,800 --> 00:15:05,170 а потоа се најде во рамките на таа ознака. 210 00:15:05,170 --> 00:15:10,750 >> Значи, ако јас само се стави ова на терминалот, што требаше 211 00:15:10,750 --> 00:15:21,630 можете да видите се што е во суштина што е во рамките на овој временски период на класа txt. 212 00:15:21,630 --> 00:15:22,890 Па ние ќе му даде зелено светло. 213 00:15:22,890 --> 00:15:25,870 214 00:15:25,870 --> 00:15:27,756 рубин Craigslist стругалка. 215 00:15:27,756 --> 00:15:31,850 216 00:15:31,850 --> 00:15:37,250 И навистина, кој ни дава сите од овие ознаки на различни огласи кои 217 00:15:37,250 --> 00:15:40,400 се на страната Craigslist. 218 00:15:40,400 --> 00:15:45,670 >> Значи, ако ние одиме назад, ние може да го претвори ова во нешто малку повеќе корисни. 219 00:15:45,670 --> 00:15:51,050 Можеби сакаме само линковите. 220 00:15:51,050 --> 00:15:58,790 Затоа што во рамките на оваа ознака, јас исто така ќе имаат хиперврска на патеката 221 00:15:58,790 --> 00:16:00,590 дека оваа страница оди. 222 00:16:00,590 --> 00:16:09,100 Значи, ако се погледне на овој код овде она што јас ќе го направиме е наместо .css, 223 00:16:09,100 --> 00:16:12,380 Јас може да оди at_css. 224 00:16:12,380 --> 00:16:16,820 И тоа само ќе ја добие првата елемент на сите тие работи. 225 00:16:16,820 --> 00:16:20,890 Значи, ако јас се да го направи тоа нагоре во код Јас само претходно покажа, 226 00:16:20,890 --> 00:16:23,800 наместо да се вратат сите ова, тоа само би 227 00:16:23,800 --> 00:16:26,850 се врати на првата еден од нив. 228 00:16:26,850 --> 00:16:31,310 Значи тоа е како функционира оператор at_css. 229 00:16:31,310 --> 00:16:39,460 >> Значи, ние сакаме да го сочувате пат сите на првата ознака. 230 00:16:39,460 --> 00:16:47,430 И поради тоа што ќе ни даде a-- па ние сме уште се случува да се користи .css. 231 00:16:47,430 --> 00:16:53,830 Но, бидејќи тоа се случува да се даде ни назад цела низа на тагови, 232 00:16:53,830 --> 00:16:55,710 ние ќе се обидеме да го пристап првиот елемент. 233 00:16:55,710 --> 00:17:01,700 Значи, ова е уште еден начин на кој може да се да пристапите на некој одреден елемент, ако 234 00:17:01,700 --> 00:17:04,810 имаат низа на елементи дека се враќа, 235 00:17:04,810 --> 00:17:11,930 бидејќи може да се третираат нешто што .css враќа како низа, во суштина. 236 00:17:11,930 --> 00:17:16,880 И тогаш ние ќе треба да пристапите на хипертекст референца атрибут на овој. 237 00:17:16,880 --> 00:17:24,810 >> Значи, ако се погледне, ако сте виделе навистина блиску тука, 238 00:17:24,810 --> 00:17:28,270 ако само во суштина погледнете во бар URL-то, 239 00:17:28,270 --> 00:17:33,880 тоа е патот кој си оди за да се стружење. 240 00:17:33,880 --> 00:17:41,565 Значи, ако ние само се кандидира ова, повторно, и бидете сигурни дека ние сме го спаси. 241 00:17:41,565 --> 00:17:47,040 242 00:17:47,040 --> 00:17:48,300 Може да се провери во домот. 243 00:17:48,300 --> 00:17:51,430 Ова, всушност, се совпаѓа со овој линк. 244 00:17:51,430 --> 00:17:55,950 >> Па зошто ние би можеле да сакате да го користите ова? 245 00:17:55,950 --> 00:17:57,870 Ако сакате да се изгребе страната и има 246 00:17:57,870 --> 00:18:00,270 страница на линкови како Craigslist прави тоа, ќе 247 00:18:00,270 --> 00:18:03,210 Можеби ќе сакате да се оди тогаш во секоја од тие врски 248 00:18:03,210 --> 00:18:05,120 а потоа одвај содржината на тоа, што 249 00:18:05,120 --> 00:18:08,520 е токму она што ние ќе треба да се направи. 250 00:18:08,520 --> 00:18:11,660 >> Па кога си патот како променлива, јас повеќе не навистина 251 00:18:11,660 --> 00:18:13,200 се грижи за тоа печатење. 252 00:18:13,200 --> 00:18:15,420 Јас само треба да се чува, како променлива. 253 00:18:15,420 --> 00:18:20,980 А потоа можам да пристапите до друг страница на ист начин да влезам 254 00:18:20,980 --> 00:18:22,260 doc, на прво место. 255 00:18:22,260 --> 00:18:25,920 Освен со URL-то, ние ќе да се користи низа интерполација 256 00:18:25,920 --> 00:18:29,180 како да сум опишувајќи во Руби порано за да се додаде 257 00:18:29,180 --> 00:18:32,010 на патот до крајот на коренот. 258 00:18:32,010 --> 00:18:38,970 >> Значи она што ова се случува да направите е да се ова ќе се стави на патот 259 00:18:38,970 --> 00:18:42,360 дека јас ќе добиеше претходно а потоа се претвори дека 260 00:18:42,360 --> 00:18:49,580 во нова точка, она што сакате да јавете it-- first_listing, на пример. 261 00:18:49,580 --> 00:18:52,900 Но јас ќе одам да ја напушти тоа на точка за сега, 262 00:18:52,900 --> 00:18:55,420 затоа што тоа е она што јас сум со користење тука. 263 00:18:55,420 --> 00:19:02,900 >> Така велат дека сакав да се добие описот на првиот објавување во Craigslist. 264 00:19:02,900 --> 00:19:04,740 Па јас ќе одат надолу тука. 265 00:19:04,740 --> 00:19:10,660 Јас ќе кликнете на Увид Елемент повторно, бидејќи ова е опис. 266 00:19:10,660 --> 00:19:14,350 Би одат надолу тука и да видиме ако можам да најдам како би можел да 267 00:19:14,350 --> 00:19:16,530 биде во можност да направите пребарување за овој уникатен таг. 268 00:19:16,530 --> 00:19:19,530 И во овој случај, тоа е лична карта, која не води 269 00:19:19,530 --> 00:19:26,810 до нашиот следен начин на барање за тагови, што е со хаштагот. 270 00:19:26,810 --> 00:19:30,670 >> Па за класи, можете да користат операторот точка. 271 00:19:30,670 --> 00:19:38,610 Па .txt се одредува класата на txt, со оглед на тоа хаш одредува лична карта. 272 00:19:38,610 --> 00:19:43,720 Значи во овој случај, етикетата е секција, а проект е postingbody. 273 00:19:43,720 --> 00:19:47,780 >> Значи ова оди и проигрува на first-- бидејќи ние сме 274 00:19:47,780 --> 00:19:51,200 користење at_css-- ова оди и наоѓа на првиот елемент кој 275 00:19:51,200 --> 00:19:57,180 влегува со ознака на секција и проект за postingbody. 276 00:19:57,180 --> 00:20:02,636 А потоа можете да пристапите до текстот елемент на таа ствар се врати со .text. 277 00:20:02,636 --> 00:20:06,230 И тогаш може да се сместат дека во описот. 278 00:20:06,230 --> 00:20:09,370 >> Па сега дека ние имаме променлива опис, 279 00:20:09,370 --> 00:20:14,850 ние би можеле да бидат во можност да се направи, да речеме, датотека I / O. Така датотека I / O во Руби 280 00:20:14,850 --> 00:20:21,310 е многу слична на датотека I / O во C, каде што се отвори датотеката. 281 00:20:21,310 --> 00:20:23,260 Ние би можеле да пишува на него. 282 00:20:23,260 --> 00:20:25,060 А потоа ќе се затвори таа датотека. 283 00:20:25,060 --> 00:20:29,660 >> Па еве, ние сме само именување на file, некои произволни променливи. 284 00:20:29,660 --> 00:20:33,120 Ние, исто така може да имаат само стави ова овде. 285 00:20:33,120 --> 00:20:39,630 Имаме една променлива, дека ние сме чување Отвори датотека, како и со File.open. 286 00:20:39,630 --> 00:20:46,370 И ние сме пишување до оваа датотека, така што можеме да го отвори со w оператор. 287 00:20:46,370 --> 00:20:54,280 А потоа го ставаме во низа датотека со операторот на .puts. 288 00:20:54,280 --> 00:20:58,310 А потоа ќе стави променлива дека ние сакате да запишам во датотеката во рамките на тоа. 289 00:20:58,310 --> 00:21:00,200 А потоа ние едноставно се затвори датотеката. 290 00:21:00,200 --> 00:21:04,000 >> Значи, ако ние се оди напред и да ја извршите оваа, ова треба да се произведе еден документ 291 00:21:04,000 --> 00:21:10,840 со кој ќе description.txt имаат овој опис во неа. 292 00:21:10,840 --> 00:21:14,015 Значи, ако јас се кандидира it-- бр. 293 00:21:14,015 --> 00:21:17,520 294 00:21:17,520 --> 00:21:23,330 Тоа е произведен на документ со, се надевам, истото. 295 00:21:23,330 --> 00:21:25,850 296 00:21:25,850 --> 00:21:33,290 Па таму би можело да биде нова работа кој излезе додека Сум бил зборува. 297 00:21:33,290 --> 00:21:36,580 И навистина изгледа како таму е. 298 00:21:36,580 --> 00:21:43,380 Значи, ако ние се постави во овој класичен велосипед, 1962-1966, што се чини дека да се совпаѓаат. 299 00:21:43,380 --> 00:21:45,620 И таму да одите. 300 00:21:45,620 --> 00:21:51,250 >> Значи тоа е најосновна функционалноста на стружење. 301 00:21:51,250 --> 00:21:57,510 Ние би можеле да имаат, наместо само пишување на оваа датотека, 302 00:21:57,510 --> 00:21:59,930 можеме да додадете работи во низа. 303 00:21:59,930 --> 00:22:03,770 Значи, ако јас прогласи три низи, Наслов, цена, и опис. 304 00:22:03,770 --> 00:22:06,310 305 00:22:06,310 --> 00:22:13,790 И ние сме работат на точката на doc сега. 306 00:22:13,790 --> 00:22:16,940 Можеме да одат преку и ги најдете сите на span.txt. 307 00:22:16,940 --> 00:22:21,710 И се сеќавам, ова се враќа низа на сите елементи, кои ќе го пронајде. 308 00:22:21,710 --> 00:22:27,300 А потоа и во Руби, вие само може да се користи .Секоја да iterate преку секоја ставка 309 00:22:27,300 --> 00:22:28,410 на низата. 310 00:22:28,410 --> 00:22:31,330 И потоа за секоја ставка, Јас сум само ќе го наречеме 311 00:22:31,330 --> 00:22:34,620 линк, затоа што тоа е во суштина она што е. 312 00:22:34,620 --> 00:22:46,830 >> Значи, ако јас се стави секој link.css точка a.hdrlnk, ова е всушност ќе линк 313 00:22:46,830 --> 00:22:58,280 и наоѓање во рамките на тој линк друг HTML елемент и соодветната класа. 314 00:22:58,280 --> 00:23:04,990 Значи, ако ние се сетам што се ова беше, span.txt, 315 00:23:04,990 --> 00:23:13,160 можете да ЈИЕ дозволете ми да се вратам вистински quick-- рамките span.txt 316 00:23:13,160 --> 00:23:17,490 ние имаме голем број на други класи. 317 00:23:17,490 --> 00:23:27,180 Па внатре span.txt, ние сме во потрага за ознака со класа hdrlnk. 318 00:23:27,180 --> 00:23:29,890 Значи, дозволете ми само да се најде дека за вас момци вистински брз. 319 00:23:29,890 --> 00:23:37,390 320 00:23:37,390 --> 00:23:42,850 >> За да можете да ја видите тука, ова е таг тоа е во растојание од класа txt 321 00:23:42,850 --> 00:23:44,920 кој има hdrlnk класа. 322 00:23:44,920 --> 00:23:47,610 И тоа е навистина она што ние се обидуваме да се добие. 323 00:23:47,610 --> 00:23:54,680 >> Па ние сме сега се обидува да ги чува сите од тие врски во внатрешноста на насловот. 324 00:23:54,680 --> 00:23:59,545 И тогаш ние ќе треба да се печати на секоја од тие врски. 325 00:23:59,545 --> 00:24:00,360 Не Извини. 326 00:24:00,360 --> 00:24:04,530 Ние ќе треба да се печати цената на секоја од нив. 327 00:24:04,530 --> 00:24:09,350 Значи, да се кандидира тоа навистина брзо и да видиме што тоа го прави. 328 00:24:09,350 --> 00:24:14,680 329 00:24:14,680 --> 00:24:17,720 >> Значи ова е само основа отиде преку секој од линковите 330 00:24:17,720 --> 00:24:27,310 пак, се пристапи таг во прашање, а потоа се повлече од цената. 331 00:24:27,310 --> 00:24:33,910 И тоа го правеше тоа, бидејќи по имате се што во насловот, 332 00:24:33,910 --> 00:24:37,260 ние само се чуваат титулата таму. 333 00:24:37,260 --> 00:24:40,180 Ние само се чуваат на врската во насловот на низата. 334 00:24:40,180 --> 00:24:47,720 И во оваа операција за телефонска линија, каде што наместо да одат на a.hdrlnk, 335 00:24:47,720 --> 00:24:50,490 ние сме во потрага по span.price. 336 00:24:50,490 --> 00:24:56,500 Значи, ако јас само може да се најдат навистина брзо цената, ако ви се изврши увид во елемент, 337 00:24:56,500 --> 00:25:00,610 ќе видите дека тоа е век со класа на цена. 338 00:25:00,610 --> 00:25:04,670 И тоа е во основа како ние сме добивање на цената таму. 339 00:25:04,670 --> 00:25:10,040 >> Значи тоа е навистина основните случај на стружење. 340 00:25:10,040 --> 00:25:13,550 Тоа е како да ги добиете сите елементите на страницата 341 00:25:13,550 --> 00:25:16,510 дека, да речеме, веќе знаете на рачно. 342 00:25:16,510 --> 00:25:21,050 >> Значи, ако сакаме да се добие малку повеќе во длабочина, 343 00:25:21,050 --> 00:25:23,950 ние може да се изгребе страници во рамките на страници. 344 00:25:23,950 --> 00:25:28,480 И за овој пример, јас ќе биде Ставање на CSV датотека. 345 00:25:28,480 --> 00:25:39,510 Па јас сум се бара CSV се тука бидејќи Руби не се случи, во себе, 346 00:25:39,510 --> 00:25:42,350 имаат функционалност само излез CSV датотеки. 347 00:25:42,350 --> 00:25:45,030 Па тоа е супер едноставен. 348 00:25:45,030 --> 00:25:48,710 Дозволете ми да одат на следното. 349 00:25:48,710 --> 00:25:51,640 350 00:25:51,640 --> 00:25:57,170 Опфативме датотека I / O. Па ова е слично на тоа како што е во В. 351 00:25:57,170 --> 00:26:00,870 И пред да продолжат понатаму да се кимоно, Јас само ќе ви покаже колку навистина брзо 352 00:26:00,870 --> 00:26:02,790 да се изгребе сајтови во рамките знаменитости. 353 00:26:02,790 --> 00:26:10,040 >> Па ние веќе научил како да се изјасни низи во Руби. 354 00:26:10,040 --> 00:26:13,280 Па јас сум само за прогласување на куп на произволни низи 355 00:26:13,280 --> 00:26:16,310 дека јас ќе се складирање на податоци во рамките. 356 00:26:16,310 --> 00:26:20,680 doc работи на ист начин како што беше и во претходниот фајл. 357 00:26:20,680 --> 00:26:23,580 Ние се случува во, наоѓајќи секоја од span.txt половина. 358 00:26:23,580 --> 00:26:25,040 Ние веќе знаеме дека. 359 00:26:25,040 --> 00:26:32,130 Што е сад во кој секоја линк има сите податоци кои ги сакате. 360 00:26:32,130 --> 00:26:40,800 >> Значи тука она што го правиме е за секој линк од span class txt, ние ќе треба во 361 00:26:40,800 --> 00:26:45,720 и ние сме наоѓање на некоја ознака, наоѓање на првиот елемент на тоа. 362 00:26:45,720 --> 00:26:49,937 Се сеќавам, .css враќа низа, така што не може само да го пристап како што е. 363 00:26:49,937 --> 00:26:51,520 Ние ќе треба да се најде на првиот елемент. 364 00:26:51,520 --> 00:26:56,430 Дури и ако тоа е низа на еден точка, ќе мора да ја користите оваа синтакса, 365 00:26:56,430 --> 00:26:58,800 а потоа извлечете го href атрибут. 366 00:26:58,800 --> 00:27:01,800 >> Па ние го направи ова и порано. 367 00:27:01,800 --> 00:27:04,440 Па ова би требало да изгледа познато. 368 00:27:04,440 --> 00:27:14,330 И така сега имаме низа повика патеки на сите наши врски 369 00:27:14,330 --> 00:27:16,590 дека ние ќе треба да сакате да го користите. 370 00:27:16,590 --> 00:27:21,350 Значи, ако имаме оваа низа од сите од патеките кои сакаме да ги користат, 371 00:27:21,350 --> 00:27:26,840 тогаш може да се создаде точка за секоја на овие страници кога ќе ги отвориме оваа страница. 372 00:27:26,840 --> 00:27:31,150 Така како што ние, исто така, видов на синтаксата и досега, во која 373 00:27:31,150 --> 00:27:37,450 прави низа интерполација со патот тука, па синтаксата е само за пат. 374 00:27:37,450 --> 00:27:41,450 И би можел да се именува оваа променлива какво било произволно име. 375 00:27:41,450 --> 00:27:43,070 >> Ова е важно. 376 00:27:43,070 --> 00:27:46,650 Ова е низата дека ќе се пристапува секој елемент. 377 00:27:46,650 --> 00:27:52,400 Но, кога ќе се каже за патека во патеки, тоа значи за секој елемент во патеки, 378 00:27:52,400 --> 00:27:55,150 го нарекуваат патеката, и го користат тоа. 379 00:27:55,150 --> 00:27:59,266 Ова е во суштина како кога ќе направи за телефонска линија и да го користите int i. 380 00:27:59,266 --> 00:28:04,000 За да можете да се третираат на пат како променлива кој ја зголемува. 381 00:28:04,000 --> 00:28:07,820 >> И потоа за секоја од тие, оди во секоја од тие врски. 382 00:28:07,820 --> 00:28:11,710 Затоа што ние сме чување на тоа во точка страница, па ние сме создавање на нова страница во секое време 383 00:28:11,710 --> 00:28:13,330 можеме да го пристап. 384 00:28:13,330 --> 00:28:20,560 А потоа и во рамките на таа нова страница, да се најде span.postingtitletext, span.price, 385 00:28:20,560 --> 00:28:22,240 а потоа делот # postingbody. 386 00:28:22,240 --> 00:28:28,430 Ние веќе се покриени делот # postingbody кога ние погледна во описот. 387 00:28:28,430 --> 00:28:34,890 >> За да можеме да одиме да го гледаме во Craigslist пост, ако сте само да гледа во насловот, 388 00:28:34,890 --> 00:28:38,810 можете да ја видите тука, распон postingtitletext. 389 00:28:38,810 --> 00:28:41,390 А тоа е зошто тоа е таму. 390 00:28:41,390 --> 00:28:49,120 А потоа и за цена, можете да се приближува со span class на цена. 391 00:28:49,120 --> 00:28:54,480 >> Па ние, исто така, можеби би можеле да сакате да го меморирате URL-то. 392 00:28:54,480 --> 00:28:58,580 Па ние само ќе ја извршите оваа повторно, таа продавница во низа, 393 00:28:58,580 --> 00:29:01,150 затоа што ако сте во потрага на Craigslist, ти си 394 00:29:01,150 --> 00:29:05,290 веројатно нема да сакаат некој начин да, ако ќе видите нешто што ве интересира, 395 00:29:05,290 --> 00:29:06,620 се вратиш на овој сајт. 396 00:29:06,620 --> 00:29:10,480 Па вие само сакате да ги чувате URL-то за доброто референци. 397 00:29:10,480 --> 00:29:13,840 398 00:29:13,840 --> 00:29:19,630 >> Ова е само во суштина друг синтакса за за телефонска линија. 399 00:29:19,630 --> 00:29:26,360 Само можам да ја направам paths.each наместо за на патека во патеки со индекс. 400 00:29:26,360 --> 00:29:31,280 И оваа синтакса е Ruby for-- Патеката е она што го правевме до тука, 401 00:29:31,280 --> 00:29:33,920 прогласување на променлива за секоја ставка. 402 00:29:33,920 --> 00:29:38,540 И индекс се однесува како Јас во C за петелки. 403 00:29:38,540 --> 00:29:41,280 За да можете да ги пратите на она што индексот е. 404 00:29:41,280 --> 00:29:45,200 >> Значи тука е само малку удобен работа 405 00:29:45,200 --> 00:29:46,950 за кога сте водење на раб. 406 00:29:46,950 --> 00:29:50,580 Ако сте стружење на стотици страници, да бидете сигурни дека тоа не е бесење, 407 00:29:50,580 --> 00:29:53,320 таа сака излез, Јас сум пристап до оваа страница, 408 00:29:53,320 --> 00:29:55,960 и што си сигурен дека тоа е се уште во тек. 409 00:29:55,960 --> 00:29:59,250 Но за нашите цели, бидејќи има стотина предмети, 410 00:29:59,250 --> 00:30:08,000 Одам да се пристапи само три од нив така што ние не се работи надвор од времето тука. 411 00:30:08,000 --> 00:30:13,040 >> Но, пред да се дојде до тоа, јас сум само ќе сака да покаже што навистина брзо, 412 00:30:13,040 --> 00:30:16,940 Јас ќе бидам Ставање на титулата, цена, опис, и URL-то 413 00:30:16,940 --> 00:30:19,600 на секој од линковите што сум ги добиеше. 414 00:30:19,600 --> 00:30:23,720 И тогаш ова е само синтакса за библиотеката CSV. 415 00:30:23,720 --> 00:30:25,240 Ќе се отвори CSV. 416 00:30:25,240 --> 00:30:27,070 Тоа е она што јас ќе одам да го наречеме. 417 00:30:27,070 --> 00:30:29,430 Отворете го со пишување задачи. 418 00:30:29,430 --> 00:30:33,830 А потоа ќе бидат во CSV датотека што сте внесување сè во. 419 00:30:33,830 --> 00:30:37,800 Ова е само еден разумност провери за мене да се знае дека тоа е водење. 420 00:30:37,800 --> 00:30:41,240 И ова е мојата разумност провери да се знае дека тоа е завршена. 421 00:30:41,240 --> 00:30:46,670 Па јас сум ставање титула во ред во на CSV, цена, URL, опис, 422 00:30:46,670 --> 00:30:49,420 во сите редови во CSV. 423 00:30:49,420 --> 00:30:53,410 >> Значи, ако ние одиме и да се кандидира оваа now-- и јас само 424 00:30:53,410 --> 00:31:04,710 бидете сигурни дека јас сум it-- спасени наместо само да го Ставање до терминалот, 425 00:31:04,710 --> 00:31:09,750 ние треба да имаат CSV датотека која е произведена. 426 00:31:09,750 --> 00:31:13,500 Па тука може да се види на CSV датотека и тоа е се произведени. 427 00:31:13,500 --> 00:31:19,330 Ова е излез на Стебло дека јас само истрча. 428 00:31:19,330 --> 00:31:23,030 Како што можете да видите тука, пристапува страница 0, 1, 2, 3. 429 00:31:23,030 --> 00:31:27,400 Ова се насловите, цените, описи. 430 00:31:27,400 --> 00:31:31,710 А ако се погледне на овој CSV датотека што ние сме се создава, 431 00:31:31,710 --> 00:31:35,700 може да се види своите outputted тука. 432 00:31:35,700 --> 00:31:40,350 Ова не е Excel, па тоа не е форматирана во редови и колони. 433 00:31:40,350 --> 00:31:45,140 Но, можете да замислите колку тоа би можело да биде форматирана. 434 00:31:45,140 --> 00:31:47,740 >> CSV залага за одвоени со запирки вредности. 435 00:31:47,740 --> 00:31:50,090 Па можете да замислите ова може да биде по ред. 436 00:31:50,090 --> 00:31:54,700 И секоја запирка би покажуваат посебна колона. 437 00:31:54,700 --> 00:32:00,010 Само еден збор на caution-- понекогаш сте 438 00:32:00,010 --> 00:32:02,260 стружење работите со многу запирки. 439 00:32:02,260 --> 00:32:05,100 Значи, ако сте Ставање тоа да CSV датотека, 440 00:32:05,100 --> 00:32:10,340 Тоа не може да излез начин што мислат. 441 00:32:10,340 --> 00:32:16,770 >> Па тоа е во суштина сите таму е да се стружење основен HTML 442 00:32:16,770 --> 00:32:20,110 страници со Nokogiri. 443 00:32:20,110 --> 00:32:26,000 >> Па на интернет е иновативни како што дојде 444 00:32:26,000 --> 00:32:33,220 со повеќе автоматизирано и GUI верзија, иако помалку стабилна 445 00:32:33,220 --> 00:32:35,540 верзија на стружење различни веб страници. 446 00:32:35,540 --> 00:32:39,060 И за нашите цели Ќе се демонстрира 447 00:32:39,060 --> 00:32:42,920 продолжување Хром наречен кимоно. 448 00:32:42,920 --> 00:32:46,690 И сè што треба да направите е да се движите на страница која сакате да се изгребе. 449 00:32:46,690 --> 00:32:48,590 Ќе кликнете на поле на интерес. 450 00:32:48,590 --> 00:32:51,510 Ви го калибрираат полиња, бидејќи тоа автоматски ќе 451 00:32:51,510 --> 00:32:54,360 откривање на она што го мисли сакате да се стружење, 452 00:32:54,360 --> 00:32:56,280 и можеш само да се создаде API. 453 00:32:56,280 --> 00:33:03,700 >> Значи, ако ние требаше да го покаже на Craigslist, тоа всушност не сака да работи. 454 00:33:03,700 --> 00:33:08,290 И тоа е она што ми беше да се вратам велејќи дека за тоа да не биде како стабилна. 455 00:33:08,290 --> 00:33:10,320 Тоа има проблеми со создавањето на API. 456 00:33:10,320 --> 00:33:13,400 Но како демонстрација од она што би го направил, 457 00:33:13,400 --> 00:33:17,460 ако го инсталирате Хром продолжување, сите да направите е да кликнете на неа. 458 00:33:17,460 --> 00:33:21,750 Тоа Kimonofies страницата, а потоа ќе кликнете на нешто што сакате да скрипта. 459 00:33:21,750 --> 00:33:24,480 >> Значи, ако јас се да кликнете на тоа, тоа ќе се потенцира 460 00:33:24,480 --> 00:33:28,130 она што го мисли сакам да биде стружење исклучите оваа страница. 461 00:33:28,130 --> 00:33:33,660 Па можеби и јас ова го нарекуваат огласи. 462 00:33:33,660 --> 00:33:36,430 Ова е како многу ставки што сте ги избрале. 463 00:33:36,430 --> 00:33:43,810 И јас само може да ја потврди или негира некои на други предложени огласи 464 00:33:43,810 --> 00:33:49,600 да се добие тоа да го додадете што ќе се добиеше. 465 00:33:49,600 --> 00:33:52,330 >> Па сега може да се види, има избрани стотина предмети. 466 00:33:52,330 --> 00:33:58,060 Ако сакам да имаме уште едно поле што можам исто така, се изгребе кои се поврзани со ова, 467 00:33:58,060 --> 00:34:02,540 каже сакам да се изгребе цената како и, тогаш можам да го стори истото. 468 00:34:02,540 --> 00:34:06,190 469 00:34:06,190 --> 00:34:11,550 >> Значи тука е демонстрација на тоа како тоа е многу помалку стабилна, бидејќи сега е 470 00:34:11,550 --> 00:34:15,050 подигање на градот, наместо на само цената што сакам. 471 00:34:15,050 --> 00:34:16,989 И сега тоа е зедов 200 работи. 472 00:34:16,989 --> 00:34:19,880 Може да се вратиш и да го избришете. 473 00:34:19,880 --> 00:34:21,449 Може да се обидете повторно. 474 00:34:21,449 --> 00:34:24,250 Но нема гаранции. 475 00:34:24,250 --> 00:34:29,909 Ова е како тоа функционира понекогаш. 476 00:34:29,909 --> 00:34:32,969 Како што гледате тука, сега се вели 96 до тука. 477 00:34:32,969 --> 00:34:37,000 Тоа е подигнат темпото на линкови што сакате да се изгребе, но не 478 00:34:37,000 --> 00:34:39,280 нужно сите од нив. 479 00:34:39,280 --> 00:34:43,909 >> Друга корисна алатка на Кимоно иако е што можете да одат за да се напредни опции 480 00:34:43,909 --> 00:34:47,980 тука, одете на напредни, и тоа ќе ви покаже 481 00:34:47,980 --> 00:34:53,139 распаѓањето на уникатен начин за пристап на web 482 00:34:53,139 --> 00:34:54,909 тагови кои сакате да се изгребе. 483 00:34:54,909 --> 00:35:01,450 Така и за листите, ако го погледнете овде, ако го гледате div стр распон опфаќаат, 484 00:35:01,450 --> 00:35:06,030 што всушност може да се само користење ова во вашиот Nokogiri код, 485 00:35:06,030 --> 00:35:10,780 каде што, пред да ја span.txt за пристап до секој од огласи. 486 00:35:10,780 --> 00:35:13,270 Ако само сакате текстот во рамките на огласи, 487 00:35:13,270 --> 00:35:18,950 Можев внесување div простор стр простор распон простор распон простор, 488 00:35:18,950 --> 00:35:21,570 и тоа ќе се постигне истиот ефект. 489 00:35:21,570 --> 00:35:26,320 И за оние од вас кои се заинтересирани со користење на регуларни изрази, 490 00:35:26,320 --> 00:35:31,670 тоа се случува да се, исто така, ви даде редовни изразување вид на стринг за да го внесете 491 00:35:31,670 --> 00:35:34,900 да се најде она што сте се обидува да се најде. 492 00:35:34,900 --> 00:35:44,130 >> Значи има уште една кул особина на кимоно каде што можете да paginate, 493 00:35:44,130 --> 00:35:47,780 која не е само можам да се изгребе резултатите на оваа страница, 494 00:35:47,780 --> 00:35:50,890 Јас може да кликнете на ова мало копчето тука, бројот на страници, 495 00:35:50,890 --> 00:35:55,580 наведете го копчето што ќе одведи ме на следната страница, 496 00:35:55,580 --> 00:35:59,500 и потоа тоа само ќе знаат дека тоа може да iterate на следната страница, 497 00:35:59,500 --> 00:36:04,120 а потоа одвај сите the-- додека како што тоа е ист формат на разбира 498 00:36:04,120 --> 00:36:06,110 Стебло сите тие врски, како и. 499 00:36:06,110 --> 00:36:15,230 >> Кимоно па затоа не сака да работат со Craigslist, што направивме 500 00:36:15,230 --> 00:36:19,790 е Сум Kimonofied Харвард Кримсон. 501 00:36:19,790 --> 00:36:29,380 Сум го извади некои од вид на Топ избрани статии, потврди тука. 502 00:36:29,380 --> 00:36:33,090 Велат дека сите овие. 503 00:36:33,090 --> 00:36:35,830 Јас сум пишување на API за вас пред време. 504 00:36:35,830 --> 00:36:38,990 Но инаку што ќе направиш е едноставно ќе кликнете Done. 505 00:36:38,990 --> 00:36:40,940 Внесете ги Вашите податоци во API. 506 00:36:40,940 --> 00:36:45,260 Поставете го на било кој автоматизирани или рачни лази. 507 00:36:45,260 --> 00:36:48,460 Па може да се ажурира вашиот податоци на секои 15 минути, 508 00:36:48,460 --> 00:36:50,330 неделно, дневно, што сакаш. 509 00:36:50,330 --> 00:36:51,160 Именува вашиот API. 510 00:36:51,160 --> 00:36:52,790 Создаде API. 511 00:36:52,790 --> 00:36:58,460 За вас, јас сум создаден Crimson насловната страница на API веќе. 512 00:36:58,460 --> 00:37:02,480 >> Така да треба само да се создаде сметка на кимоно, и тоа 513 00:37:02,480 --> 00:37:06,240 ќе ги чува сите ваши API-јата за вас. 514 00:37:06,240 --> 00:37:10,330 Значи во суштина тоа е сите ваши одделни различни гребење. 515 00:37:10,330 --> 00:37:18,250 >> Па ако гледаме тука, ова е мислења линкови што сте ги собрале. 516 00:37:18,250 --> 00:37:21,290 Овие се вклучени линкови што сте ги собрале. 517 00:37:21,290 --> 00:37:24,090 И овие се најчитани линкови кои собрав 518 00:37:24,090 --> 00:37:27,120 од овој најновите API Стебло. 519 00:37:27,120 --> 00:37:30,790 >> Па ако може да се види тука, тие ќе бидат вклучени, 520 00:37:30,790 --> 00:37:34,130 тие ќе бидат мислења, кој во овој пример, 521 00:37:34,130 --> 00:37:38,150 Сум ги комбинираат сите во една збирка. 522 00:37:38,150 --> 00:37:42,780 Но ако сте само се позанимавам со неа малку, можете да го разделуваат 523 00:37:42,780 --> 00:37:45,090 и го поделат сепак сакате да се додека 524 00:37:45,090 --> 00:37:47,520 како форматирање е малку поинаква. 525 00:37:47,520 --> 00:37:51,320 >> Само да се позанимавам со ова, ползи постави, еден од downsides 526 00:37:51,320 --> 00:37:58,120 е што само може да ползи нагоре до 25 страници во еден момент. 527 00:37:58,120 --> 00:38:00,430 Тоа е еден од ограничувачките фактори. 528 00:38:00,430 --> 00:38:03,060 Но, еве, ако го поставите во прирачникот индексирање, ова 529 00:38:03,060 --> 00:38:06,100 е како можете да го кажам за да обновите вашите податоци. 530 00:38:06,100 --> 00:38:11,010 И тука можете да ја видите вашата историја ползи на сето она што сте го запиша. 531 00:38:11,010 --> 00:38:16,000 А вие момци можат да се вратат, се регистрирате, позанимавам со сите на различни начини 532 00:38:16,000 --> 00:38:20,340 дека можете да менувате и да ги користат вашите податоци. 533 00:38:20,340 --> 00:38:24,580 >> Кимоно може да се постави за да се одвај врски во рамките на линкови. 534 00:38:24,580 --> 00:38:29,700 И ќе го стори тоа од страна на првите стружење листа на линкови, 535 00:38:29,700 --> 00:38:35,390 а потоа со помош на тој API како скокаат исклучување точка за уште API 536 00:38:35,390 --> 00:38:36,710 што ќе се создаде на сценариото. 537 00:38:36,710 --> 00:38:42,040 Но, тоа е многу покомплицирано отколку она што ние ќе треба да се влезе во денес. 538 00:38:42,040 --> 00:38:44,270 >> Значи тоа е кимоно. 539 00:38:44,270 --> 00:38:46,980 Ние ќе разговараме за добрите и лошите страни на Nokogiri и кимоно. 540 00:38:46,980 --> 00:38:50,380 >> Nokogiri, тоа е навистина брзо. 541 00:38:50,380 --> 00:38:51,640 Тоа е лесно да се тестираат. 542 00:38:51,640 --> 00:38:55,910 Вие само може да се става ништо конзола, лесно да ги конфигурирате. 543 00:38:55,910 --> 00:39:00,400 Можете да одлучите што точно сакате да се изгребе и продавница. 544 00:39:00,400 --> 00:39:02,060 Не постојат граници страница. 545 00:39:02,060 --> 00:39:08,010 Јас всушност го користи за да се изгребе како 1800 Јужна Африка училишен веб-сајт 546 00:39:08,010 --> 00:39:10,870 за пораки за стажирање што ја добив. 547 00:39:10,870 --> 00:39:16,060 >> Значи тоа е можно, иако најдобра практика ќе биде да се подели на сценариото. 548 00:39:16,060 --> 00:39:19,310 Бидејќи ако тоа не успее, тогаш да не добие ништо. 549 00:39:19,310 --> 00:39:22,790 Но, ако не сто, можеби 200 страници во еден момент, 550 00:39:22,790 --> 00:39:27,840 тогаш може да има некои шанси за најмалку добивање на тоа парче, а особено 551 00:39:27,840 --> 00:39:30,280 ако имате лоша интернет. 552 00:39:30,280 --> 00:39:32,720 >> За жал тоа може да се изгребе само HTML. 553 00:39:32,720 --> 00:39:35,190 Значи, ако имате динамички вчитани pages-- 554 00:39:35,190 --> 00:39:39,480 и јас ќе ви покажам еден пример како кајак во second-- 555 00:39:39,480 --> 00:39:42,270 Nokogiri жал не може да се изгребе тоа. 556 00:39:42,270 --> 00:39:45,700 >> Кимоно но исто така е лесен за употреба. 557 00:39:45,700 --> 00:39:48,330 Како што видовте, тоа е во суштина точка и клик. 558 00:39:48,330 --> 00:39:50,260 Тоа може да се изгребе JavaScript. 559 00:39:50,260 --> 00:39:53,790 За жал, постои максимум до колку страници може да се изгребе. 560 00:39:53,790 --> 00:39:55,710 Понекогаш тоа е малку тешко да го конфигурирате. 561 00:39:55,710 --> 00:39:57,240 Го збунува. 562 00:39:57,240 --> 00:40:00,920 Но тоа е дефинитивно нешто да се разгледа 563 00:40:00,920 --> 00:40:05,930 ако не се обидуваат да имаат супер робустен одржлив одвај. 564 00:40:05,930 --> 00:40:09,010 Ако само сакате да се добие се исклучени од страницата брзо, 565 00:40:09,010 --> 00:40:10,970 Кимоно тогаш е навистина добра алатка за користење. 566 00:40:10,970 --> 00:40:16,490 И како што веќе напоменав претходно, има на напредна функција на кимоно 567 00:40:16,490 --> 00:40:19,260 кои ви покажува како да се пристап до единствена HTML 568 00:40:19,260 --> 00:40:24,210 елемент, кој е супер корисни дури и ако се работи во Nokogiri. 569 00:40:24,210 --> 00:40:30,370 >> Значи, ако ние отидете на сајтот кајак, за На пример, можете да видите има is-- 570 00:40:30,370 --> 00:40:31,750 Или можеби не може да се види. 571 00:40:31,750 --> 00:40:38,910 Но, ако јас ви покаже на URL за кајак, ова всушност е само URL на изворот. 572 00:40:38,910 --> 00:40:43,800 Ова е URL пред да бидат модифициран со што и го вклучите Javascript-скрипти 573 00:40:43,800 --> 00:40:45,350 дека тие се случува. 574 00:40:45,350 --> 00:40:52,420 И тоа се случува да се погледне на различни од увидот во елемент. 575 00:40:52,420 --> 00:40:55,940 >> Значи, ако ви се оди преку и вие одговара на Увид Елемент 576 00:40:55,940 --> 00:41:00,340 кодот на изворниот код, тоа е всушност ќе биде поинаква. 577 00:41:00,340 --> 00:41:05,640 И тоа е во суштина зошто Nokogiri не може да се изгребе динамички вчитани сајтови. 578 00:41:05,640 --> 00:41:08,810 Бидејќи Nokogiri е стружење URL на изворот, 579 00:41:08,810 --> 00:41:16,310 со оглед на тоа што е, всушност кимоно стружење што си суштина 580 00:41:16,310 --> 00:41:18,260 гледање во Одберете Елемент. 581 00:41:18,260 --> 00:41:23,880 >> Па ако одам преку и јас се обиде и Kimonofy кајак, 582 00:41:23,880 --> 00:41:26,600 Јас всушност може да оди преку и одберете цената. 583 00:41:26,600 --> 00:41:32,360 Тоа е малку потешко, и во овој случај, тоа е 584 00:41:32,360 --> 00:41:36,600 всушност гледаат оваа цена за разлика од овие. 585 00:41:36,600 --> 00:41:41,110 Па со оглед на тоа што можете да configure-- или ако ова не се динамички вчитани, 586 00:41:41,110 --> 00:41:43,620 можете да го конфигурирате Nokogiri да ги добиете сите од овие. 587 00:41:43,620 --> 00:41:48,230 >> Затоа што е малку форматирање различни за овој оглас 588 00:41:48,230 --> 00:41:51,280 како што е во споредба со остатокот од нив, и можете да ги видите тука 589 00:41:51,280 --> 00:41:54,830 тоа е всушност нема и избрани сите цени на летот. 590 00:41:54,830 --> 00:42:01,200 Можеби сакам да го изберете времето на летање, како и. 591 00:42:01,200 --> 00:42:04,700 И јас може да оди преку и вид на конфигурирате тоа. 592 00:42:04,700 --> 00:42:06,950 Не сакам тоа. 593 00:42:06,950 --> 00:42:10,200 Јас само сакам време на следниот лет е. 594 00:42:10,200 --> 00:42:17,030 А потоа по неколку од овие минува низ, тоа добива сликата. 595 00:42:17,030 --> 00:42:19,080 Кимоно така е прилично паметни. 596 00:42:19,080 --> 00:42:21,900 Тоа е само не е толку силна. 597 00:42:21,900 --> 00:42:26,710 >> Постојат некои други алтернативи кои можете да го користите. 598 00:42:26,710 --> 00:42:31,600 И јас ќе ви покажам нив тука. 599 00:42:31,600 --> 00:42:35,790 Ако се чувствуваат поудобно во Пајтон наместо Руби можеби, 600 00:42:35,790 --> 00:42:39,290 постои библиотека наречена Красна супа. 601 00:42:39,290 --> 00:42:40,430 Можете да го користите. 602 00:42:40,430 --> 00:42:42,270 Тоа е многу сличен на Nokogiri. 603 00:42:42,270 --> 00:42:44,620 Таа има уште неколку карактеристики. 604 00:42:44,620 --> 00:42:52,160 Можете да најдете и HTML таг тогаш се движат нагоре или се движи накосо. 605 00:42:52,160 --> 00:42:54,690 >> Има PyQt. 606 00:42:54,690 --> 00:42:57,820 Ова всушност може да се изгребе динамичен сајтови, бидејќи тоа е вид на 607 00:42:57,820 --> 00:43:02,540 е WebKit која претендира да биде прелистувачот без таму се всушност 608 00:43:02,540 --> 00:43:03,670 да се биде пребарувач. 609 00:43:03,670 --> 00:43:07,490 Па тоа ќе чекаат за сите Го вклучите Javascript-се вчита, а потоа 610 00:43:07,490 --> 00:43:09,560 оди и да се обиде и да се изгребе страницата. 611 00:43:09,560 --> 00:43:13,560 >> Ако сакате да се држиме со Руби, ќе може да оди едно ниво нагоре од Nokogiri. 612 00:43:13,560 --> 00:43:17,650 Можете да го користите со Capybara a poltergeist обвивка. 613 00:43:17,650 --> 00:43:22,910 И ова всушност може да во суштина прават истото 614 00:43:22,910 --> 00:43:26,610 како PyQt, што е тоа е WebKit. 615 00:43:26,610 --> 00:43:29,610 Тоа го чека Го вклучите Javascript-се вчита во прв план. 616 00:43:29,610 --> 00:43:33,340 Ако тинтири околу со тоа доволно, Можете дури и може да се добие тоа да кликнете на работите. 617 00:43:33,340 --> 00:43:42,780 >> Па ако има линк што не е класичен href каде 618 00:43:42,780 --> 00:43:46,350 патот е лесно достапен, и тоа е некој да вклучите нешто што детектира 619 00:43:46,350 --> 00:43:49,490 еден клик, всушност можете да го направите тоа. 620 00:43:49,490 --> 00:43:53,430 Повеќе популарна библиотека да се симулираат корисник 621 00:43:53,430 --> 00:43:56,390 е во JavaScript, која е PhantomJS. 622 00:43:56,390 --> 00:44:01,010 Ова очигледно може да се изгребе динамичен сајтови, бидејќи тоа е во суштина 623 00:44:01,010 --> 00:44:04,270 преправајќи се дека Хром без корисничкиот интерфејс. 624 00:44:04,270 --> 00:44:09,970 >> А потоа, се разбира најмногу робустен, но најспоро опција, 625 00:44:09,970 --> 00:44:13,260 Селенот е автоматизација на прелистувачот. 626 00:44:13,260 --> 00:44:15,550 И, за жал, вие нема да биде 627 00:44:15,550 --> 00:44:19,770 во можност да го направите тоа во рамките на вашиот CS50 ИРО. 628 00:44:19,770 --> 00:44:24,140 Затоа што во суштина она што не е тоа подигне во вашиот Хром, 629 00:44:24,140 --> 00:44:27,090 Firefox, без оглед на прелистувачот што сакате да го користите, 630 00:44:27,090 --> 00:44:32,570 и го песни можеби вашиот глушец движење, што и да напишеш во, 631 00:44:32,570 --> 00:44:35,170 и тоа е само вид на автоматизира овој процес. 632 00:44:35,170 --> 00:44:42,070 Па тоа беше развиен како еден вид на веб алатка за тестирање автоматизација. 633 00:44:42,070 --> 00:44:45,910 Но, многу луѓе го користат Селен за стругање на веб-сајтови 634 00:44:45,910 --> 00:44:49,990 кои инаку имаат многу тешкотии стружење 635 00:44:49,990 --> 00:44:53,700 со некои од овие другите, побрзо алатки. 636 00:44:53,700 --> 00:44:57,530 >> Па тоа е се што имам за веб стружење. 637 00:44:57,530 --> 00:44:58,090 Забавувај се. 638 00:44:58,090 --> 00:45:01,762 639 00:45:01,762 --> 00:45:02,680 >> ПУБЛИКАТА: Прашање. 640 00:45:02,680 --> 00:45:04,016 >> РОБЕРТ KRABEK: Да. 641 00:45:04,016 --> 00:45:12,840 >> ПУБЛИКАТА: Дали постои механизам да хаш на веб-сајтот за да можете во основа може да 642 00:45:12,840 --> 00:45:14,207 одат преку него подоцна. 643 00:45:14,207 --> 00:45:15,040 РОБЕРТ KRABEK: Да. 644 00:45:15,040 --> 00:45:21,530 Значи ние се стави на, во нашата На пример, за двете од нив, 645 00:45:21,530 --> 00:45:24,980 ние се стави на целиот веб-сајт во док. 646 00:45:24,980 --> 00:45:31,260 И така може да всушност само се променлива doc и напишете го во датотека. 647 00:45:31,260 --> 00:45:35,490 Значи, ако сакав, можев тоа се напише како HTML датотека, 648 00:45:35,490 --> 00:45:39,280 а потоа, наместо користење OpenURI и барање навивам, 649 00:45:39,280 --> 00:45:43,520 тогаш јас само може да се отвори doc HTML и потоа за пребарување за тоа. 650 00:45:43,520 --> 00:45:47,960 >> ПУБЛИКАТА: Но, може да се зачува вид на онлајн искуство 651 00:45:47,960 --> 00:45:48,930 додека го правите офлајн. 652 00:45:48,930 --> 00:45:51,013 На пример. кога сте лета за неколку часа, 653 00:45:51,013 --> 00:45:54,070 Сакам да се основа архива целиот веб-сајт. [Беззвучен] 654 00:45:54,070 --> 00:45:58,780 >> РОБЕРТ KRABEK: Да, тоа е exactly-- па буквално она што ова е тоа 655 00:45:58,780 --> 00:46:03,010 е тоа е преземање се што ќе биде на оваа адреса. 656 00:46:03,010 --> 00:46:11,280 Значи, ако ние се стрча навивам, тоа е преземање на сите на овој HTML, 657 00:46:11,280 --> 00:46:14,590 и тоа е чување во внатрешноста на променлива док. 658 00:46:14,590 --> 00:46:17,290 Па потоа можете да правите што што сакате да направите со док. 659 00:46:17,290 --> 00:46:18,575 Можете да го излез на датотека. 660 00:46:18,575 --> 00:46:19,950 ПУБЛИКАТА: Но, тоа не се поврзал. 661 00:46:19,950 --> 00:46:20,780 Тоа не е динамичен. 662 00:46:20,780 --> 00:46:22,770 Тоа не е рекурзивен, нели? 663 00:46:22,770 --> 00:46:24,016 Гледаш што мислам? 664 00:46:24,016 --> 00:46:28,359 Се обидувам да се основа еден вид на хаш целиот веб-сајт на мојот хард диск 665 00:46:28,359 --> 00:46:31,150 така што би можел да го направи тоа во основа за неколку часа без интернет. 666 00:46:31,150 --> 00:46:32,025 >> РОБЕРТ KRABEK: Добро. 667 00:46:32,025 --> 00:46:37,140 Значи, ако јас had-- па каде е мојата датотека I / O? 668 00:46:37,140 --> 00:46:47,766 Значи ова е јас датотека / О. Така, наместо да се каже на ова, јас ова го нарекуваат craigslist.html. 669 00:46:47,766 --> 00:46:52,620 670 00:46:52,620 --> 00:46:53,940 Би се отвори дека до. 671 00:46:53,940 --> 00:46:59,020 Би става doc во неа. 672 00:46:59,020 --> 00:47:00,470 Ги затворам датотеката. 673 00:47:00,470 --> 00:47:05,410 А потоа само затоа на CS50 ИРО е на облак, тоа е сеедно. 674 00:47:05,410 --> 00:47:07,710 Јас може да оди тука. 675 00:47:07,710 --> 00:47:09,320 Можам да ја преземете датотеката. 676 00:47:09,320 --> 00:47:11,830 И тогаш тоа ќе биде на мојот хард диск. 677 00:47:11,830 --> 00:47:13,930 За да можете да го прават тоа на тој начин. 678 00:47:13,930 --> 00:47:18,830 Или ако сте дома, а не со помош на CS50 ИРО, како Високата или нешто, 679 00:47:18,830 --> 00:47:21,900 ова е уште полесно, затоа што ова е се достапни на локално ниво, 680 00:47:21,900 --> 00:47:23,020 не се врзани со интернет. 681 00:47:23,020 --> 00:47:24,720 >> ПУБЛИКАТА: гледам. 682 00:47:24,720 --> 00:47:26,580 Ова е за еден посебен проблем. 683 00:47:26,580 --> 00:47:30,410 Можете ли да го прават тоа така што ќе рекурзивно одат неколку слоеви длабоко вид на работа? 684 00:47:30,410 --> 00:47:33,801 >> РОБЕРТ KRABEK: Јас можам да ја преземете папки како и, ако тоа е она што го бараме. 685 00:47:33,801 --> 00:47:34,426 ПУБЛИКАТА: Да. 686 00:47:34,426 --> 00:47:39,890 687 00:47:39,890 --> 00:47:41,440 >> РОБЕРТ KRABEK: Кул. 688 00:47:41,440 --> 00:47:43,182