1 00:00:00,000 --> 00:00:03,234 >> [MÜZİK OYUN] 2 00:00:03,234 --> 00:00:05,275 3 00:00:05,275 --> 00:00:06,400 ROBERT KRABEK: Merhaba, beyler. 4 00:00:06,400 --> 00:00:09,980 Benim adım Robert Krabek ve bir Sizi öğretim olacak 5 00:00:09,980 --> 00:00:15,470 ile web'de kazımak nasıl Ruby kütüphane Nokogiri, 6 00:00:15,470 --> 00:00:17,566 ve bir Chrome uzantısıdır Kimono. 7 00:00:17,566 --> 00:00:20,940 8 00:00:20,940 --> 00:00:25,010 >> Yani ilk var bir kaç şey sen misin 9 00:00:25,010 --> 00:00:28,790 Eğer oldum belki yapabilirim Bugüne kadar tüm psets yapıyor 10 00:00:28,790 --> 00:00:31,170 ve çalışma alanıdır Biraz dolmak. 11 00:00:31,170 --> 00:00:37,060 Biz aslında sadece gidip edebilirsiniz Sizin için yeni bir çalışma alanı oluşturmak 12 00:00:37,060 --> 00:00:41,220 sadece yepyeni bir proje yapmak için. 13 00:00:41,220 --> 00:00:46,160 Devam etmek istiyor musunuz Yani eğer CS50 şablon kimliği çalışan 14 00:00:46,160 --> 00:00:49,080 Eğer şu anda sahip olduğu, çekinmeyin ve sadece can 15 00:00:49,080 --> 00:00:54,700 CFLAGS ile Nokogiri yüklemek equals-- mücevher Nokogiri yükleyin. 16 00:00:54,700 --> 00:00:56,930 Ama aksi takdirde ben size göstereceğim Yeni bir tane kurmanız için nasıl. 17 00:00:56,930 --> 00:01:01,210 Ve sonra bu temelde Daha fazla eğitim tekerlekleri bırakarak. 18 00:01:01,210 --> 00:01:07,120 Eğer sanki Ve kodlama ediyoruz Sadece Sublime falan kodlama. 19 00:01:07,120 --> 00:01:12,365 Bunu üzerine vardiya Yani eğer. 20 00:01:12,365 --> 00:01:14,930 21 00:01:14,930 --> 00:01:18,690 >> Yani bu mevcut CS 50 ID olduğunu söylüyorlar. 22 00:01:18,690 --> 00:01:21,490 Sadece burada Cloud9 gidebilirsiniz. 23 00:01:21,490 --> 00:01:22,725 Sen pano gidebilirsiniz. 24 00:01:22,725 --> 00:01:26,720 25 00:01:26,720 --> 00:01:29,950 Bu Workspaces sekmesini getirmek gerekir. 26 00:01:29,950 --> 00:01:32,980 Ve sonra sadece tıklayabilirsiniz Burada, Yeni Bir Çalışma Alanı oluşturun. 27 00:01:32,980 --> 00:01:37,600 Yeni çalışma alanı ad, belki test ya da kazıma. 28 00:01:37,600 --> 00:01:42,700 Ve sonra burada bu özel sekmesini tıklatın, Bunun yerine CS50 şablonları sekmesinin. 29 00:01:42,700 --> 00:01:45,155 Ve sonra sadece gidebilirsiniz ve yeni bir çalışma alanı oluşturmak. 30 00:01:45,155 --> 00:01:48,280 >> Ben zaten burada bir çalışma alanı oluşturduk. 31 00:01:48,280 --> 00:01:50,640 Yani biz bu birlikte çalışma olacak. 32 00:01:50,640 --> 00:01:55,380 Ve yeni bir oluşturduğunuz takdirde Çalışma alanı Özel sekmesinde öylesine, 33 00:01:55,380 --> 00:02:04,560 Sadece taş yüklemek yazabilirsiniz Burada gitmiyor Nokogiri. 34 00:02:04,560 --> 00:02:06,230 Tamam, biraz donmuş var. 35 00:02:06,230 --> 00:02:08,979 Ama Nokogiri yüklemek mücevher yazabilirsiniz. 36 00:02:08,979 --> 00:02:15,970 Ve hepsi olması gerektiği tesisata var. 37 00:02:15,970 --> 00:02:20,590 >> Dediğim gibi, önce hala iseniz senin CS50 şablon kimliği çalışan, 38 00:02:20,590 --> 00:02:30,270 Sadece CFLAGS yazmanız gerekir taş Nokogiri yüklemek eşittir. 39 00:02:30,270 --> 00:02:33,130 Ve ben zaten yükledim Burada ben bunu yapmayacağım. 40 00:02:33,130 --> 00:02:38,500 Ancak için, aşağıdaki birlikte, bunu yapmak için çekinmeyin. 41 00:02:38,500 --> 00:02:46,000 >> Eğer Nokogiri var bu yüzden bir kez çalışma alanı veya kütüphane yüklü, 42 00:02:46,000 --> 00:02:49,500 Sana biraz vereceğim Ruby sözdizimi bir kurs ve 43 00:02:49,500 --> 00:02:53,380 Nokogiri Ruby kütüphane çünkü. 44 00:02:53,380 --> 00:03:03,710 Yani bazı temel bilmek gerekir Nokogiri ile çalışmak için Ruby sözdizimi. 45 00:03:03,710 --> 00:03:08,750 Yani bazı temel farklar alıştığınız ne 46 00:03:08,750 --> 00:03:13,370 belki çalışıyoruz eğer Bugüne kadar sadece C ve PHP, 47 00:03:13,370 --> 00:03:16,010 hiçbir türüyle değişkenleri bildirmek. 48 00:03:16,010 --> 00:03:19,720 Sen noktalı virgül kullanmayın, hangi bir rahatlama türüdür. 49 00:03:19,720 --> 00:03:25,480 Şimdi etrafta hiçbir parantez var ya da döngüleri sırasında, mesela. 50 00:03:25,480 --> 00:03:29,460 Sadece kod bloğunu var ve o zaman o sonunda sona erdirdi. 51 00:03:29,460 --> 00:03:32,380 Hiçbir artı var artı veya eksi eksi, sadece bu yüzden 52 00:03:32,380 --> 00:03:36,180 zaman için biliyorum Eğer döngüler için yapıyoruz, 53 00:03:36,180 --> 00:03:38,620 sadece artı ve eksi eşittir eşittir. 54 00:03:38,620 --> 00:03:43,310 Ve yerine karma içerir Eğer ihtiyaç kullanmak ve edeceğiz 55 00:03:43,310 --> 00:03:47,755 çalışıyor olursa olsun kütüphanesi programınıza yüklemek için. 56 00:03:47,755 --> 00:03:51,610 57 00:03:51,610 --> 00:03:53,430 >> Ruby derlenmiş bir dil değildir. 58 00:03:53,430 --> 00:03:55,550 Yani başka bir rahatlama. 59 00:03:55,550 --> 00:03:59,350 PHP nerede daha benzer var bu bir dil var. 60 00:03:59,350 --> 00:04:03,570 Herhangi bir Ruby komut çalıştırabilirsiniz Yakut takip ile yazdığınız 61 00:04:03,570 --> 00:04:07,380 senin komut dosyası veya programın adıyla. 62 00:04:07,380 --> 00:04:13,000 Bir Ruby programı olduğunu belirtmek için, Sadece .rb yerine .c ile bitirin. 63 00:04:13,000 --> 00:04:17,440 Ve değişken vardır Ruby boyutlu diziler, 64 00:04:17,440 --> 00:04:23,200 hangi olduğunuzda süper uygun kazıma ve belki de eklemek istiyorum 65 00:04:23,200 --> 00:04:26,090 Eğer bir diziye kazınmış ettik veriler. 66 00:04:26,090 --> 00:04:31,960 Sen yeni bir dizi malloc zorunda değilsiniz ve Yeni diziye eski dizi kopyalayın. 67 00:04:31,960 --> 00:04:36,150 Sadece ile ekleyebilirsiniz iki ok işaretleri. 68 00:04:36,150 --> 00:04:39,820 Ve hiçbir karakter var, orada Sadece tek harf dizeleri. 69 00:04:39,820 --> 00:04:44,760 Yani biraz daha kolay olmalı. 70 00:04:44,760 --> 00:04:50,130 >> Yani biz sadece sana vereceğim Bazı temel Ruby sözdizimi örnekleri. 71 00:04:50,130 --> 00:04:57,100 Yani burada yerine görebilirsiniz çizgi çizgi, Ruby Yorumlamak için 72 00:04:57,100 --> 00:04:58,740 Sadece pound işareti kullanın. 73 00:04:58,740 --> 00:05:04,990 Ve Değişken bildirimi, sen Sadece değişken eşittir tip 74 00:05:04,990 --> 00:05:07,971 ne olursa olsun değişken olmak istiyorum. 75 00:05:07,971 --> 00:05:09,220 Onlar dizeleri olabilirler. 76 00:05:09,220 --> 00:05:14,120 Sen dizi var hangi Eğer değerlerle doldurmak. 77 00:05:14,120 --> 00:05:17,240 koyar ve baskılar benzerdir. 78 00:05:17,240 --> 00:05:20,110 Bizim amaçlarımız için, Tek fark gerçekten 79 00:05:20,110 --> 00:05:25,500 Bu açılımı, hangi koyar koyar, sadece yeni bir satır koyar 80 00:05:25,500 --> 00:05:27,440 karakter ne olursa olsun at yazdırdığınız ediyoruz. 81 00:05:27,440 --> 00:05:30,980 >> Biz küçük verirsen yüzden Burada gösteri, 82 00:05:30,980 --> 00:05:41,800 Bu Şarkı söylemeyi kes çalışabilir yeni bir terminal açın. 83 00:05:41,800 --> 00:05:46,020 Bu tüm görebilirsiniz Benim terminalde bulunan dosyalar. 84 00:05:46,020 --> 00:05:50,960 Ve ben sadece çalıştırırsanız Yakut, yakut intro.rb, o 85 00:05:50,960 --> 00:05:53,530 Merhaba beş koyar Mather, Quincy, Taşıyıcı. 86 00:05:53,530 --> 00:05:54,410 Adams. 87 00:05:54,410 --> 00:05:59,295 Hepsi bu yüzden orada ilan diziler. 88 00:05:59,295 --> 00:06:01,670 HEDEF KİTLE: Robert yapabilirsiniz yazı tipi biraz daha büyük? 89 00:06:01,670 --> 00:06:02,461 ROBERT KRABEK: Evet. 90 00:06:02,461 --> 00:06:05,370 91 00:06:05,370 --> 00:06:12,280 Bunu yapamazsınız çünkü ben yakınlaştırma yapabilirsiniz görünüşte Terminal yazı tipleri yakınlaştırmak. 92 00:06:12,280 --> 00:06:18,790 93 00:06:18,790 --> 00:06:24,630 >> Yani yazdırmak nasıl senin terminale değişkenleri. 94 00:06:24,630 --> 00:06:28,820 Da kullanabilirsiniz bir dize içindeki değişkenler. 95 00:06:28,820 --> 00:06:33,720 Yani son zamanlarda PHP, Eğer öğrenmiş olabilir 96 00:06:33,720 --> 00:06:37,340 dize enterpolasyon olduğunu. 97 00:06:37,340 --> 00:06:43,830 Yani burada bir göz atın, eğer, ben ise , üç değişken, isim, kütüphane beyan 98 00:06:43,830 --> 00:06:49,700 ve dil ve ben koyar, ben Bir dize yazmak, merhaba benim adım. 99 00:06:49,700 --> 00:06:54,190 Ve sonra yerine PHP dize enterpolasyon versiyonu 100 00:06:54,190 --> 00:06:58,960 hangi Böyle biraz daha bakar, Eğer bir pound işareti ve 101 00:06:58,960 --> 00:07:01,220 Bir kaşlı ayraç, ve sonra değişkenin adı. 102 00:07:01,220 --> 00:07:07,350 Ve bu yazdırmak istiyorum, nasıl ki var, ne olursa olsun, değişken adıdır. 103 00:07:07,350 --> 00:07:10,140 >> Ve o zaman da yapabilirsiniz dizeleri bitiştirmek. 104 00:07:10,140 --> 00:07:12,890 Ruby süper yapar artı işareti kolay. 105 00:07:12,890 --> 00:07:16,110 Sadece tek bir dize var Soldaki artı değişkeni 106 00:07:16,110 --> 00:07:18,860 başka bir dize artı bir dize ya da. 107 00:07:18,860 --> 00:07:23,500 Ben bu çıktısını eğer, olması gerektiği Yani Sadece benim adım Robert Merhaba, söylüyorlar. 108 00:07:23,500 --> 00:07:27,340 Seni Ruby Nokogiri öğretim olacak. 109 00:07:27,340 --> 00:07:35,370 >> Ve Sadece bu teyit edelim Gerçekten case-- yakut intro. 110 00:07:35,370 --> 00:07:36,480 Merhaba, benim adım Robert. 111 00:07:36,480 --> 00:07:40,160 Seni Ruby Nokogiri öğretim olacak. 112 00:07:40,160 --> 00:07:45,600 >> Devam ediyoruz, başka ifadeleri ise, Biraz farklı 113 00:07:45,600 --> 00:07:49,800 Eğer için kullanılmış olabilir ne C de çalışıyoruz eğer 114 00:07:49,800 --> 00:07:53,200 Sen parantez gerek yok. 115 00:07:53,200 --> 00:07:55,220 Sen küme parantezi gerekmez. 116 00:07:55,220 --> 00:08:00,170 Ve yerine else if bölgesinin Bir birleştirilmiş elsif var. 117 00:08:00,170 --> 00:08:07,260 Buraya Yani, ben beyan ettik kadar x Gördüğümüz gibi burada, x hala 5'tir. 118 00:08:07,260 --> 00:08:11,100 X 3'ten az ise Yani, küçük koyacağım. 119 00:08:11,100 --> 00:08:14,030 O 7, orta, başka büyük az ise. 120 00:08:14,030 --> 00:08:17,340 Yani 5 orta sayıdır. 121 00:08:17,340 --> 00:08:22,270 Ve ben ucu Bu kod bloğunu sonunda. 122 00:08:22,270 --> 00:08:24,920 >> İşte döngü için benim olayım. 123 00:08:24,920 --> 00:08:28,240 Ve bu sözdizimi da biraz degisik. 124 00:08:28,240 --> 00:08:33,500 0 beş sadece esas 0 ile 5 arasında bir dizi ilan edilir. 125 00:08:33,500 --> 00:08:36,120 Yani dizide beş yuva var. 126 00:08:36,120 --> 00:08:40,500 Ve o her yuva için Dizi, ben i artan olacak. 127 00:08:40,500 --> 00:08:46,080 Yani bu 4 0'dan 5'e kadar, veya 0 yazdırır. 128 00:08:46,080 --> 00:08:49,630 Ve bu orta yazdırır. 129 00:08:49,630 --> 00:08:51,370 >> Ve ben sadece aracılığıyla yangını edeceğiz. 130 00:08:51,370 --> 00:08:54,466 Siz erişimine sahip olacaktır Daha sonra bu kodu. 131 00:08:54,466 --> 00:08:55,965 Yani siz bu kendinizi çalıştırabilirsiniz. 132 00:08:55,965 --> 00:09:02,090 133 00:09:02,090 --> 00:09:06,620 >> Yani bu temel while döngüsüdür. 134 00:09:06,620 --> 00:09:12,230 Bu sadece j yazdırmayı olacak, biz 5 vurmak kadar 1'den başlayarak. 135 00:09:12,230 --> 00:09:18,320 >> Süper hızlı Ruby kurs bir işlev yazmak nasıl. 136 00:09:18,320 --> 00:09:24,460 Yerine, demek, int faktöryel sayı, sadece def var. 137 00:09:24,460 --> 00:09:28,450 Ve esasen sen Burada bir işlev tanımlama. 138 00:09:28,450 --> 00:09:30,600 Bu olacak Fonksiyonun adı, 139 00:09:30,600 --> 00:09:34,280 ve bu herhangi bir değişkenler olduğunu sen fonksiyonuna geçmek istiyorum. 140 00:09:34,280 --> 00:09:36,760 Sen içinde ise ifadeleri olabilir. 141 00:09:36,760 --> 00:09:38,030 Sen dönebilirsiniz. 142 00:09:38,030 --> 00:09:42,620 Bu durumda, konum Bir yinelemeli tanımlayan 143 00:09:42,620 --> 00:09:45,000 uygulanan faktöryel fonksiyonu. 144 00:09:45,000 --> 00:09:48,660 Yani biz sadece arama işlevleri Böyle Ruby. 145 00:09:48,660 --> 00:09:54,700 >> Ben bu ben, tanımladığınız Yani 3 geçmek, faktöriyel arayabilirler 146 00:09:54,700 --> 00:09:59,700 ve daha sonra 3 sayı değişken olacaktır Ben işlev içinde kullanabilirsiniz. 147 00:09:59,700 --> 00:10:08,010 Ve bu to_s sadece dönüyor Bir dizeye faktoryel değerini döndürür. 148 00:10:08,010 --> 00:10:10,760 Aksi takdirde bu atacağım Bir hata ben, oh diyerek 149 00:10:10,760 --> 00:10:13,230 Bir string-- baskı olamaz hatırlayacağınız gibi, çünkü 150 00:10:13,230 --> 00:10:18,230 bunun nedeni string-- konur koyar faktöryel bir numara döndü. 151 00:10:18,230 --> 00:10:21,850 Yani biz o dönüştürebilirsiniz gibi gibi bir dizeye. 152 00:10:21,850 --> 00:10:27,856 Ve tersine, sen de dönüştürebilirsiniz to_i bir tamsayı bir dize. 153 00:10:27,856 --> 00:10:32,650 >> Yani her şey süper basit hale Ben sadece bu açıklama ise, tasarruf 154 00:10:32,650 --> 00:10:36,250 ve faktör işlevi çalıştırmak. 155 00:10:36,250 --> 00:10:39,850 Biz görmek gerekir 3 Bu faktöryel 6. 156 00:10:39,850 --> 00:10:42,790 Ve bu gerçekten doğrudur. 157 00:10:42,790 --> 00:10:46,160 >> Böylece Ruby senin kurs var. 158 00:10:46,160 --> 00:10:53,550 Ve şimdi Ruby biliyorum, biz gidebiliriz Temel Nokogiri için kurulmuş kazıma. 159 00:10:53,550 --> 00:10:58,190 Esasen sen tüm yapmanız gereken, Ruby, kütüphaneler gerektirir. 160 00:10:58,190 --> 00:11:04,390 Ve bizim için kullandığımız olacak Kütüphane openURI olarak Nokogiri. 161 00:11:04,390 --> 00:11:07,870 Ve o zaman ne sen sanıyor- ve olacak Sana bu-- sözdizimi vermek 162 00:11:07,870 --> 00:11:16,010 Eğer yaptığınız kadar URL açmak olduğunu C URL için duran bir cURL isteği. 163 00:11:16,010 --> 00:11:20,330 >> Yani URL'sini almak Söz konusu web sitesi. 164 00:11:20,330 --> 00:11:22,030 Bir değişkende saklayın. 165 00:11:22,030 --> 00:11:27,400 Ve sonra o arama yapabilirsiniz kullanarak benzersiz HTML etiketleri için değişken 166 00:11:27,400 --> 00:11:30,590 .css komutu. 167 00:11:30,590 --> 00:11:34,360 Ve sonra çıktısını alabilirsiniz istediğiniz yere içeriği. 168 00:11:34,360 --> 00:11:35,720 Bir veritabanında başlayabilirsiniz. 169 00:11:35,720 --> 00:11:42,040 You can bir dosya çıktı, ya da hatta sadece ekrana yazdırmak. 170 00:11:42,040 --> 00:11:47,290 >> Bu yüzden size temel bir kazıyıcı göstereceğim. 171 00:11:47,290 --> 00:11:52,570 Burada biz var görebilirsiniz Nokogiri gerektiren açık-uri gerektirir. 172 00:11:52,570 --> 00:11:57,150 Sizin temel set up, hadi , belge veya doktor diyorlar 173 00:11:57,150 --> 00:12:07,780 Nokogiri :: HTML, hangi açık eşittir openURI tarafından bildirilen komut 174 00:12:07,780 --> 00:12:08,920 kütüphane. 175 00:12:08,920 --> 00:12:14,000 Ve biz bu için, arama olacak dörtlü yaşayan olabilir sen, 176 00:12:14,000 --> 00:12:21,270 Boston'da listelenir bisiklet için Boston Craigslist bisiklet bölümünde 177 00:12:21,270 --> 00:12:22,020 bir site. 178 00:12:22,020 --> 00:12:26,460 >> Eğer alışık değilseniz Yani cURL ile, ben sadece edeceğiz 179 00:12:26,460 --> 00:12:28,930 Gerçek hızlı cURL ne yapacak göstereyim. 180 00:12:28,930 --> 00:12:38,350 Ben URL'ye tüm almak istedim Craigslist sitesi, ben kıvırmak yazarsanız, 181 00:12:38,350 --> 00:12:44,950 Sadece URL tüm dökümlerini Craigslist bisiklet sitesinden 182 00:12:44,950 --> 00:12:46,720 Benim terminalde üzerine. 183 00:12:46,720 --> 00:12:49,130 Özellikle değil kullanışlı ben çünkü 184 00:12:49,130 --> 00:12:53,330 El ile gitmek istiyorum ve Ben arıyorum şey bulmak. 185 00:12:53,330 --> 00:13:01,590 Ama sadece bu yüzden yapabilirsiniz Aslında olduğumu bakın 186 00:13:01,590 --> 00:13:13,966 Eğer bakarsanız, doğru kodu kullanarak bikes-- içinde Craigslist için URL adresinde 187 00:13:13,966 --> 00:13:17,460 nedense bulunamadı değil. 188 00:13:17,460 --> 00:13:20,340 Bu sayfaya bakarsanız ve URL bakmak 189 00:13:20,340 --> 00:13:23,970 Bu aynı olmalıdır Ben sadece göndermek cURL isteği. 190 00:13:23,970 --> 00:13:27,700 Ve gerçekten de, varlık ne var doc değişkeninde saklanır. 191 00:13:27,700 --> 00:13:36,540 >> Yani bizim kod geri döndüğünüzde, biz Daha sonra bu doc ​​değişkeni çalışabilir 192 00:13:36,540 --> 00:13:40,660 css kullanarak. 193 00:13:40,660 --> 00:13:49,240 Yani tüm almak istedim demek span.txt olan etiketler, 194 00:13:49,240 --> 00:13:51,740 ve bu etiketi içinde tüm etiketleri. 195 00:13:51,740 --> 00:13:56,150 Ve neden isteyebilirsiniz Bunu yapmak, seni ağlarken duymak? 196 00:13:56,150 --> 00:14:02,920 >> Biz Elemanı kontrol edin, bu size bir verir URL yapılandırılmıştır nasıl dökümü. 197 00:14:02,920 --> 00:14:06,200 Ben aşağı kaydırma varsa Burada görebilirsiniz 198 00:14:06,200 --> 00:14:08,770 Ne bu farklı her elementleri temsil eder. 199 00:14:08,770 --> 00:14:13,410 Yani belki de erişmek istediğiniz Bu özel unsur. 200 00:14:13,410 --> 00:14:16,820 Yani Chrome geliştirici kullanıyorum araçlar Elemanı kontrol edin için. 201 00:14:16,820 --> 00:14:22,970 Ben buraya bakınız bu o olabilir Bir Bir yayılma alanı içindeki bir etikettir 202 00:14:22,970 --> 00:14:26,230 txt bir sınıf ile etiketleyin. 203 00:14:26,230 --> 00:14:29,610 >> Yani bu alır bizim İlk operasyon hangi 204 00:14:29,610 --> 00:14:37,330 etiketi doc.css yayılma olduğunu Tüm bu URL içinde arıyorum. 205 00:14:37,330 --> 00:14:43,650 Ve sonra .txt CSS gibi çok çalışır Sadece CSS yazarken yapar 206 00:14:43,650 --> 00:14:49,630 tarafından HTML dosyaları Bir sınıf belirterek. 207 00:14:49,630 --> 00:14:57,980 Yani bu özel operatör olacak txt sınıfına sahip bir span etiketi belirtin. 208 00:14:57,980 --> 00:15:02,800 Ve sonra bir boşluk bırakırsanız, Bu o etiketi içinde gidecek 209 00:15:02,800 --> 00:15:05,170 ve daha sonra bir o içindeki bir etiket bulmak. 210 00:15:05,170 --> 00:15:10,750 >> Yani sadece bu koyarsanız Terminal, ben gerektiği 211 00:15:10,750 --> 00:15:21,630 esasen her şeyi görmek mümkün bu sınıf txt bu zaman dilimi içinde olduğunu. 212 00:15:21,630 --> 00:15:22,890 Yani biz bir gitmek olduğunu vereceğiz. 213 00:15:22,890 --> 00:15:25,870 214 00:15:25,870 --> 00:15:27,756 yakut craigslist-kazıyıcı. 215 00:15:27,756 --> 00:15:31,850 216 00:15:31,850 --> 00:15:37,250 Ve gerçekten bu bize tüm bu verir Çeşitli listeleri etiketleri olduğunu 217 00:15:37,250 --> 00:15:40,400 Craigslist sayfasında bulunmaktadır. 218 00:15:40,400 --> 00:15:45,670 >> Biz geri gitmek, yani biz bu açabilirsiniz içine bir şey biraz daha kullanışlı. 219 00:15:45,670 --> 00:15:51,050 Belki biz sadece linkleri istiyoruz. 220 00:15:51,050 --> 00:15:58,790 Bu etiketi içinde, ben de olacak çünkü yolun köprü var 221 00:15:58,790 --> 00:16:00,590 bu sayfayı gider. 222 00:16:00,590 --> 00:16:09,100 Yani burada bu kodu bakarsanız, ne yapacağım, yerine .css biridir 223 00:16:09,100 --> 00:16:12,380 Ben at_css gidebilirsiniz. 224 00:16:12,380 --> 00:16:16,820 Ve bu sadece ilk alacak tüm bunları unsuru. 225 00:16:16,820 --> 00:16:20,890 Ben olsaydım o kadar yapmak için çok Kod Ben sadece daha önce gösterdi, 226 00:16:20,890 --> 00:16:23,800 yerine, tüm dönen Bu nedenle, sadece olur 227 00:16:23,800 --> 00:16:26,850 Bunlardan ilkini döndürür. 228 00:16:26,850 --> 00:16:31,310 At_css operatörü nasıl çalıştığını Yani bu. 229 00:16:31,310 --> 00:16:39,460 >> Yani biz saklamak istediğiniz yol, ilk Etiketin tüm. 230 00:16:39,460 --> 00:16:47,430 Ve bizi bir- verecektir çünkü biz hala css kullanmak için gidiyoruz. 231 00:16:47,430 --> 00:16:53,830 Ama bu, çünkü verecek bize geri etiketleri bütün bir dizi, 232 00:16:53,830 --> 00:16:55,710 Biz erişmek için gidiyoruz İlk unsur. 233 00:16:55,710 --> 00:17:01,700 Yani bu başka bir yolu olduğunu yapabilirsiniz olduğunu eğer herhangi bir öğesine erişmek 234 00:17:01,700 --> 00:17:04,810 elemanlarının bir dizi bilgisi döndürülür, 235 00:17:04,810 --> 00:17:11,930 Bir şey davranabilirsiniz çünkü esasen bir dizi olarak .css döner. 236 00:17:11,930 --> 00:17:16,880 Ve sonra erişmek için gidiyoruz Bu köprü referans niteliği. 237 00:17:16,880 --> 00:17:24,810 >> Yani bir göz atın, eğer, eğer Eğer burada gerçekten yakın görünüyordu 238 00:17:24,810 --> 00:17:28,270 sadece temelde eğer URL çubuğuna bakmak, 239 00:17:28,270 --> 00:17:33,880 Bu yol olduğunu Eğer kazıma için gidiyoruz. 240 00:17:33,880 --> 00:17:41,565 Biz sadece tekrar çalıştırın Yani, ve biz bunu kaydettiğiniz emin olun. 241 00:17:41,565 --> 00:17:47,040 242 00:17:47,040 --> 00:17:48,300 Evde kontrol edebilirsiniz. 243 00:17:48,300 --> 00:17:51,430 Bu aslında bu bağlantı ile eşleşen. 244 00:17:51,430 --> 00:17:55,950 >> Peki neden bu kullanmak isteyebilirsiniz? 245 00:17:55,950 --> 00:17:57,870 Eğer kazımak istiyorsan o ve sahip sayfa 246 00:17:57,870 --> 00:18:00,270 gibi bağlantıları bir sayfa Craigslist, yok sen 247 00:18:00,270 --> 00:18:03,210 Daha sonra gitmek isteyebilirsiniz Bu bağlantıların her birine 248 00:18:03,210 --> 00:18:05,120 ve kazıma Bu içeriği olan 249 00:18:05,120 --> 00:18:08,520 Biz yapacağız tam olarak ne olduğunu. 250 00:18:08,520 --> 00:18:11,660 >> Eğer olarak yola sahip bu yüzden bir kez Değişken, ben artık gerçekten 251 00:18:11,660 --> 00:18:13,200 Bunu yazdırarak umurumda. 252 00:18:13,200 --> 00:18:15,420 Ben sadece bir değişken olarak saklamak gerekir. 253 00:18:15,420 --> 00:18:20,980 Ve sonra ben başka erişebilirsiniz Ben erişmek aynı şekilde sayfası 254 00:18:20,980 --> 00:18:22,260 ilk etapta doktor. 255 00:18:22,260 --> 00:18:25,920 URL ile hariç, biz gidiyoruz dize enterpolasyon kullanmak için 256 00:18:25,920 --> 00:18:29,180 gibi ben açıklayan Yakut daha önce üzerinde eklemek için 257 00:18:29,180 --> 00:18:32,010 kökün ucuna yolu. 258 00:18:32,010 --> 00:18:38,970 >> Peki bunu yapmak için gidiyor olmasıdır Bu yolda koymak için gidiyor 259 00:18:38,970 --> 00:18:42,360 Daha önce alıntı, ve o çevirmek 260 00:18:42,360 --> 00:18:49,580 yeni bir öğe haline, sen istersen bu-- örneğin first_listing gönderilsin. 261 00:18:49,580 --> 00:18:52,900 Ama terk edeceğim Şimdilik öğe üzerinde o 262 00:18:52,900 --> 00:18:55,420 ben burada kullanıyorum çünkü ne. 263 00:18:55,420 --> 00:19:02,900 >> Yani açıklamasını almak istedim demek Craigslist ilk gönderme. 264 00:19:02,900 --> 00:19:04,740 Yani buraya gitmek istiyorum. 265 00:19:04,740 --> 00:19:10,660 Ben Elemanı inceleyin üzerine tıklıyorsunuz Yine, bu açıklama nedeniyle. 266 00:19:10,660 --> 00:19:14,350 Buraya gidip görmek istiyorum Ben bulup bulamayacağını nasıl olabilir 267 00:19:14,350 --> 00:19:16,530 Bu eşsiz etiketi için arama yapabilmek. 268 00:19:16,530 --> 00:19:19,530 Bu durumda, var bizi bir kimlik, 269 00:19:19,530 --> 00:19:26,810 için arama sonraki şekilde etiketler, hangi bir hashtag ile. 270 00:19:26,810 --> 00:19:30,670 >> Sınıflar için şunları yapabilirsiniz yüzden nokta operatörünü kullanın. 271 00:19:30,670 --> 00:19:38,610 Yani .txt, txt bir sınıf belirttiğini karma oysa bir kimlik belirtir. 272 00:19:38,610 --> 00:19:43,720 Yani bu durumda, etiketi bölüm ve kimlik postingbody olduğunu. 273 00:19:43,720 --> 00:19:47,780 >> Yani bu gider ve bulur birinci-- biz çünkü 274 00:19:47,780 --> 00:19:51,200 Bu gider at_css-- kullanarak ilk elemanını bulur 275 00:19:51,200 --> 00:19:57,180 bölümün etiketi ile çıkageldi ve postingbody kimliği. 276 00:19:57,180 --> 00:20:02,636 Ve sonra metin öğesi erişebilirsiniz o öğenin .text ile döndü. 277 00:20:02,636 --> 00:20:06,230 Ve sonra biz saklayabilirsiniz açıklama bu. 278 00:20:06,230 --> 00:20:09,370 >> Yani şimdi bir var Değişken açıklama 279 00:20:09,370 --> 00:20:14,850 biz diyelim ki, yapmak mümkün olabilir I / O dosya. Yani Ruby I / O dosya 280 00:20:14,850 --> 00:20:21,310 I / O dosya çok benzer C bir dosyayı açmak nerede. 281 00:20:21,310 --> 00:20:23,260 Biz buna yazabilir. 282 00:20:23,260 --> 00:20:25,060 Ve sonra biz bu dosyayı kapatın edeceğiz. 283 00:20:25,060 --> 00:20:29,660 >> Yani burada, biz sadece adlandırma ediyoruz Bazı keyfi değişken dosya. 284 00:20:29,660 --> 00:20:33,120 Biz de sadece burada bu atabilirdi. 285 00:20:33,120 --> 00:20:39,630 Biz depolamak değişken var File.Open gibi açık dosya. 286 00:20:39,630 --> 00:20:46,370 Ve biz, bu dosyaya yazıyoruz bu yüzden w operatörü ile açın. 287 00:20:46,370 --> 00:20:54,280 Sonra içine dize koymak .puts operatörü ile dosya. 288 00:20:54,280 --> 00:20:58,310 Ve sonra biz değişkeni koymak biz Bu dosyaya, yazmak istiyorum. 289 00:20:58,310 --> 00:21:00,200 Ve sonra biz sadece dosyayı kapatın. 290 00:21:00,200 --> 00:21:04,000 >> Bu yüzden go ahead ve bu çalıştırırsanız, Bu belgeyi üretmek gerekir 291 00:21:04,000 --> 00:21:10,840 description.txt hangi olacak Bunun içinde bu açıklama var. 292 00:21:10,840 --> 00:21:14,015 Yani eğer hayır Durdur-- çalıştırın. 293 00:21:14,015 --> 00:21:17,520 294 00:21:17,520 --> 00:21:23,330 Bu, bir metin dosyası üretti var umarım aynı şey. 295 00:21:23,330 --> 00:21:25,850 296 00:21:25,850 --> 00:21:33,290 Yani yeni bir gönderme var olmuş olabilir Ben durduk iken kadar geldi. 297 00:21:33,290 --> 00:21:36,580 Olmuştur gibi Ve gerçekten de görünüyor. 298 00:21:36,580 --> 00:21:43,380 Yani biz bu klasik bisiklet giderseniz, 1962 1966 için, o maç gibi görünüyor. 299 00:21:43,380 --> 00:21:45,620 Ve oraya gitmek. 300 00:21:45,620 --> 00:21:51,250 >> Yani en temel var kazıma işlevselliği. 301 00:21:51,250 --> 00:21:57,510 Biz yerine olabilirdi Sadece bu dosyaya yazma, 302 00:21:57,510 --> 00:21:59,930 Biz bir dizi şeyler ekleyebilirsiniz. 303 00:21:59,930 --> 00:22:03,770 Üç diziler bildirmek Yani, başlık, fiyat ve açıklama. 304 00:22:03,770 --> 00:22:06,310 305 00:22:06,310 --> 00:22:13,790 Ve biz şimdi doktor öğe üzerinde çalışan ediyoruz. 306 00:22:13,790 --> 00:22:16,940 Biz geçmesi ve olabilir span.txt tüm bulabilirsiniz. 307 00:22:16,940 --> 00:22:21,710 Ve bu bir dizi döndürür unutmayın, bulduğu tüm öğeleri. 308 00:22:21,710 --> 00:22:27,300 Ve sonra Ruby, sadece kullanabilirsiniz her madde arasında yineleme için .each 309 00:22:27,300 --> 00:22:28,410 Dizinin. 310 00:22:28,410 --> 00:22:31,330 Ve sonra her madde için, Ben sadece bunu diyeceğim 311 00:22:31,330 --> 00:22:34,620 o çünkü bir bağlantı o aslında ne. 312 00:22:34,620 --> 00:22:46,830 >> Yani her link.css nokta a.hdrlnk koyarsanız, Bu aslında linke gidiyor 313 00:22:46,830 --> 00:22:58,280 ve bu bağlantının içinde başka bulgu HTML öğesi ve ilgili sınıf. 314 00:22:58,280 --> 00:23:04,990 Yani biz ne hatırlıyorum Bu, span.txt oldu 315 00:23:04,990 --> 00:23:13,160 Beni sadece geri gidelim See- edebilirsiniz span.txt içinde gerçek quick-- 316 00:23:13,160 --> 00:23:17,490 diğer sınıfların bir sürü var. 317 00:23:17,490 --> 00:23:27,180 Yani span.txt içinde biz arıyoruz Bir sınıf hdrlnk ile bir etiket için. 318 00:23:27,180 --> 00:23:29,890 Bu yüzden bana sadece bulalım Siz gerçek hızlı için. 319 00:23:29,890 --> 00:23:37,390 320 00:23:37,390 --> 00:23:42,850 >> Burada gördüğünüz Yani, bu bir bir etikettir bu sınıf txt span içinde bulunuyor 321 00:23:42,850 --> 00:23:44,920 Bu sınıf hdrlnk vardır. 322 00:23:44,920 --> 00:23:47,610 Ve gerçekten de ne var Biz almak için çalışıyoruz. 323 00:23:47,610 --> 00:23:54,680 >> Bu yüzden artık tüm saklamak için çalışıyoruz başlık içinde bu bağlantıların. 324 00:23:54,680 --> 00:23:59,545 Ve sonra yazdırmak için gidiyoruz Bu bağlantıların her biri dışında. 325 00:23:59,545 --> 00:24:00,360 Üzgün ​​değil. 326 00:24:00,360 --> 00:24:04,530 Biz yazdırmak için gidiyoruz Bunların her birinin fiyatı. 327 00:24:04,530 --> 00:24:09,350 Yani gerçekten bu çalışmasına izin Hızlı ve ne yaptığını görüyorum. 328 00:24:09,350 --> 00:24:14,680 329 00:24:14,680 --> 00:24:17,720 >> Yani bu sadece temelde gitti bağlantıların her birinden 330 00:24:17,720 --> 00:24:27,310 bu da, söz konusu etiket girip ve daha sonra fiyat çıkardı. 331 00:24:27,310 --> 00:24:33,910 Ve yaptım çünkü sonra Başlığında her şey var, 332 00:24:33,910 --> 00:24:37,260 Biz sadece orada başlık saklanır ettik. 333 00:24:37,260 --> 00:24:40,180 Biz sadece bağlantıyı saklanır ettik Dizi başlık içinde. 334 00:24:40,180 --> 00:24:47,720 Ve döngü işlemi için bu, nerede yerine a.hdrlnk gitmeyi, 335 00:24:47,720 --> 00:24:50,490 Biz span.price arıyoruz. 336 00:24:50,490 --> 00:24:56,500 Ben sadece gerçekten hızlı bir şekilde bulabilirsiniz Yani eğer fiyat, sen eleman incelerseniz, 337 00:24:56,500 --> 00:25:00,610 Eğer bir karış olduğunu görürsünüz fiyat sınıfı. 338 00:25:00,610 --> 00:25:04,670 Ve bu temelde nasıl Biz orada fiyatını alıyoruz. 339 00:25:04,670 --> 00:25:10,040 >> Yani gerçekten kazıma temel olgu. 340 00:25:10,040 --> 00:25:13,550 Yani hepsi olsun nasıl Bir sayfada elemanları 341 00:25:13,550 --> 00:25:16,510 Bu, diyelim ki, zaten URL'sini biliyorum. 342 00:25:16,510 --> 00:25:21,050 >> Biz almak istiyorsanız Yani derinlemesine daha küçük 343 00:25:21,050 --> 00:25:23,950 Biz sayfalarında sayfaları kazımak olabilir. 344 00:25:23,950 --> 00:25:28,480 Bu, örneğin, I olacak Bir CSV dosyası çıktısı olacak. 345 00:25:28,480 --> 00:25:39,510 Yani burada csv kadar gerektiren ediyorum Yakut yok, çünkü kendi içinde, 346 00:25:39,510 --> 00:25:42,350 özelliğe sahip Sadece çıkış CSV dosyalarını. 347 00:25:42,350 --> 00:25:45,030 Yani süper basit. 348 00:25:45,030 --> 00:25:48,710 Bana sadece bir sonraki gidelim. 349 00:25:48,710 --> 00:25:51,640 350 00:25:51,640 --> 00:25:57,170 Biz dosya g / Ç kaplı. Yani bu Bu C. kadar benzer 351 00:25:57,170 --> 00:26:00,870 Ve biz Kimono geçmeden önce, Ben sadece nasıl gerçekten hızlı gösteririz 352 00:26:00,870 --> 00:26:02,790 manzaraları içinde siteleri kazımak için. 353 00:26:02,790 --> 00:26:10,040 >> Yani biz zaten öğrendim Ruby diziler de tanımlanabilir. 354 00:26:10,040 --> 00:26:13,280 Yani sadece bir ilan ediyorum keyfi dizilerin demet 355 00:26:13,280 --> 00:26:16,310 ben içinde veri depolamak olacaktır. 356 00:26:16,310 --> 00:26:20,680 doc aynı şekilde çalışıyor önceki dosyasında olduğu gibi. 357 00:26:20,680 --> 00:26:23,580 Biz bulma gidiyoruz span.txt yılların her. 358 00:26:23,580 --> 00:26:25,040 Biz zaten biliyoruz. 359 00:26:25,040 --> 00:26:32,130 Bu konteyner her hangi mesafede Bağlantı istediğimiz tüm verileri vardır. 360 00:26:32,130 --> 00:26:40,800 >> Yani burada ne yapıyoruz, her içindir span class txt link, biz gidiyoruz 361 00:26:40,800 --> 00:26:45,720 ve biz, bir etiket buluyoruz Bunun ilk elemanını bulma. 362 00:26:45,720 --> 00:26:49,937 , .css Bir dizi döndürür Unutmayın, olarak yani sadece erişemez. 363 00:26:49,937 --> 00:26:51,520 Biz ilk elemanı bulmak için gidiyoruz. 364 00:26:51,520 --> 00:26:56,430 Bu birinin bir dizi olsa bile öğe, bu sözdizimini kullanmak zorunda, 365 00:26:56,430 --> 00:26:58,800 ve daha sonra href niteliğini çekin. 366 00:26:58,800 --> 00:27:01,800 >> Bu yüzden bu daha önce yaptım. 367 00:27:01,800 --> 00:27:04,440 Yani bu tanıdık görünmelidir. 368 00:27:04,440 --> 00:27:14,330 Ve şimdi biz bir dizi var Bizim tüm bağlantıları denir yolları 369 00:27:14,330 --> 00:27:16,590 Kullandığımız istediğiniz gidiyoruz. 370 00:27:16,590 --> 00:27:21,350 Bu yüzden tüm bu dizi varsa Biz Kullanmak istediğiniz yolları, 371 00:27:21,350 --> 00:27:26,840 biz o zaman her biri için bir öğe oluşturabilirsiniz Bu sayfaların biz bu sayfayı açtığınızda. 372 00:27:26,840 --> 00:27:31,150 Biz de gördüğümüz gibi Yani daha önce nerede sözdizimi 373 00:27:31,150 --> 00:27:37,450 yolu ile dize enterpolasyon yapıyor Burada, bu yüzden sözdizimi sadece yolu olduğunu. 374 00:27:37,450 --> 00:27:41,450 Ve ben bu isim olabilir Değişken herhangi bir keyfi bir isim. 375 00:27:41,450 --> 00:27:43,070 >> Bu önemli biridir. 376 00:27:43,070 --> 00:27:46,650 Bunun anlamı, olacak dizidir her öğe erişen olacak. 377 00:27:46,650 --> 00:27:52,400 Ama yolları yolu derken, Bu yollarda her eleman için anlamı, 378 00:27:52,400 --> 00:27:55,150 yol diyoruz ve bu kullanın. 379 00:27:55,150 --> 00:27:59,266 Bu sizi gibi esasen for döngüsü yapmak ve i int kullanın. 380 00:27:59,266 --> 00:28:04,000 Yani siz yolu davranabilirsiniz artan oluyor değişken. 381 00:28:04,000 --> 00:28:07,820 >> Sonra, bu her biri için, Bu bağlantıların her birine gidin. 382 00:28:07,820 --> 00:28:11,710 Biz madde sayfasında depolamak Çünkü, bu yüzden her zaman yeni bir sayfa oluştururken 383 00:28:11,710 --> 00:28:13,330 Biz erişebilirsiniz. 384 00:28:13,330 --> 00:28:20,560 Ve sonra yeni sayfa içinde bulmak span.postingtitletext, span.price, 385 00:28:20,560 --> 00:28:22,240 ve daha sonra bölüm # postingbody. 386 00:28:22,240 --> 00:28:28,430 Biz zaten bölüm # postingbody kaplı Biz açıklama bakıldığında. 387 00:28:28,430 --> 00:28:34,890 >> Bu yüzden Craigslist sonrası görmek gidebilirsiniz, Sadece başlık bakıyoruz eğer, 388 00:28:34,890 --> 00:28:38,810 Eğer buraya kadar görebilirsiniz açıklık postingtitletext. 389 00:28:38,810 --> 00:28:41,390 Orada olduğunu Ve bu yüzden. 390 00:28:41,390 --> 00:28:49,120 Ve sonra fiyat, yapabilirsiniz fiyat span class ile erişebilirsiniz. 391 00:28:49,120 --> 00:28:54,480 >> Bu yüzden de belki olabilir URL'yi saklamak istiyorsanız. 392 00:28:54,480 --> 00:28:58,580 Yani biz sadece bu edeceğiz Yine, bir dizi depolamak, 393 00:28:58,580 --> 00:29:01,150 Eğer arıyorsanız çünkü Craigslist, sen 394 00:29:01,150 --> 00:29:05,290 Muhtemelen eğer, bir yol istiyorum olacak Eğer sizi ilgilendiren bir şey görmek 395 00:29:05,290 --> 00:29:06,620 geri o sitesine gidin. 396 00:29:06,620 --> 00:29:10,480 Yani sadece saklamak istediğiniz referanslar uğruna URL. 397 00:29:10,480 --> 00:29:13,840 398 00:29:13,840 --> 00:29:19,630 >> Bu sadece temelde for döngüsü için başka sözdizimi. 399 00:29:19,630 --> 00:29:26,360 Ben sadece onun yerine paths.each yapabileceği indeksine sahip yollarında yol için. 400 00:29:26,360 --> 00:29:31,280 Ve bu sözdizimi Ruby for-- yol, biz burada ne yaptığını 401 00:29:31,280 --> 00:29:33,920 Her öğe için bir değişken bildirmek. 402 00:29:33,920 --> 00:29:38,540 Ve endeks gibi davranır döngüler için C i. 403 00:29:38,540 --> 00:29:41,280 Yani takip edebilirsiniz endeksidir ne. 404 00:29:41,280 --> 00:29:45,200 >> Yani burada sadece bir olduğunu Biraz uygun bir şey 405 00:29:45,200 --> 00:29:46,950 Eğer kazıyıcı çalışan yaparken için. 406 00:29:46,950 --> 00:29:50,580 Eğer yüzlerce sayfa kazıma ediyorsanız, o asılı değil emin olmak için, 407 00:29:50,580 --> 00:29:53,320 o, sadece çıkış olacak Bu sayfaya erişen çalışıyorum, 408 00:29:53,320 --> 00:29:55,960 ve emin hala devam ediyor. 409 00:29:55,960 --> 00:29:59,250 Ama bizim amaçlı, çünkü yüz ürün var, 410 00:29:59,250 --> 00:30:08,000 Ben bunlardan sadece üçünü erişmek için gidiyorum Burada zaman biterse yok ki. 411 00:30:08,000 --> 00:30:13,040 >> Biz gelmeden önce Ama, ben sadece Eğer gerçekten hızlı göstermek için gidiyorum, 412 00:30:13,040 --> 00:30:16,940 Ben başlığı çıkışı olacaktır, fiyat, açıklama ve URL 413 00:30:16,940 --> 00:30:19,600 Ben kazınmış ettik bağlantıların her. 414 00:30:19,600 --> 00:30:23,720 Ve sonra bu sadece CSV kitaplığı için sözdizimi. 415 00:30:23,720 --> 00:30:25,240 Bir CSV açın. 416 00:30:25,240 --> 00:30:27,070 Bu onu arayacağım budur. 417 00:30:27,070 --> 00:30:29,430 Yazma do ile açın. 418 00:30:29,430 --> 00:30:33,830 Ve sonra CSV dosyası olacak Eğer her şeyi giren ediyoruz. 419 00:30:33,830 --> 00:30:37,800 Bu sadece bir aklı çek Bana o çalışıyor olduğunu bilmek. 420 00:30:37,800 --> 00:30:41,240 Ve bu benim aklı çek tamamlanmadan olduğunu bilmek. 421 00:30:41,240 --> 00:30:46,670 Yani bir satıra başlık atıyorum CSV, fiyat, url, açıklama, 422 00:30:46,670 --> 00:30:49,420 Tüm CSV satırlara. 423 00:30:49,420 --> 00:30:53,410 >> Biz gidip koşmak Yani eğer Bu şimdi-- ve ben sadece 424 00:30:53,410 --> 00:31:04,710 Ben Durdur-- yerine biriktirdim emin olun sadece terminale çıktısı, 425 00:31:04,710 --> 00:31:09,750 Biz CSV olmalı üretilen oluyor dosyası. 426 00:31:09,750 --> 00:31:13,500 Yani burada biz CSV görebilirsiniz üretilen oldu dosyası. 427 00:31:13,500 --> 00:31:19,330 Bu çıkışı olan Ben sadece koştu scape. 428 00:31:19,330 --> 00:31:23,030 Burada gördüğünüz gibi, ERİŞİM 0, 1, 2, 3. 429 00:31:23,030 --> 00:31:27,400 Bu başlıklar şunlardır, Fiyatlar, açıklamaları. 430 00:31:27,400 --> 00:31:31,710 Ve biz bu CSV bakarsak biz oluşturulan ettik dosya, 431 00:31:31,710 --> 00:31:35,700 Eğer onun burada çıktısı görebilirsiniz. 432 00:31:35,700 --> 00:31:40,350 Bu Excel değil, bu yüzden değil satırlar ve sütunlar halinde biçimlendirilmiş. 433 00:31:40,350 --> 00:31:45,140 Ama nasıl hayal edebilirsiniz biçimlendirilmiş olabilir. 434 00:31:45,140 --> 00:31:47,740 >> CSV virgülle ayrılmış değerler için duruyor. 435 00:31:47,740 --> 00:31:50,090 Yani bu bir satır olabilir hayal edebiliyorum. 436 00:31:50,090 --> 00:31:54,700 Ve her virgül olur ayrı bir sütun göstermektedir. 437 00:31:54,700 --> 00:32:00,010 Caution-- Sadece bir kelime Bazen sen 438 00:32:00,010 --> 00:32:02,260 virgül bir sürü şeyler kazıma. 439 00:32:02,260 --> 00:32:05,100 Eğer çıktısı eğer öyleyse Bir CSV dosyasına o 440 00:32:05,100 --> 00:32:10,340 bu olabilir değil çıktı düşündüğünüzden yolu. 441 00:32:10,340 --> 00:32:16,770 >> Yani temelde hepsi Temel HTML kazıma orada 442 00:32:16,770 --> 00:32:20,110 Nokogiri ile sayfaları. 443 00:32:20,110 --> 00:32:26,000 >> İnternet varlık Yani Yenilikçi o kadar gelmiştir olarak 444 00:32:26,000 --> 00:32:33,220 Bir daha otomatik ve GUI ile daha az sağlam olsa versiyonu 445 00:32:33,220 --> 00:32:35,540 Çeşitli web siteleri kazıma sürümü. 446 00:32:35,540 --> 00:32:39,060 Ve bizim amaçlı Ben gösteren olacağım 447 00:32:39,060 --> 00:32:42,920 Kimono adında bir Chrome uzantısı. 448 00:32:42,920 --> 00:32:46,690 Ve yapmanız gereken tüm gezinmek olduğunu Eğer kazımak istediğiniz sayfaya. 449 00:32:46,690 --> 00:32:48,590 Sen bir ilgi alanı tıklayın. 450 00:32:48,590 --> 00:32:51,510 Sen alanları kalibre, otomatik olacak, çünkü 451 00:32:51,510 --> 00:32:54,360 o ne düşünüyor algılamak Eğer kazıma olmak istiyorum, 452 00:32:54,360 --> 00:32:56,280 ve o zaman sadece bir API oluşturmak. 453 00:32:56,280 --> 00:33:03,700 >> Biz eğer öyleyse bunu göstermek için Craigslist, aslında işe yaramaz. 454 00:33:03,700 --> 00:33:08,290 Ve bu geri gidiyordu ne o kadar sağlam değil varlık hakkında söyledi. 455 00:33:08,290 --> 00:33:10,320 Bu sorun API oluşturarak vardır. 456 00:33:10,320 --> 00:33:13,400 Ama bir göstergesi olarak o ne yapacağını, 457 00:33:13,400 --> 00:33:17,460 Chrome uzantısı yüklerseniz, Yapmanız tüm bunu üzerine tıklayın. 458 00:33:17,460 --> 00:33:21,750 Bu sayfayı Kimonofies ve sonra seni komut dosyası istediğiniz şey üzerine tıklayın. 459 00:33:21,750 --> 00:33:24,480 >> Yani tıklayınız olsaydı Bu, o vurgulamak 460 00:33:24,480 --> 00:33:28,130 ne düşünüyor ben istiyorum o sayfayı kazıyarak olacak. 461 00:33:28,130 --> 00:33:33,660 Bu yüzden belki de bu listeleri diyoruz. 462 00:33:33,660 --> 00:33:36,430 Bu benim seçmiş kaç öğe olduğunu. 463 00:33:36,430 --> 00:33:43,810 Ve ben sadece onaylamak ya da bazı inkar edemez Diğer önerilen liste 464 00:33:43,810 --> 00:33:49,600 o eklemek için Ne kazınmalıdır edilecektir. 465 00:33:49,600 --> 00:33:52,330 >> Yani şimdi biz orada görebilirsiniz yüz ürün seçildi. 466 00:33:52,330 --> 00:33:58,060 Ben başka bir alan olmasını istiyorsanız ben Ayrıca buna ilişkin olan kazımak, 467 00:33:58,060 --> 00:34:02,540 Ben fiyat kazımak istediğini söylüyorsun yanı sıra, o zaman ben de aynı şeyi yapabilirsiniz. 468 00:34:02,540 --> 00:34:06,190 469 00:34:06,190 --> 00:34:11,550 >> Yani burada bu kadar nasıl bir gösteri var çok daha az sağlam, şimdi çünkü 470 00:34:11,550 --> 00:34:15,050 Bunun yerine şehir toplayıp İstediğim sadece fiyat. 471 00:34:15,050 --> 00:34:16,989 Ve şimdi 200 şey aldım oluyor. 472 00:34:16,989 --> 00:34:19,880 Geri dönüp silebilirsiniz. 473 00:34:19,880 --> 00:34:21,449 Tekrar deneyebilirsiniz. 474 00:34:21,449 --> 00:34:24,250 Ama hiçbir garanti. 475 00:34:24,250 --> 00:34:29,909 Bu, bazen nasıl işliyor. 476 00:34:29,909 --> 00:34:32,969 Burada gördüğünüz gibi, şimdi burada 96 kadar diyor. 477 00:34:32,969 --> 00:34:37,000 Bu bağlantıların çoğu aldı bulunuyor İstediğiniz kazımak, ama değil 478 00:34:37,000 --> 00:34:39,280 mutlaka hepsi. 479 00:34:39,280 --> 00:34:43,909 >> Kimono bir başka yararlı bir araç olsa Gelişmiş Özellikler gidebilirsiniz 480 00:34:43,909 --> 00:34:47,980 Burada, Gelişmiş 'e gidin, ve size gösterecektir 481 00:34:47,980 --> 00:34:53,139 Eşsiz dökümü HTML erişmek için bir yol 482 00:34:53,139 --> 00:34:54,909 Eğer kazımak istiyorum etiketleri. 483 00:34:54,909 --> 00:35:01,450 Yani listeleri için, buraya bakarsanız, Eğer div p açıklıklı bir yayılan erişmek eğer, 484 00:35:01,450 --> 00:35:06,030 aslında sadece kullanabilirsiniz senin Nokogiri kodunda bu, 485 00:35:06,030 --> 00:35:10,780 nerede span.txt vardı önce listeleri her erişebilirsiniz. 486 00:35:10,780 --> 00:35:13,270 Ben sadece metin istiyorsanız liste içinde 487 00:35:13,270 --> 00:35:18,950 I could giriş div uzay p uzay açıklıklı uzay açıklıklı alanı, 488 00:35:18,950 --> 00:35:21,570 ve aynı etkiyi elde ediyorum. 489 00:35:21,570 --> 00:35:26,320 Ve o sizin için ilgi kim Normal ifadeler kullanarak, 490 00:35:26,320 --> 00:35:31,670 o da size düzenli olarak vermek olur girdi dize ifadesi tür 491 00:35:31,670 --> 00:35:34,900 şeyler bulmak için Eğer bulmaya çalışıyorlar. 492 00:35:34,900 --> 00:35:44,130 >> Yani bir başka güzel özellik var Eğer paginate nerede Kimono, 493 00:35:44,130 --> 00:35:47,780 hangi Keşke kazıyabilirler değil Bu sayfanın sonuçları, 494 00:35:47,780 --> 00:35:50,890 Ben bu küçük tıklayabilirsiniz Burada düğme, Sayfalandırmayı, 495 00:35:50,890 --> 00:35:55,580 düğme o olur belirtmek Bir sonraki sayfaya götür, 496 00:35:55,580 --> 00:35:59,500 ve o zaman sadece bilecek sonraki sayfaya yineleme yapabilirsiniz, 497 00:35:59,500 --> 00:36:04,120 ve daha sonra Şeyin sürece tüm kazıma o elbette-- aynı biçim olduğu gibi 498 00:36:04,120 --> 00:36:06,110 yanı sıra bu bağlantıların tüm scape. 499 00:36:06,110 --> 00:36:15,230 >> Kimono istemiyor çünkü bunu için Biz ne yaptık, Craigslist ile çalışmak 500 00:36:15,230 --> 00:36:19,790 Harvard Crimson Kimonofied ettik edilir. 501 00:36:19,790 --> 00:36:29,380 Ben tür bazı çıkardı ettik Üst makaleleri, burada teyit özellikli. 502 00:36:29,380 --> 00:36:33,090 Bunların hepsi söyleyin. 503 00:36:33,090 --> 00:36:35,830 Bu API derledik vaktinden önce sizin için. 504 00:36:35,830 --> 00:36:38,990 Ama yapacağını aksi neler Sadece Bitti düğmesini tıklatın olacağını edilir. 505 00:36:38,990 --> 00:36:40,940 API ayrıntıları girin. 506 00:36:40,940 --> 00:36:45,260 Olarak ayarlayın ya Otomatik veya manuel tarama. 507 00:36:45,260 --> 00:36:48,460 Yani güncelleme olabilir sizin Veri her 15 dakikada, 508 00:36:48,460 --> 00:36:50,330 haftalık, günlük, ne istersen. 509 00:36:50,330 --> 00:36:51,160 Senin API adlandırın. 510 00:36:51,160 --> 00:36:52,790 API oluşturun. 511 00:36:52,790 --> 00:36:58,460 Sizin yararınız için, ben yarattım Zaten ön sayfa API kızıl. 512 00:36:58,460 --> 00:37:02,480 >> Yani sadece bir oluşturmak Kimono üzerinde hesabı ve bu 513 00:37:02,480 --> 00:37:06,240 sizin için tüm API'leri saklayacaktır. 514 00:37:06,240 --> 00:37:10,330 Yani aslında hepsi senin Ayrı ayrı sıyrıklar. 515 00:37:10,330 --> 00:37:18,250 >> Burada bakarsanız Yani, bu Ben topladım görüşlerini bağlantılar. 516 00:37:18,250 --> 00:37:21,290 Bunlar özellikli vardır Ben topladım bağlantılar. 517 00:37:21,290 --> 00:37:24,090 Ve bu en çok okunan Ben derledik bağlantılar 518 00:37:24,090 --> 00:37:27,120 bu en son API scape dan. 519 00:37:27,120 --> 00:37:30,790 >> Burada gördüğünüz Yani, Bu, özellikli olacağını 520 00:37:30,790 --> 00:37:34,130 Bu görüşler olacaktır, bu örnekte bunlar,, 521 00:37:34,130 --> 00:37:38,150 Ben hepsini kombine ettik tek koleksiyon. 522 00:37:38,150 --> 00:37:42,780 Ama sadece onunla oynamak durumunda biraz, sen o kadar ayırabilirsiniz 523 00:37:42,780 --> 00:37:45,090 ve ancak o kadar bölmek sürece istediğiniz 524 00:37:45,090 --> 00:37:47,520 biçimlendirme biraz farklıdır. 525 00:37:47,520 --> 00:37:51,320 >> Sadece bu ile oynamak için, tarama, downsides biri kurmak 526 00:37:51,320 --> 00:37:58,120 Eğer sadece yukarı tarayabilir olduğunu Bir seferde 25 sayfaya kadar. 527 00:37:58,120 --> 00:38:00,430 Bu sınırlayan faktörlerden biri. 528 00:38:00,430 --> 00:38:03,060 Ama burada, bunu ayarlarsanız manuel tarama için, bu 529 00:38:03,060 --> 00:38:06,100 bunu söyleyebilirim nasıl Verilerinizi güncellemek için. 530 00:38:06,100 --> 00:38:11,010 Ve burada kendi tarama geçmişini görebilirsiniz her şeyi sen sürünerek ettik. 531 00:38:11,010 --> 00:38:16,000 Ve siz geri gidebilirsiniz, kaydolmak, tüm farklı şekillerde ile oynamak 532 00:38:16,000 --> 00:38:20,340 Bu değiştirmek ve verileri kullanabilirsiniz. 533 00:38:20,340 --> 00:38:24,580 >> Kimono kadar ayarlanabilir bağlantıları içinde bağlantıları kazıyın. 534 00:38:24,580 --> 00:38:29,700 Ve ilk bunu yapacağını bağlantıların bir listesini kazıma, 535 00:38:29,700 --> 00:38:35,390 ve daha sonra da bu API kullanarak Başka bir API noktası atlamayın 536 00:38:35,390 --> 00:38:36,710 Eğer senaryoyu oluşturmak. 537 00:38:36,710 --> 00:38:42,040 Ama daha karmaşık ne bugün içine almak için gidiyoruz. 538 00:38:42,040 --> 00:38:44,270 >> Yani Kimono var. 539 00:38:44,270 --> 00:38:46,980 Biz profesyoneller bahsedeceğiz ve Nokogiri ve Kimono eksilerini. 540 00:38:46,980 --> 00:38:50,380 >> Nokogiri, gerçekten hızlı. 541 00:38:50,380 --> 00:38:51,640 Bu test etmek kolay. 542 00:38:51,640 --> 00:38:55,910 Sadece bir şey koyar edebilirsiniz Konsol, kolay yapılandırmak için. 543 00:38:55,910 --> 00:39:00,400 Tam olarak ne karar verebilirsiniz Eğer kazımak ve saklamak istiyorum. 544 00:39:00,400 --> 00:39:02,060 Hiçbir sayfa sınırları vardır. 545 00:39:02,060 --> 00:39:08,010 Aslında böyle kazımak için kullanılır 1800 Güney Afrika okul web siteleri 546 00:39:08,010 --> 00:39:10,870 Ben yaptım staj için e-postalar için. 547 00:39:10,870 --> 00:39:16,060 >> Böylece, mümkün en iyi uygulama olsa Senaryoyu bölmek olacaktır. 548 00:39:16,060 --> 00:39:19,310 O zaman, başarısız Çünkü eğer Eğer bir şey alamadım. 549 00:39:19,310 --> 00:39:22,790 Ama yüz yaparsanız, belki bir seferde 200 sayfa, 550 00:39:22,790 --> 00:39:27,840 o zaman biraz şans, en azından Özellikle, parça parça getting it 551 00:39:27,840 --> 00:39:30,280 Kötü internet varsa. 552 00:39:30,280 --> 00:39:32,720 >> Ne yazık ki, sadece HTML kazımak olabilir. 553 00:39:32,720 --> 00:39:35,190 Eğer var ise dinamik olarak yüklenen pages-- 554 00:39:35,190 --> 00:39:39,480 ve ben size bir örnek göstereceğim Bir saniye içinde kayık gibi 555 00:39:39,480 --> 00:39:42,270 Nokogiri maalesef Bu kazımak olamaz. 556 00:39:42,270 --> 00:39:45,700 >> Ancak Kimono kullanımı da kolaydır. 557 00:39:45,700 --> 00:39:48,330 Gördüğün gibi, esasen var Bir nokta ve tıklama. 558 00:39:48,330 --> 00:39:50,260 Bu JavaScript kazıyabilirler. 559 00:39:50,260 --> 00:39:53,790 Ne yazık ki, maksimum var Eğer kazımak kaç sayfaları. 560 00:39:53,790 --> 00:39:55,710 Bazen biraz var yapılandırmak için zor. 561 00:39:55,710 --> 00:39:57,240 Bu karıştı alır. 562 00:39:57,240 --> 00:40:00,920 Ama kesinlikle var bir şey düşünmeye 563 00:40:00,920 --> 00:40:05,930 Eğer bir olması için çalışıyoruz değilsen Süper sağlam bakımı sıyrık. 564 00:40:05,930 --> 00:40:09,010 Sadece almak istiyorsanız hızlı bir şekilde sayfanın kapalı her şeyi, 565 00:40:09,010 --> 00:40:10,970 Daha sonra Kimono bir gerçekten İyi aracı kullanmak için. 566 00:40:10,970 --> 00:40:16,490 Daha önce de bahsettiğim gibi, var Kimono gelişmiş özelliği 567 00:40:16,490 --> 00:40:19,260 Bunu nasıl gösterir Eşsiz HTML erişmek 568 00:40:19,260 --> 00:40:24,210 Hatta süper yararlı unsur, Eğer Nokogiri çalışıyorsanız. 569 00:40:24,210 --> 00:40:30,370 >> Yani biz, Kayak sitesine gitmek örnek, orada görebilirsiniz o-- 570 00:40:30,370 --> 00:40:31,750 ya da belki göremiyorum. 571 00:40:31,750 --> 00:40:38,910 Ama Kayak için size URL'yi gösterirseniz, Bu aslında sadece kaynak URL. 572 00:40:38,910 --> 00:40:43,800 Bu varlık URL öncesinde olduğu ne olursa olsun JavaScript betikleri tarafından modifiye 573 00:40:43,800 --> 00:40:45,350 onlar oluyor var. 574 00:40:45,350 --> 00:40:52,420 Ve farklı bakmaya gidiyor eleman teftiş dan. 575 00:40:52,420 --> 00:40:55,940 >> Yani geçmesi ve eğer kontrol edin Eleman kadar maç 576 00:40:55,940 --> 00:41:00,340 kaynak kodu kod, bu kadar aslında farklı olacak. 577 00:41:00,340 --> 00:41:05,640 Bu yüzden Nokogiri esasen dinamik olarak yüklenen siteler kazıyın olamaz. 578 00:41:05,640 --> 00:41:08,810 Nokogiri Çünkü Kaynak URL kazıma, 579 00:41:08,810 --> 00:41:16,310 Kimono Aslında ise aslında ne konum kazıma 580 00:41:16,310 --> 00:41:18,260 Select Element görüyorum. 581 00:41:18,260 --> 00:41:23,880 >> Yani içinden ve ben gidersem denemek ve Kimonofy Kayık, 582 00:41:23,880 --> 00:41:26,600 Aslında gidebilirsiniz ve fiyatı seçin. 583 00:41:26,600 --> 00:41:32,360 Bu, biraz daha zor ve bu durumda, bu kadar 584 00:41:32,360 --> 00:41:36,600 aslında bu fiyatı görünce Bu farklı olarak. 585 00:41:36,600 --> 00:41:41,110 Eğer configure-- oysa Böylece veya bu dinamik yüklenen olmasaydı, 586 00:41:41,110 --> 00:41:43,620 Eğer Nokogiri yapılandırabilirsiniz Bunların hepsi olsun. 587 00:41:43,620 --> 00:41:48,230 >> Biçimlendirme hafif olduğu için Bu firma için farklı 588 00:41:48,230 --> 00:41:51,280 o geri kalanına oranla gibi Bunlardan, ve burada görebilirsiniz 589 00:41:51,280 --> 00:41:54,830 aslında gitti ve Seçilen tüm uçuş fiyatları. 590 00:41:54,830 --> 00:42:01,200 Belki seçmek istiyorum hem de uçuş süresi. 591 00:42:01,200 --> 00:42:04,700 Ve ben geçmesi ve sıralama bu şekilde yapılandırın. 592 00:42:04,700 --> 00:42:06,950 Ben bunu istemiyorum. 593 00:42:06,950 --> 00:42:10,200 Ben sadece önümüzdeki uçuşun zaman istiyorum. 594 00:42:10,200 --> 00:42:17,030 Ve daha sonra bu bir çift sonra geçiyor, o resim alır. 595 00:42:17,030 --> 00:42:19,080 Yani Kimono bayağı akıllı. 596 00:42:19,080 --> 00:42:21,900 Sadece oldukça sağlam değil. 597 00:42:21,900 --> 00:42:26,710 >> Başka var kullanabileceğiniz alternatifleri. 598 00:42:26,710 --> 00:42:31,600 Ve ben burada sana onlara göstermek gerekir. 599 00:42:31,600 --> 00:42:35,790 Eğer daha rahat iseniz Yerine belki Ruby Python, 600 00:42:35,790 --> 00:42:39,290 Bir kütüphane var Güzel Çorbası denir. 601 00:42:39,290 --> 00:42:40,430 Bunu kullanabilirsiniz. 602 00:42:40,430 --> 00:42:42,270 Bu Nokogiri çok benzer. 603 00:42:42,270 --> 00:42:44,620 Birkaç daha fazla özelliklere sahiptir. 604 00:42:44,620 --> 00:42:52,160 Bir HTML etiketi bulabilir ve Daha sonra yukarı veya yanlara doğru hareket ettirin. 605 00:42:52,160 --> 00:42:54,690 >> PyQt var. 606 00:42:54,690 --> 00:42:57,820 Bu aslında dinamik kazıyabilirler siteler, bu tür çünkü 607 00:42:57,820 --> 00:43:02,540 olmak süsü bir WebKit olduğunu Orada aslında olmayan bir tarayıcı 608 00:43:02,540 --> 00:43:03,670 Bir tarayıcı olma. 609 00:43:03,670 --> 00:43:07,490 Yani hepsi için bekleyecekti JavaScript sonra ilk yük ve 610 00:43:07,490 --> 00:43:09,560 gitmek ve denemek ve siteyi kazıyın. 611 00:43:09,560 --> 00:43:13,560 >> Eğer Ruby ile sopa istiyorsanız, size Nokogiri itibaren bir seviye yukarı gidebilir. 612 00:43:13,560 --> 00:43:17,650 Sizinle Capybara kullanabilirsiniz Bir Poltergeist sarıcı. 613 00:43:17,650 --> 00:43:22,910 Ve bu aslında can aslında aynı şeyi yapmak 614 00:43:22,910 --> 00:43:26,610 PyQt'de, gibi olan bir WebKit olmasıdır. 615 00:43:26,610 --> 00:43:29,610 Bunun için bekler JavaScript ilk yüklemek için. 616 00:43:29,610 --> 00:43:33,340 Eğer yeterince onunla aylaklık ise, hatta şeylerin üzerine tıklayın alabilirsiniz. 617 00:43:33,340 --> 00:43:42,780 >> Bir bağlantı varsa Böylece Klasik bir href burada değildir 618 00:43:42,780 --> 00:43:46,350 yolunu kolayca erişilebilir ve algıladığı bazı JavaScript şey 619 00:43:46,350 --> 00:43:49,490 Bir tıklama, aslında bunu yapabilir. 620 00:43:49,490 --> 00:43:53,430 Daha popüler kütüphane Bir kullanıcı simüle 621 00:43:53,430 --> 00:43:56,390 PhantomJS olan JavaScript yer almaktadır. 622 00:43:56,390 --> 00:44:01,010 Bu tabii ki dinamik kazıyabilirler siteleri bu temelde çünkü 623 00:44:01,010 --> 00:44:04,270 Chrome gibi davranarak kullanıcı arabirimi olmadan. 624 00:44:04,270 --> 00:44:09,970 >> Ve sonra, tabii ki en Sağlam, ancak yavaş seçenek, 625 00:44:09,970 --> 00:44:13,260 Bir Selenyum tarayıcı otomasyon. 626 00:44:13,260 --> 00:44:15,550 Ve ne yazık ki, olmak gitmiyorsun 627 00:44:15,550 --> 00:44:19,770 senin CS50 IDE içinde bunu yapmak mümkün. 628 00:44:19,770 --> 00:44:24,140 Esasen ne Çünkü yapıyor, o senin Chrome'u çizmeler ise 629 00:44:24,140 --> 00:44:27,090 Firefox, ne olursa olsun tarayıcı Kullanmak istediğiniz, 630 00:44:27,090 --> 00:44:32,570 ve fare belki izler Eğer yazdığınız her türlü hareketi, 631 00:44:32,570 --> 00:44:35,170 ve sadece sıralama Bu işlemi otomatik hale getirir. 632 00:44:35,170 --> 00:44:42,070 Yani bir tür olarak geliştirilmiştir web sitesi otomasyon test aracı. 633 00:44:42,070 --> 00:44:45,910 Ama bir sürü insan kullanımı Web kazımak için Selenyum 634 00:44:45,910 --> 00:44:49,990 aksi takdirde bir olduğunu Zorluk çok kazıma 635 00:44:49,990 --> 00:44:53,700 bu, daha hızlı bazı araçlar ile. 636 00:44:53,700 --> 00:44:57,530 >> Yani ben web kazıma için var hepsi bu. 637 00:44:57,530 --> 00:44:58,090 İyi eğlenceler. 638 00:44:58,090 --> 00:45:01,762 639 00:45:01,762 --> 00:45:02,680 >> HEDEF KİTLE: Soru. 640 00:45:02,680 --> 00:45:04,016 >> ROBERT KRABEK: Evet. 641 00:45:04,016 --> 00:45:12,840 >> HEDEF KİTLE: karma bir mekanizma var mı Web sitesi böylece temelde olabilir 642 00:45:12,840 --> 00:45:14,207 daha sonra onu geçmesi. 643 00:45:14,207 --> 00:45:15,040 ROBERT KRABEK: Evet. 644 00:45:15,040 --> 00:45:21,530 Bu yüzden de, bizim koymak Örnek, her ikisi için de, 645 00:45:21,530 --> 00:45:24,980 Biz doc içine tüm web sitesi koymak. 646 00:45:24,980 --> 00:45:31,260 Ve böylece aslında sadece sürebilir Değişken doc bir dosyaya yazmak ve. 647 00:45:31,260 --> 00:45:35,490 Ben isteseydim Yani, I could HTML dosyası olarak yazmak, 648 00:45:35,490 --> 00:45:39,280 izlenerek ve daha sonra yerine OpenURI ve cURL isteği, 649 00:45:39,280 --> 00:45:43,520 sonra ben sadece doc açmak olabilir HTML ve o arayın. 650 00:45:43,520 --> 00:45:47,960 >> HEDEF KİTLE: Ama koruyabilirsiniz online deneyim tür 651 00:45:47,960 --> 00:45:48,930 çevrimdışı yaparken. 652 00:45:48,930 --> 00:45:51,013 Örneğin. ne zaman sen birkaç saat uçan, 653 00:45:51,013 --> 00:45:54,070 Ben temelde arşiv istiyorum Bütün web sitesi. [Duyulamaz] 654 00:45:54,070 --> 00:45:58,780 >> ROBERT KRABEK: Evet, tam olarak-- var: yani tam anlamıyla ne yaptığını, bu 655 00:45:58,780 --> 00:46:03,010 her şeyi alıyor edilir bu URL'de olurdu. 656 00:46:03,010 --> 00:46:11,280 Biz cURL koştu Yani, bu kadar Bu HTML Tüm alarak 657 00:46:11,280 --> 00:46:14,590 ve saklamadan var Değişken doc içinde. 658 00:46:14,590 --> 00:46:17,290 O zaman sen ne olursa olsun Eğer doc ile yapmak istiyorum. 659 00:46:17,290 --> 00:46:18,575 Sen bir dosyaya çıktı elinden geleni. 660 00:46:18,575 --> 00:46:19,950 HEDEF KİTLE: Ama bu kadar bağlı değil. 661 00:46:19,950 --> 00:46:20,780 Bu dinamik değil. 662 00:46:20,780 --> 00:46:22,770 Bu doğru değil özyinelemeli değil mi? 663 00:46:22,770 --> 00:46:24,016 Ne demek istediğimi görüyor musun? 664 00:46:24,016 --> 00:46:28,359 Ben temelde bir çeşit karma çalışıyorum Benim sabit diskinizde tüm web 665 00:46:28,359 --> 00:46:31,150 bu yüzden ben temelde bunu yapabilirdi internet olmadan birkaç saat karıştırıldı. 666 00:46:31,150 --> 00:46:32,025 >> ROBERT KRABEK: Doğru. 667 00:46:32,025 --> 00:46:37,140 Ben had-- Yani eğer öyleyse nerede dosya I / O değil mi? 668 00:46:37,140 --> 00:46:47,766 Yani bu dosya g / Ç olduğunu. Peki yerine ne söylüyor Bu nedenle, ben bu craigslist.html diyoruz. 669 00:46:47,766 --> 00:46:52,620 670 00:46:52,620 --> 00:46:53,940 Ben açmak istiyorum. 671 00:46:53,940 --> 00:46:59,020 Ben içine koyar doc olur. 672 00:46:59,020 --> 00:47:00,470 Ben dosyayı kapatın. 673 00:47:00,470 --> 00:47:05,410 Ve sonra sırf CS50 IDE Bu, bulut üzerinde ne olursa olsun var olduğunu. 674 00:47:05,410 --> 00:47:07,710 Buraya gitmek olabilir. 675 00:47:07,710 --> 00:47:09,320 Ben dosyayı indirebilirsiniz. 676 00:47:09,320 --> 00:47:11,830 Ve sonra benim sabit diskinizde olurdu. 677 00:47:11,830 --> 00:47:13,930 Yani o şekilde yapabiliriz. 678 00:47:13,930 --> 00:47:18,830 Evde iseniz ya da kullanarak değil CS50 IDE, Sublime falan gibi, 679 00:47:18,830 --> 00:47:21,900 Bu, çünkü daha kolaydır Bu, lokal olarak mevcut tüm 680 00:47:21,900 --> 00:47:23,020 internete bağlı değil. 681 00:47:23,020 --> 00:47:24,720 >> İZLEYİCİ: Anlıyorum. 682 00:47:24,720 --> 00:47:26,580 Bu belirli bir sorun için olduğunu. 683 00:47:26,580 --> 00:47:30,410 Böylece özyinelemeli yapabilir misin sen Birkaç katmanları derin tür şey gidilir? 684 00:47:30,410 --> 00:47:33,801 >> ROBERT KRABEK: Ben klasörleri indirebilirsiniz Bu ise, hem de sen soruyorsun. 685 00:47:33,801 --> 00:47:34,426 HEDEF KİTLE: Evet. 686 00:47:34,426 --> 00:47:39,890 687 00:47:39,890 --> 00:47:41,440 >> ROBERT KRABEK: Serin. 688 00:47:41,440 --> 00:47:43,182