1 00:00:00,000 --> 00:00:03,234 >> [Bermain muzik] 2 00:00:03,234 --> 00:00:05,275 3 00:00:05,275 --> 00:00:06,400 ROBERT KRABEK: Hello, guys. 4 00:00:06,400 --> 00:00:09,980 Nama saya Robert Krabek, dan Saya akan mengajar anda semua 5 00:00:09,980 --> 00:00:15,470 bagaimana untuk mengikis web dengan Nokogiri, yang merupakan perpustakaan Ruby, 6 00:00:15,470 --> 00:00:17,566 dan Kimono, yang merupakan lanjutan Chrome. 7 00:00:17,566 --> 00:00:20,940 8 00:00:20,940 --> 00:00:25,010 >> Jadi pertama ada beberapa perkara yang anda 9 00:00:25,010 --> 00:00:28,790 boleh lakukan jika mungkin anda telah melakukan semua psets setakat ini 10 00:00:28,790 --> 00:00:31,170 dan ruang kerja anda mendapat sedikit penuh. 11 00:00:31,170 --> 00:00:37,060 Kita boleh sebenarnya hanya pergi dan mewujudkan ruang kerja yang baru untuk anda 12 00:00:37,060 --> 00:00:41,220 untuk hanya melakukan satu projek baru dalam. 13 00:00:41,220 --> 00:00:46,160 Jadi, jika anda mahu terus bekerja di ID template CS50 14 00:00:46,160 --> 00:00:49,080 bahawa anda kini mempunyai, berasa bebas, dan anda boleh hanya 15 00:00:49,080 --> 00:00:54,700 memasang Nokogiri dengan CFLAGS permata equals-- memasang nokogiri. 16 00:00:54,700 --> 00:00:56,930 Tetapi jika tidak, saya akan menunjukkan kepada anda bagaimana untuk menubuhkan yang baru satu. 17 00:00:56,930 --> 00:01:01,210 Dan maka ini adalah pada dasarnya menjatuhkan lebih roda latihan. 18 00:01:01,210 --> 00:01:07,120 Dan anda pengekodan seolah-olah anda hanya pengekodan dalam Sublime atau sesuatu. 19 00:01:07,120 --> 00:01:12,365 Jadi, jika kita beralih ke atas. 20 00:01:12,365 --> 00:01:14,930 21 00:01:14,930 --> 00:01:18,690 >> Jadi mengatakan ini adalah terkini CS 50 ID anda. 22 00:01:18,690 --> 00:01:21,490 Anda hanya boleh pergi ke Cloud9 sini. 23 00:01:21,490 --> 00:01:22,725 Anda boleh pergi ke papan pemuka anda. 24 00:01:22,725 --> 00:01:26,720 25 00:01:26,720 --> 00:01:29,950 Ia harus membawa tab Ruang kerja. 26 00:01:29,950 --> 00:01:32,980 Dan kemudian anda hanya boleh klik di sini, Buat Ruang Kerja Baru. 27 00:01:32,980 --> 00:01:37,600 Nama ruang kerja baru anda, mungkin ujian, atau mengikis. 28 00:01:37,600 --> 00:01:42,700 Dan kemudian klik tab adat ini di sini, bukannya tab template CS50. 29 00:01:42,700 --> 00:01:45,155 Dan kemudian anda hanya boleh pergi dan mewujudkan ruang kerja yang baru. 30 00:01:45,155 --> 00:01:48,280 >> Saya telah mencipta ruang kerja di sini. 31 00:01:48,280 --> 00:01:50,640 Oleh itu, kita akan bekerja dengan ini. 32 00:01:50,640 --> 00:01:55,380 Dan jika anda buat yang baru ruang kerja jadi dengan tab Tersuai, 33 00:01:55,380 --> 00:02:04,560 anda hanya boleh menaip permata memasang nokogiri, yang tidak akan di sini. 34 00:02:04,560 --> 00:02:06,230 OK, ia sedikit beku. 35 00:02:06,230 --> 00:02:08,979 Tetapi anda boleh menaip permata memasang nokogiri. 36 00:02:08,979 --> 00:02:15,970 Dan yang harus semua yang ada untuk pemasangan. 37 00:02:15,970 --> 00:02:20,590 >> Seperti yang saya katakan sebelum ini, jika anda masih bekerja dalam template ID CS50 anda, 38 00:02:20,590 --> 00:02:30,270 anda hanya perlu menaip CFLAGS sama permata memasang nokogiri. 39 00:02:30,270 --> 00:02:33,130 Dan saya telah memasang di sini, jadi saya tidak akan berbuat demikian. 40 00:02:33,130 --> 00:02:38,500 Tetapi bagi mereka yang mengikuti bersama-sama, berasa bebas untuk berbuat demikian. 41 00:02:38,500 --> 00:02:46,000 >> Jadi apabila anda telah mendapat Nokogiri anda ruang kerja atau perpustakaan dipasang, 42 00:02:46,000 --> 00:02:49,500 Saya akan memberikan anda sedikit daripada kursus kemalangan dalam Ruby sintaks 43 00:02:49,500 --> 00:02:53,380 kerana Nokogiri sebuah perpustakaan Ruby. 44 00:02:53,380 --> 00:03:03,710 Jadi, anda perlu tahu beberapa asas Ruby sintaks untuk bekerja dengan Nokogiri. 45 00:03:03,710 --> 00:03:08,750 Jadi beberapa perbezaan asas daripada apa yang anda digunakan untuk 46 00:03:08,750 --> 00:03:13,370 mungkin jika anda telah bekerja setakat ini hanya dalam C dan PHP, 47 00:03:13,370 --> 00:03:16,010 anda mengisytiharkan pembolehubah tanpa jenis. 48 00:03:16,010 --> 00:03:19,720 Anda tidak menggunakan koma bertitik, yang jenis melegakan. 49 00:03:19,720 --> 00:03:25,480 Tidak ada kurungan kini sekitar untuk atau semasa gelung, sebagai contoh. 50 00:03:25,480 --> 00:03:29,460 Anda hanya perlu satu blok kod, dan maka anda menamatkan pada akhir itu. 51 00:03:29,460 --> 00:03:32,380 Tidak ada plus plus atau tolak tolak, jadi hanya 52 00:03:32,380 --> 00:03:36,180 tahu bahawa apabila yang anda lakukan untuk gelung, 53 00:03:36,180 --> 00:03:38,620 hanya setaraf tambah dan tolak sama. 54 00:03:38,620 --> 00:03:43,310 Dan bukannya hash termasuk, anda akan menggunakan perlukan dan kemudian 55 00:03:43,310 --> 00:03:47,755 apa sahaja yang cuba perpustakaan untuk memuatkan ke dalam program anda. 56 00:03:47,755 --> 00:03:51,610 57 00:03:51,610 --> 00:03:53,430 >> Ruby bukan bahasa yang disusun. 58 00:03:53,430 --> 00:03:55,550 Jadi itulah bantuan lain. 59 00:03:55,550 --> 00:03:59,350 Ia adalah lebih serupa dengan PHP mana ia adalah bahasa yang ditafsirkan. 60 00:03:59,350 --> 00:04:03,570 Anda boleh menjalankan mana-mana skrip Ruby yang anda menulis dengan Ruby diikuti 61 00:04:03,570 --> 00:04:07,380 dengan nama skrip atau program anda. 62 00:04:07,380 --> 00:04:13,000 Untuk menunjukkan bahawa ia adalah satu program Ruby, anda hanya berakhir dengan .rb bukannya .c. 63 00:04:13,000 --> 00:04:17,440 Dan ada berubah-ubah tatasusunan bersaiz Ruby, 64 00:04:17,440 --> 00:04:23,200 yang super mudah apabila anda berada mengikis dan mungkin mahu menambah 65 00:04:23,200 --> 00:04:26,090 data yang anda telah dikikis ke dalam array. 66 00:04:26,090 --> 00:04:31,960 Anda tidak perlu malloc pelbagai baru dan menyalin array lama ke lokasi yang baru. 67 00:04:31,960 --> 00:04:36,150 Anda hanya boleh menambah dengan kedua-dua anak panah tanda-tanda. 68 00:04:36,150 --> 00:04:39,820 Dan tiada aksara, terdapat hanya rentetan huruf. 69 00:04:39,820 --> 00:04:44,760 Jadi yang perlu menjadi sedikit lebih mudah. 70 00:04:44,760 --> 00:04:50,130 >> Oleh itu, kita hanya akan memberikan anda beberapa contoh beberapa Ruby asas sintaksis. 71 00:04:50,130 --> 00:04:57,100 Jadi di sini anda boleh melihat bahawa bukan slash slash, mengulas secara Ruby, 72 00:04:57,100 --> 00:04:58,740 anda hanya menggunakan tanda pound. 73 00:04:58,740 --> 00:05:04,990 Dan pengisytiharan pembolehubah, anda hanya menaip sama setaraf berubah-ubah 74 00:05:04,990 --> 00:05:07,971 apa sahaja yang anda mahu berubah untuk menjadi. 75 00:05:07,971 --> 00:05:09,220 Mereka boleh menjadi tali. 76 00:05:09,220 --> 00:05:14,120 Anda boleh mempunyai array, yang anda mengisi dengan nilai-nilai. 77 00:05:14,120 --> 00:05:17,240 meletakkan dan cetakan adalah sama. 78 00:05:17,240 --> 00:05:20,110 Untuk tujuan kita, Satu-satunya perbezaan adalah benar-benar 79 00:05:20,110 --> 00:05:25,500 yang meletakkan, yang bermaksud meletakkan, hanya meletakkan baris baru 80 00:05:25,500 --> 00:05:27,440 perkataan pada apa sahaja yang anda mencetak. 81 00:05:27,440 --> 00:05:30,980 >> Jadi, jika kita memberikan kecil demonstrasi di sini, 82 00:05:30,980 --> 00:05:41,800 kita boleh menjalankan ini with-- membuka sebuah terminal baru. 83 00:05:41,800 --> 00:05:46,020 Anda boleh melihat semua ini fail yang di terminal saya. 84 00:05:46,020 --> 00:05:50,960 Dan jika saya hanya menjalankan Ruby, intro.rb delima, ia 85 00:05:50,960 --> 00:05:53,530 meletakkan keluar lima Hello Mather, Quincy, Carrier. 86 00:05:53,530 --> 00:05:54,410 Adams. 87 00:05:54,410 --> 00:05:59,295 Jadi, itu semua ada untuk mengisytiharkan tatasusunan. 88 00:05:59,295 --> 00:06:01,670 PENONTON: Robert, anda boleh membuat font anda sedikit lebih besar? 89 00:06:01,670 --> 00:06:02,461 ROBERT KRABEK: Ya. 90 00:06:02,461 --> 00:06:05,370 91 00:06:05,370 --> 00:06:12,280 Dan saya boleh zum kerana anda tidak boleh zum masuk ke fon terminal nampaknya. 92 00:06:12,280 --> 00:06:18,790 93 00:06:18,790 --> 00:06:24,630 >> Jadi itulah bagaimana anda mencetak pembolehubah untuk terminal anda. 94 00:06:24,630 --> 00:06:28,820 Anda juga boleh menggunakan pembolehubah dalam rentetan. 95 00:06:28,820 --> 00:06:33,720 Jadi baru-baru dalam PHP, anda mungkin telah belajar 96 00:06:33,720 --> 00:06:37,340 bahawa terdapat rentetan interpolasi. 97 00:06:37,340 --> 00:06:43,830 Jadi, jika anda lihat di sini, jika saya mengisytiharkan tiga pembolehubah, nama, perpustakaan, 98 00:06:43,830 --> 00:06:49,700 dan bahasa, dan saya meletakkan, saya menulis rentetan, hello nama saya. 99 00:06:49,700 --> 00:06:54,190 Dan ketika itu dan bukannya PHP versi rentetan interpolasi 100 00:06:54,190 --> 00:06:58,960 yang kelihatan lebih kecil seperti ini, anda mempunyai tanda pound, dan kemudian 101 00:06:58,960 --> 00:07:01,220 pendakap kerinting, dan kemudian nama pembolehubah. 102 00:07:01,220 --> 00:07:07,350 Dan itulah bagaimana anda hendak mencetak, berkata, apa jua nama yang berubah-ubah adalah. 103 00:07:07,350 --> 00:07:10,140 >> Dan kemudian anda boleh juga menyatukan tali. 104 00:07:10,140 --> 00:07:12,890 Ruby menjadikannya sangat mudah dengan tanda tambah. 105 00:07:12,890 --> 00:07:16,110 Anda hanya perlu satu rentetan di sebelah kiri ditambah pembolehubah 106 00:07:16,110 --> 00:07:18,860 atau tali satu lagi ditambah rentetan. 107 00:07:18,860 --> 00:07:23,500 Jadi, jika saya mencetak ini keluar, ia perlu hanya mengatakan Hello, nama saya adalah Robert. 108 00:07:23,500 --> 00:07:27,340 Saya akan mengajar anda nokogiri di Ruby. 109 00:07:27,340 --> 00:07:35,370 >> Dan mari kita hanya mengesahkan bahawa yang memang ruby ​​intro case--. 110 00:07:35,370 --> 00:07:36,480 Hello, nama saya adalah Robert. 111 00:07:36,480 --> 00:07:40,160 Saya akan mengajar anda nokogiri di Ruby. 112 00:07:40,160 --> 00:07:45,600 >> Beralih, jika kenyataan yang lain, ia sedikit berbeza 113 00:07:45,600 --> 00:07:49,800 daripada apa yang anda mungkin digunakan untuk jika anda telah bekerja di C. 114 00:07:49,800 --> 00:07:53,200 Anda tidak perlu kurungan. 115 00:07:53,200 --> 00:07:55,220 Anda tidak perlu pendakap kerinting. 116 00:07:55,220 --> 00:08:00,170 Dan bukannya lagi jika, ia adalah satu elsif concatenated. 117 00:08:00,170 --> 00:08:07,260 Jadi di sini, jika saya telah diisytiharkan x up di sini, seperti yang kita lihat, masih x 5. 118 00:08:07,260 --> 00:08:11,100 Jadi, jika x kurang daripada 3, ia akan meletakkan kecil. 119 00:08:11,100 --> 00:08:14,030 Jika ia kurang dari 7, sederhana, lagi yang besar. 120 00:08:14,030 --> 00:08:17,340 Jadi 5 adalah nombor sederhana. 121 00:08:17,340 --> 00:08:22,270 Dan saya mengakhiri blok kod ini dengan akhir. 122 00:08:22,270 --> 00:08:24,920 >> Berikut adalah saya untuk gelung. 123 00:08:24,920 --> 00:08:28,240 Dan sintaks ini juga sedikit berbeza. 124 00:08:28,240 --> 00:08:33,500 The 0 hingga lima hanya pada dasarnya yang mengisytiharkan tatasusunan 0-5. 125 00:08:33,500 --> 00:08:36,120 Jadi ada lima slot dalam array. 126 00:08:36,120 --> 00:08:40,500 Dan kemudian untuk setiap slot dalam bahawa lokasi, saya akan menokok i. 127 00:08:40,500 --> 00:08:46,080 Jadi ini perlu mencetak 0-5, atau 0-4. 128 00:08:46,080 --> 00:08:49,630 Dan ini perlu mencetak sederhana. 129 00:08:49,630 --> 00:08:51,370 >> Dan saya hanya akan pergi mengikut melalui. 130 00:08:51,370 --> 00:08:54,466 Kalian akan mempunyai akses untuk kod ini di kemudian hari. 131 00:08:54,466 --> 00:08:55,965 Jadi anda semua boleh menjalankan diri ini. 132 00:08:55,965 --> 00:09:02,090 133 00:09:02,090 --> 00:09:06,620 >> Jadi ini adalah gelung sementara asas anda. 134 00:09:06,620 --> 00:09:12,230 Ini hanya akan mencetak j, menokok oleh 1 sehingga kita mencapai 5. 135 00:09:12,230 --> 00:09:18,320 >> Super cepat Ruby kursus kemalangan bagaimana untuk menulis fungsi. 136 00:09:18,320 --> 00:09:24,460 Sebaliknya, katakan, int faktorial nombor, kita hanya perlu def. 137 00:09:24,460 --> 00:09:28,450 Dan pada dasarnya anda mentakrifkan satu majlis di sini. 138 00:09:28,450 --> 00:09:30,600 Ini akan menjadi yang menamakan fungsi, 139 00:09:30,600 --> 00:09:34,280 dan ini adalah apa-apa pembolehubah yang anda mahu masuk ke dalam majlis itu. 140 00:09:34,280 --> 00:09:36,760 Anda boleh mempunyai jika kenyataan dalam. 141 00:09:36,760 --> 00:09:38,030 Anda boleh kembali. 142 00:09:38,030 --> 00:09:42,620 Dalam kes ini, kami mentakrifkan secara rekursif 143 00:09:42,620 --> 00:09:45,000 melaksanakan fungsi faktorial. 144 00:09:45,000 --> 00:09:48,660 Oleh itu, kita hanya fungsi panggilan di Ruby seperti ini. 145 00:09:48,660 --> 00:09:54,700 >> Jadi, jika saya telah ditakrifkan ini, saya boleh memanggil faktorial, lulus dalam 3, 146 00:09:54,700 --> 00:09:59,700 dan kemudian 3 akan menjadi bilangan pembolehubah yang boleh saya gunakan dalam majlis itu. 147 00:09:59,700 --> 00:10:08,010 Dan to_s ini hanya memutar kembali nilai faktorial ke dalam rentetan. 148 00:10:08,010 --> 00:10:10,760 Jika tidak ini akan membuang ralat yang mengatakan oh, saya 149 00:10:10,760 --> 00:10:13,230 tidak boleh mencetak rentetan yang kerana seperti yang anda ingat, 150 00:10:13,230 --> 00:10:18,230 meletakkan diletakkan rentetan kerana ini faktorial telah kembali nombor. 151 00:10:18,230 --> 00:10:21,850 Oleh itu, kita boleh menukar yang untuk rentetan seperti itu. 152 00:10:21,850 --> 00:10:27,856 Dan sebaliknya, anda juga boleh menukar rentetan kepada integer dengan to_i. 153 00:10:27,856 --> 00:10:32,650 >> Jadi membuat segala-galanya super mudah, jika saya hanya komen ini keluar, kecuali 154 00:10:32,650 --> 00:10:36,250 dan menjalankan fungsi faktorial. 155 00:10:36,250 --> 00:10:39,850 Kita harus dapat melihat yang faktorial 3 adalah 6. 156 00:10:39,850 --> 00:10:42,790 Dan itulah yang benar. 157 00:10:42,790 --> 00:10:46,160 >> Jadi itulah kursus kemalangan anda di Ruby. 158 00:10:46,160 --> 00:10:53,550 Dan sekarang anda tahu Ruby, kita boleh pergi kepada Nokogiri asas mengikis ditubuhkan. 159 00:10:53,550 --> 00:10:58,190 Pada dasarnya semua yang anda perlu lakukan adalah, di Ruby, menghendaki perpustakaan. 160 00:10:58,190 --> 00:11:04,390 Dan untuk keperluan kita, kita akan menggunakan perpustakaan OpenURI serta Nokogiri. 161 00:11:04,390 --> 00:11:07,870 Dan kemudian apa yang anda do-- dan ia akan memberikan anda sintaks untuk this-- 162 00:11:07,870 --> 00:11:16,010 adalah anda buka URL banyak yang anda lakukan di permintaan Curl, yang bermaksud C URL. 163 00:11:16,010 --> 00:11:20,330 >> Jadi, anda mengambil URL laman web dalam soalan. 164 00:11:20,330 --> 00:11:22,030 Anda menyimpannya dalam pembolehubah. 165 00:11:22,030 --> 00:11:27,400 Dan kemudian anda boleh mencari melalui yang berubah-ubah untuk tag HTML unik menggunakan 166 00:11:27,400 --> 00:11:30,590 perintah Css. 167 00:11:30,590 --> 00:11:34,360 Dan kemudian anda boleh mengeluarkan kandungan ke mana sahaja yang anda mahu. 168 00:11:34,360 --> 00:11:35,720 Anda boleh bermula di pangkalan data. 169 00:11:35,720 --> 00:11:42,040 Anda boleh mengeluarkan dalam fail, atau walaupun hanya mencetak ke skrin. 170 00:11:42,040 --> 00:11:47,290 >> Oleh itu, kita akan menunjukkan kepada anda pengikis asas. 171 00:11:47,290 --> 00:11:52,570 Jadi di sini anda boleh melihat kita mempunyai memerlukan nokogiri, memerlukan terbuka uri. 172 00:11:52,570 --> 00:11:57,150 Set asas anda, mari kita memanggilnya dokumen atau doc, 173 00:11:57,150 --> 00:12:07,780 sama Nokogiri :: HTML terbuka, yang merupakan arahan yang diberikan kepada kami oleh OpenURI 174 00:12:07,780 --> 00:12:08,920 perpustakaan. 175 00:12:08,920 --> 00:12:14,000 Dan kita akan dapat mencari, bagi orang-orang yang mungkin tinggal di quad, 176 00:12:14,000 --> 00:12:21,270 untuk basikal yang disenaraikan di Boston pada bahagian basikal Boston Craigslist 177 00:12:21,270 --> 00:12:22,020 tapak. 178 00:12:22,020 --> 00:12:26,460 >> Jadi, jika anda tidak biasa dengan Curl, saya akan hanya 179 00:12:26,460 --> 00:12:28,930 menunjukkan sebenar cepat apa Curl akan lakukan. 180 00:12:28,930 --> 00:12:38,350 Jika saya mahu mendapatkan semua URL dari laman web Craigslist, jika saya menaip curl, 181 00:12:38,350 --> 00:12:44,950 ia hanya tempat pembuangan sampah semua URL yang dari tapak basikal Craigslist 182 00:12:44,950 --> 00:12:46,720 ke terminal saya. 183 00:12:46,720 --> 00:12:49,130 Bukan itu terutamanya berguna kerana saya tidak 184 00:12:49,130 --> 00:12:53,330 mahu pergi secara manual melalui dan mencari perkara yang saya cari. 185 00:12:53,330 --> 00:13:01,590 Tetapi hanya supaya anda boleh melihat bahawa saya sebenarnya 186 00:13:01,590 --> 00:13:13,966 menggunakan kod yang betul, jika anda melihat penggunaan di URL untuk Craigslist dalam bikes-- 187 00:13:13,966 --> 00:13:17,460 atas sebab tertentu ia tidak dijumpai. 188 00:13:17,460 --> 00:13:20,340 Jika anda melihat halaman ini dan anda melihat URL, 189 00:13:20,340 --> 00:13:23,970 ini harus sama dengan permintaan Curl bahawa saya hanya menghantar. 190 00:13:23,970 --> 00:13:27,700 Dan sesungguhnya, itulah apa yang menjadi disimpan dalam doc pembolehubah. 191 00:13:27,700 --> 00:13:36,540 >> Oleh itu, apabila anda kembali kepada kod kami, kami kemudian boleh beroperasi pada doc ini berubah-ubah 192 00:13:36,540 --> 00:13:40,660 dengan menggunakan Css. 193 00:13:40,660 --> 00:13:49,240 Jadi mengatakan saya mahu mendapatkan semua tag yang span.txt, 194 00:13:49,240 --> 00:13:51,740 dan semua yang tag dalam tag itu. 195 00:13:51,740 --> 00:13:56,150 Dan mengapa kita mungkin mahu melakukan ini, saya mendengar anda menangis? 196 00:13:56,150 --> 00:14:02,920 >> Jika kita Memeriksa Element, ia memberikan anda pecahan bagaimana URL yang distrukturkan. 197 00:14:02,920 --> 00:14:06,200 Jika saya skrol ke bawah di sini, anda boleh melihat 198 00:14:06,200 --> 00:14:08,770 apa yang masing-masing berbeza unsur-unsur yang diwakilinya. 199 00:14:08,770 --> 00:14:13,410 Jadi mungkin saya mahu untuk mengakses ini elemen tertentu. 200 00:14:13,410 --> 00:14:16,820 Jadi, saya menggunakan pemaju Chrome alat untuk Memeriksa Element. 201 00:14:16,820 --> 00:14:22,970 Saya boleh melihat ke bawah di sini bahawa ini adalah tag dalam jangka masa yang 202 00:14:22,970 --> 00:14:26,230 tag dengan kelas txt. 203 00:14:26,230 --> 00:14:29,610 >> Jadi ini mendapat untuk kami operasi pertama yang 204 00:14:29,610 --> 00:14:37,330 adalah span doc.css, yang tag yang Saya sedang mencari dalam semua URL ini. 205 00:14:37,330 --> 00:14:43,650 Dan kemudian .txt beroperasi sama seperti CSS tidak apabila anda hanya menulis CSS 206 00:14:43,650 --> 00:14:49,630 dalam fail HTML anda dengan menyatakan kelas. 207 00:14:49,630 --> 00:14:57,980 Jadi pengendali khusus ini akan menentukan tag span dengan kelas txt. 208 00:14:57,980 --> 00:15:02,800 Dan kemudian jika saya meninggalkan ruang, ini maka akan pergi dalam tag yang 209 00:15:02,800 --> 00:15:05,170 dan kemudian mencari satu tag dalamnya. 210 00:15:05,170 --> 00:15:10,750 >> Jadi, jika saya hanya meletakkan ini kepada terminal, saya perlu 211 00:15:10,750 --> 00:15:21,630 dapat melihat dasarnya semua yang terletak dalam jangka ini kelas txt. 212 00:15:21,630 --> 00:15:22,890 Oleh itu, kita akan memberikan yang pergi. 213 00:15:22,890 --> 00:15:25,870 214 00:15:25,870 --> 00:15:27,756 ruby Craigslist-pengikis. 215 00:15:27,756 --> 00:15:31,850 216 00:15:31,850 --> 00:15:37,250 Dan sesungguhnya yang memberikan kita semua ini tag daripada pelbagai penyenaraian yang 217 00:15:37,250 --> 00:15:40,400 berada di halaman Craigslist itu. 218 00:15:40,400 --> 00:15:45,670 >> Jadi, jika kita kembali, kita boleh menjadikan ini ke dalam sesuatu yang lebih berguna. 219 00:15:45,670 --> 00:15:51,050 Mungkin kita mahu hanya pautan. 220 00:15:51,050 --> 00:15:58,790 Kerana dalam tag ini, saya juga akan mempunyai mempunyai pautan jalan 221 00:15:58,790 --> 00:16:00,590 bahawa halaman ini pergi ke. 222 00:16:00,590 --> 00:16:09,100 Jadi, jika anda melihat kod ini di sini, apa yang saya akan lakukan ialah bukannya Css, 223 00:16:09,100 --> 00:16:12,380 Saya boleh pergi at_css. 224 00:16:12,380 --> 00:16:16,820 Dan ini hanya akan mendapatkan pertama unsur semua perkara-perkara. 225 00:16:16,820 --> 00:16:20,890 Jadi jika saya berbuat demikian sehingga dalam kod saya hanya ditunjukkan sebelum ini, 226 00:16:20,890 --> 00:16:23,800 bukannya kembali semua itu, ia akan hanya 227 00:16:23,800 --> 00:16:26,850 kembali yang pertama daripada mereka. 228 00:16:26,850 --> 00:16:31,310 Jadi itulah bagaimana pengendali at_css berfungsi. 229 00:16:31,310 --> 00:16:39,460 >> Oleh itu, kita mahu untuk menyimpan jalan semua pertama tag a. 230 00:16:39,460 --> 00:16:47,430 Dan kerana yang akan memberi kita a-- jadi kita masih akan menggunakan Css. 231 00:16:47,430 --> 00:16:53,830 Tetapi oleh kerana ini akan memberi kita kembali pelbagai keseluruhan tag, 232 00:16:53,830 --> 00:16:55,710 kita akan akses unsur pertama. 233 00:16:55,710 --> 00:17:01,700 Jadi ini adalah satu lagi cara yang anda boleh mengakses mana-mana elemen tertentu jika anda 234 00:17:01,700 --> 00:17:04,810 mempunyai pelbagai unsur-unsur yang dikembalikan, 235 00:17:04,810 --> 00:17:11,930 kerana anda boleh merawat apa-apa yang pulangan Css sebagai array, pada asasnya. 236 00:17:11,930 --> 00:17:16,880 Dan kemudian kita akan mengakses sifat rujukan hiperteks ini. 237 00:17:16,880 --> 00:17:24,810 >> Jadi, jika anda mengambil melihat, jika anda kelihatan benar-benar dekat sini, 238 00:17:24,810 --> 00:17:28,270 jika anda hanya dasarnya melihat bar URL, 239 00:17:28,270 --> 00:17:33,880 ini adalah jalan yang anda akan dapat mengikis. 240 00:17:33,880 --> 00:17:41,565 Jadi, jika kita hanya menjalankan ini lagi, dan pastikan kita telah menyimpan ia. 241 00:17:41,565 --> 00:17:47,040 242 00:17:47,040 --> 00:17:48,300 Anda boleh menyemak di rumah. 243 00:17:48,300 --> 00:17:51,430 Ini sebenarnya perlawanan dengan pautan ini. 244 00:17:51,430 --> 00:17:55,950 >> Jadi mengapa kita mungkin mahu menggunakan ini? 245 00:17:55,950 --> 00:17:57,870 Jika anda ingin mengikis halaman ini dan ia mempunyai 246 00:17:57,870 --> 00:18:00,270 halaman pautan seperti Craigslist tidak, anda 247 00:18:00,270 --> 00:18:03,210 mungkin mahu pergi maka ke dalam setiap pautan 248 00:18:03,210 --> 00:18:05,120 dan kemudian mengikis Kandungan itu, yang 249 00:18:05,120 --> 00:18:08,520 adalah apa yang kita akan lakukan. 250 00:18:08,520 --> 00:18:11,660 >> Jadi apabila anda mempunyai laluan sebagai berubah-ubah, saya tidak lagi benar-benar 251 00:18:11,660 --> 00:18:13,200 mengambil berat tentang mencetak ia keluar. 252 00:18:13,200 --> 00:18:15,420 Saya hanya perlu menyimpan ia sebagai pembolehubah. 253 00:18:15,420 --> 00:18:20,980 Dan kemudian saya boleh mengakses lain halaman dengan cara yang sama saya mengakses 254 00:18:20,980 --> 00:18:22,260 doc di tempat pertama. 255 00:18:22,260 --> 00:18:25,920 Kecuali dengan URL, kita akan menggunakan rentetan interpolasi 256 00:18:25,920 --> 00:18:29,180 seperti saya telah menerangkan secara Ruby awal-awal untuk menambah 257 00:18:29,180 --> 00:18:32,010 jalan ke akhir akar. 258 00:18:32,010 --> 00:18:38,970 >> Jadi apa ini akan lakukan ialah ini akan meletakkan di atas jalan 259 00:18:38,970 --> 00:18:42,360 bahawa saya dikikis sebelum ini dan kemudian menghidupkan yang 260 00:18:42,360 --> 00:18:49,580 ke dalam item baru, apa sahaja yang anda mahu memanggil kitab itu first_listing, sebagai contoh. 261 00:18:49,580 --> 00:18:52,900 Tetapi saya akan meninggalkan pada item untuk sekarang, 262 00:18:52,900 --> 00:18:55,420 kerana itulah yang saya gunakan di sini. 263 00:18:55,420 --> 00:19:02,900 >> Jadi mengatakan saya mahu mendapatkan keterangan pengeposan pertama di Craigslist. 264 00:19:02,900 --> 00:19:04,740 Jadi saya akan turun di sini. 265 00:19:04,740 --> 00:19:10,660 Saya akan klik pada Memeriksa Unsur lagi, kerana ini adalah keterangan. 266 00:19:10,660 --> 00:19:14,350 Saya pergi ke sini dan melihat jika saya boleh mencari bagaimana aku dapat 267 00:19:14,350 --> 00:19:16,530 dapat mencari tag yang unik ini. 268 00:19:16,530 --> 00:19:19,530 Dan dalam kes ini, ia mempunyai ID, yang membawa kita 269 00:19:19,530 --> 00:19:26,810 cara kita seterusnya mencari tag, yang dengan hashtag. 270 00:19:26,810 --> 00:19:30,670 >> Jadi untuk kelas, anda boleh menggunakan operator titik. 271 00:19:30,670 --> 00:19:38,610 Jadi .txt sedang menentukan kelas txt, sedangkan hash menentukan ID. 272 00:19:38,610 --> 00:19:43,720 Jadi dalam kes ini, tag adalah seksyen, dan ID adalah postingbody. 273 00:19:43,720 --> 00:19:47,780 >> Jadi ini pergi dan mendapati first-- kerana kami 274 00:19:47,780 --> 00:19:51,200 menggunakan at_css-- ini pergi dan mendapati elemen pertama yang 275 00:19:51,200 --> 00:19:57,180 datang dengan tag seksyen dan ID postingbody. 276 00:19:57,180 --> 00:20:02,636 Dan kemudian anda boleh mengakses elemen teks item yang kembali dengan .text. 277 00:20:02,636 --> 00:20:06,230 Dan kemudian kita boleh menyimpan bahawa dalam keterangan. 278 00:20:06,230 --> 00:20:09,370 >> Jadi sekarang kita mempunyai Huraian berubah-ubah, 279 00:20:09,370 --> 00:20:14,850 kita mungkin dapat lakukan, katakan, memfailkan I / O. Jadi memfailkan I / O di Ruby 280 00:20:14,850 --> 00:20:21,310 hampir sama dengan fail I / O dalam C di mana kita membuka fail. 281 00:20:21,310 --> 00:20:23,260 Kita boleh menulis kepadanya. 282 00:20:23,260 --> 00:20:25,060 Dan kemudian kita akan menutup fail itu. 283 00:20:25,060 --> 00:20:29,660 >> Jadi di sini, kami hanya menamakan fail, beberapa pembolehubah sewenang-wenangnya. 284 00:20:29,660 --> 00:20:33,120 Kita boleh juga hanya meletakkan ini di sini. 285 00:20:33,120 --> 00:20:39,630 Kami mempunyai pembolehubah bahawa kita menyimpan fail terbuka seperti dengan File.open. 286 00:20:39,630 --> 00:20:46,370 Dan kita menulis ke fail ini, jadi kami membukanya dengan pengendali w. 287 00:20:46,370 --> 00:20:54,280 Dan kemudian kita meletakkan tali ke dalam memfailkan dengan pengendali .puts itu. 288 00:20:54,280 --> 00:20:58,310 Dan kemudian kita meletakkan pembolehubah yang kita mahu menulis ke fail di dalamnya. 289 00:20:58,310 --> 00:21:00,200 Dan kemudian kita hanya menutup fail. 290 00:21:00,200 --> 00:21:04,000 >> Jadi, jika kita pergi ke hadapan dan menjalankan ini, ini perlu mengemukakan sesuatu dokumen 291 00:21:04,000 --> 00:21:10,840 dengan yang description.txt akan mempunyai penerangan ini di dalamnya. 292 00:21:10,840 --> 00:21:14,015 Jadi, jika saya menjalankan kitab itu tidak. 293 00:21:14,015 --> 00:21:17,520 294 00:21:17,520 --> 00:21:23,330 Ia dihasilkan fail teks dengan, mudah-mudahan, perkara yang sama. 295 00:21:23,330 --> 00:21:25,850 296 00:21:25,850 --> 00:21:33,290 Jadi mungkin ada posting baru yang yang datang semasa saya telah bercakap. 297 00:21:33,290 --> 00:21:36,580 Dan sesungguhnya ia kelihatan seperti terdapat. 298 00:21:36,580 --> 00:21:43,380 Jadi, jika kita pergi ke basikal klasik ini, 1962-1966, yang seolah-olah untuk perlawanan. 299 00:21:43,380 --> 00:21:45,620 Dan di sana anda pergi. 300 00:21:45,620 --> 00:21:51,250 >> Jadi itulah yang paling asas fungsi mengikis. 301 00:21:51,250 --> 00:21:57,510 Kita boleh mempunyai bukan hanya menulis ke fail ini, 302 00:21:57,510 --> 00:21:59,930 kita boleh menambah perkara yang pelbagai. 303 00:21:59,930 --> 00:22:03,770 Jadi, jika saya mengisytiharkan tiga tatasusunan, tajuk, harga, dan penerangan. 304 00:22:03,770 --> 00:22:06,310 305 00:22:06,310 --> 00:22:13,790 Dan kami beroperasi pada item doc sekarang. 306 00:22:13,790 --> 00:22:16,940 Kita boleh pergi melalui dan semua span.txt itu. 307 00:22:16,940 --> 00:22:21,710 Dan ingat, ini mengembalikan array semua barang-barang yang didapati. 308 00:22:21,710 --> 00:22:27,300 Dan kemudian di Ruby, anda hanya boleh menggunakan .Setiap untuk melelar melalui setiap item 309 00:22:27,300 --> 00:22:28,410 array. 310 00:22:28,410 --> 00:22:31,330 Dan kemudian untuk setiap item, Saya hanya akan memanggilnya 311 00:22:31,330 --> 00:22:34,620 pautan, kerana itulah pada dasarnya apa yang ada. 312 00:22:34,620 --> 00:22:46,830 >> Jadi, jika saya meletakkan setiap a.hdrlnk link.css dot, ini sebenarnya akan link 313 00:22:46,830 --> 00:22:58,280 dan mencari dalam pautan lain Elemen HTML dan kelas sepadan. 314 00:22:58,280 --> 00:23:04,990 Jadi, jika kita ingat apa yang ini adalah, span.txt itu, 315 00:23:04,990 --> 00:23:13,160 anda boleh see- biar saya kembali quick-- sebenar dalam span.txt 316 00:23:13,160 --> 00:23:17,490 kami mempunyai banyak kelas lain. 317 00:23:17,490 --> 00:23:27,180 Jadi di dalam span.txt, kami tidak sabar- dengan tag dengan hdrlnk kelas. 318 00:23:27,180 --> 00:23:29,890 Jadi biarlah saya mendapati bahawa untuk anda semua sangat cepat. 319 00:23:29,890 --> 00:23:37,390 320 00:23:37,390 --> 00:23:42,850 >> Jadi, anda boleh lihat di sini, ini adalah satu tanda itu dalam tempoh kelas txt 321 00:23:42,850 --> 00:23:44,920 yang mempunyai hdrlnk kelas. 322 00:23:44,920 --> 00:23:47,610 Dan itu memang apa kami cuba untuk mendapatkan. 323 00:23:47,610 --> 00:23:54,680 >> Oleh itu, kita sedang cuba untuk menyimpan semua mereka pautan di dalam tajuk. 324 00:23:54,680 --> 00:23:59,545 Dan kemudian kita akan mencetak di setiap pautan. 325 00:23:59,545 --> 00:24:00,360 Tiada maaf. 326 00:24:00,360 --> 00:24:04,530 Kami akan mencetak harga setiap daripada mereka. 327 00:24:04,530 --> 00:24:09,350 Jadi mari kita menjalankan ini benar-benar cepat dan melihat apa yang dilakukan. 328 00:24:09,350 --> 00:24:14,680 329 00:24:14,680 --> 00:24:17,720 >> Jadi ini hanya pada dasarnya pergi melalui setiap satu pautan 330 00:24:17,720 --> 00:24:27,310 seterusnya, diakses tag yang berkenaan, dan kemudian menarik diri daripada harga. 331 00:24:27,310 --> 00:24:33,910 Dan ia berbuat demikian kerana selepas anda mempunyai semua dalam tajuk, 332 00:24:33,910 --> 00:24:37,260 kita baru sahaja disimpan tajuk di sana. 333 00:24:37,260 --> 00:24:40,180 Kami baru sahaja disimpan link dalam tajuk array. 334 00:24:40,180 --> 00:24:47,720 Dan dalam hal ini untuk operasi gelung, mana daripada pergi ke a.hdrlnk, 335 00:24:47,720 --> 00:24:50,490 yang kami cari span.price a. 336 00:24:50,490 --> 00:24:56,500 Jadi, jika saya boleh hanya benar-benar mencari dengan cepat harga, jika anda memeriksa unsur, 337 00:24:56,500 --> 00:25:00,610 anda akan melihat bahawa ia adalah tempoh masa yang dengan kelas harga. 338 00:25:00,610 --> 00:25:04,670 Dan itu asasnya bagaimana kita mendapat harga di sana. 339 00:25:04,670 --> 00:25:10,040 >> Jadi itulah yang benar-benar kes asas mengikis. 340 00:25:10,040 --> 00:25:13,550 Itulah bagaimana anda mendapatkan semua elemen pada halaman 341 00:25:13,550 --> 00:25:16,510 bahawa, berkata, anda sudah tahu URL. 342 00:25:16,510 --> 00:25:21,050 >> Jadi, jika kita ingin mendapatkan sedikit lebih mendalam, 343 00:25:21,050 --> 00:25:23,950 kita boleh mengikis halaman dalam halaman. 344 00:25:23,950 --> 00:25:28,480 Dan untuk contoh ini, saya akan menjadi keluarkan ke fail CSV. 345 00:25:28,480 --> 00:25:39,510 Jadi saya memerlukan csv di sini kerana Ruby tidak, dalam dirinya sendiri, 346 00:25:39,510 --> 00:25:42,350 mempunyai fungsi yang kepada output hanya fail CSV. 347 00:25:42,350 --> 00:25:45,030 Jadi, itu sangat mudah. 348 00:25:45,030 --> 00:25:48,710 Biar saya pergi ke depan. 349 00:25:48,710 --> 00:25:51,640 350 00:25:51,640 --> 00:25:57,170 Kami meliputi fail I / O. Jadi ini adalah sama dengan bagaimana ia adalah di C. 351 00:25:57,170 --> 00:26:00,870 Dan sebelum kita beralih kepada Kimono, Saya hanya akan menunjukkan kepada anda benar-benar cepat bagaimana 352 00:26:00,870 --> 00:26:02,790 untuk mengikis tapak dalam pemandangan. 353 00:26:02,790 --> 00:26:10,040 >> Oleh itu, kita telah belajar bagaimana mengisytiharkan tatasusunan di Ruby. 354 00:26:10,040 --> 00:26:13,280 Jadi saya hanya mengisytiharkan sekumpulan tatasusunan sewenang-wenangnya 355 00:26:13,280 --> 00:26:16,310 bahawa saya akan menyimpan data dalam. 356 00:26:16,310 --> 00:26:20,680 doc beroperasi dengan cara yang sama seperti yang berlaku dalam fail sebelumnya. 357 00:26:20,680 --> 00:26:23,580 Kami masuk ke dalam, mencari tempat setiap satu daripada span.txt ini. 358 00:26:23,580 --> 00:26:25,040 Kita sudah tahu bahawa. 359 00:26:25,040 --> 00:26:32,130 Itulah bekas dalam mana setiap pautan mempunyai semua data yang kami mahu. 360 00:26:32,130 --> 00:26:40,800 >> Jadi di sini apa yang kita lakukan adalah untuk setiap link span class txt, kita akan dalam 361 00:26:40,800 --> 00:26:45,720 dan kami sentiasa mencari tag yang, mencari elemen pertama itu. 362 00:26:45,720 --> 00:26:49,937 Ingat, Css mengembalikan array, supaya anda tidak boleh hanya mengaksesnya sebagai adalah. 363 00:26:49,937 --> 00:26:51,520 Kita akan mencari elemen yang pertama. 364 00:26:51,520 --> 00:26:56,430 Walaupun ia adalah pelbagai satu perkara, anda perlu menggunakan sintaks ini, 365 00:26:56,430 --> 00:26:58,800 dan kemudian tarik keluar atribut href. 366 00:26:58,800 --> 00:27:01,800 >> Oleh itu, kita melakukan ini lebih awal. 367 00:27:01,800 --> 00:27:04,440 Jadi ini harus kelihatan biasa. 368 00:27:04,440 --> 00:27:14,330 Dan sekarang kita mempunyai array dipanggil laluan semua pautan kami 369 00:27:14,330 --> 00:27:16,590 bahawa kita akan ingin gunakan. 370 00:27:16,590 --> 00:27:21,350 Jadi, jika kita mempunyai pelbagai ini semua daripada laluan yang kita ingin gunakan, 371 00:27:21,350 --> 00:27:26,840 kita boleh membuat item bagi setiap halaman tersebut apabila kita membuka laman tersebut. 372 00:27:26,840 --> 00:27:31,150 Jadi seperti yang kita juga melihat pada sintaks sebelum ini, di mana 373 00:27:31,150 --> 00:27:37,450 melakukan rentetan interpolasi dengan jalan yang di sini, jadi sintaksis adalah hanya untuk jalan. 374 00:27:37,450 --> 00:27:41,450 Dan saya dapat nama ini berubah-ubah apa-apa nama sewenang-wenangnya. 375 00:27:41,450 --> 00:27:43,070 >> Ini adalah salah satu yang penting. 376 00:27:43,070 --> 00:27:46,650 Ini adalah pelbagai bahawa anda akan menjadi mengakses setiap elemen. 377 00:27:46,650 --> 00:27:52,400 Tetapi apabila anda mengatakan dengan jalan-jalan yang, ini bermakna untuk setiap elemen dalam laluan, 378 00:27:52,400 --> 00:27:55,150 memanggilnya jalan, dan menggunakan itu. 379 00:27:55,150 --> 00:27:59,266 Ini pada asasnya seperti apabila anda lakukan untuk gelung dan anda menggunakan int i. 380 00:27:59,266 --> 00:28:04,000 Jadi, anda boleh merawat jalan sebagai berubah-ubah yang yang menokok. 381 00:28:04,000 --> 00:28:07,820 >> Kemudian bagi setiap daripada mereka, pergi ke setiap pautan. 382 00:28:07,820 --> 00:28:11,710 Kerana kita menyimpannya di halaman ruang, jadi kita membuat halaman baru setiap masa 383 00:28:11,710 --> 00:28:13,330 kita mengaksesnya. 384 00:28:13,330 --> 00:28:20,560 Dan kemudian dalam halaman yang baru, mencari span.postingtitletext, span.price, 385 00:28:20,560 --> 00:28:22,240 dan maka seksyen # postingbody. 386 00:28:22,240 --> 00:28:28,430 Kami telah dilindungi seksyen # postingbody apabila kita melihat keterangan. 387 00:28:28,430 --> 00:28:34,890 >> Oleh itu, kita boleh pergi melihat dalam jawatan Craigslist itu, jika anda hanya melihat tajuk, 388 00:28:34,890 --> 00:28:38,810 anda boleh melihatnya di sini, span postingtitletext. 389 00:28:38,810 --> 00:28:41,390 Dan sebab itulah ianya ada. 390 00:28:41,390 --> 00:28:49,120 Dan kemudian untuk harga, anda boleh mengaksesnya dengan span class harga. 391 00:28:49,120 --> 00:28:54,480 >> Oleh itu, kita juga mungkin mungkin mahu menyimpan URL. 392 00:28:54,480 --> 00:28:58,580 Oleh itu, kita hanya akan menjalankan ini sekali lagi, menyimpannya di dalam array, 393 00:28:58,580 --> 00:29:01,150 kerana jika anda sedang mencari di Craigslist, anda 394 00:29:01,150 --> 00:29:05,290 mungkin akan mahu cara untuk, jika anda melihat sesuatu yang menarik bagi anda, 395 00:29:05,290 --> 00:29:06,620 kembali ke laman web itu. 396 00:29:06,620 --> 00:29:10,480 Jadi anda hanya mahu menyimpan URL demi rujukan. 397 00:29:10,480 --> 00:29:13,840 398 00:29:13,840 --> 00:29:19,630 >> Ini hanyalah pada dasarnya lain sintaks untuk untuk gelung. 399 00:29:19,630 --> 00:29:26,360 Saya hanya boleh melakukan paths.each sebaliknya daripada untuk jalan-jalan dengan indeks. 400 00:29:26,360 --> 00:29:31,280 Dan sintaks ini adalah Ruby bagi- jalan adalah apa yang kita lakukan di sini, 401 00:29:31,280 --> 00:29:33,920 mengisytiharkan pembolehubah untuk setiap item. 402 00:29:33,920 --> 00:29:38,540 Dan indeks berkelakuan seperti i dalam C untuk gelung. 403 00:29:38,540 --> 00:29:41,280 Jadi, anda boleh menjejaki apa indeks adalah. 404 00:29:41,280 --> 00:29:45,200 >> Jadi di sini adalah hanya perkara yang mudah sedikit 405 00:29:45,200 --> 00:29:46,950 apabila anda menjalankan pengikis. 406 00:29:46,950 --> 00:29:50,580 Jika anda mengikis beratus-ratus muka surat, memastikan bahawa ia tidak tergantung, 407 00:29:50,580 --> 00:29:53,320 ia akan hanya output, Saya mengakses laman ini, 408 00:29:53,320 --> 00:29:55,960 dan memastikan bahawa ia masih berterusan. 409 00:29:55,960 --> 00:29:59,250 Tetapi untuk tujuan kita, kerana ada seratus item, 410 00:29:59,250 --> 00:30:08,000 Saya akan mengakses hanya tiga daripada mereka supaya kita tidak kehabisan masa di sini. 411 00:30:08,000 --> 00:30:13,040 >> Tetapi sebelum kita dapat itu, saya hanya akan menunjukkan kepada anda benar-benar cepat, 412 00:30:13,040 --> 00:30:16,940 Saya akan keluarkan tajuk, harga, penerangan, dan URL 413 00:30:16,940 --> 00:30:19,600 setiap satu pautan yang saya telah dikikis. 414 00:30:19,600 --> 00:30:23,720 Dan kemudian ini hanyalah sintaks untuk perpustakaan CSV. 415 00:30:23,720 --> 00:30:25,240 Anda membuka CSV. 416 00:30:25,240 --> 00:30:27,070 Ini adalah apa yang saya akan memanggilnya. 417 00:30:27,070 --> 00:30:29,430 Membukanya dengan menulis do. 418 00:30:29,430 --> 00:30:33,830 Dan kemudian CSV akan menjadi fail yang anda memasukkan semua ke dalam. 419 00:30:33,830 --> 00:30:37,800 Ini hanyalah cek kewarasan untuk saya tahu bahawa ia berjalan. 420 00:30:37,800 --> 00:30:41,240 Dan ini adalah cek kewarasan saya tahu bahawa ia selesai. 421 00:30:41,240 --> 00:30:46,670 Jadi, saya meletakkan tajuk ke dalam berturut-turut dalam CSV, harga, url, penerangan, 422 00:30:46,670 --> 00:30:49,420 semua ke dalam baris dalam CSV. 423 00:30:49,420 --> 00:30:53,410 >> Jadi, jika kita pergi dan menjalankan sekarang-- ini dan saya hanya 424 00:30:53,410 --> 00:31:04,710 memastikan bahawa saya telah menyimpan kitab itu dan bukannya hanya keluarkan ia ke terminal, 425 00:31:04,710 --> 00:31:09,750 kita harus mempunyai CSV fail yang yang dihasilkan. 426 00:31:09,750 --> 00:31:13,500 Jadi di sini kita dapat melihat CSV fail yang sudah dihasilkan. 427 00:31:13,500 --> 00:31:19,330 Ini adalah output Pandangan bahawa saya hanya berlari. 428 00:31:19,330 --> 00:31:23,030 Seperti yang anda boleh lihat di sini, pengaksesan halaman 0, 1, 2, 3. 429 00:31:23,030 --> 00:31:27,400 Ini adalah tajuk, harga, penerangan. 430 00:31:27,400 --> 00:31:31,710 Dan jika kita melihat CSV ini fail yang kami telah dihasilkan, 431 00:31:31,710 --> 00:31:35,700 anda boleh melihat yang outputted sini. 432 00:31:35,700 --> 00:31:40,350 Ini bukan Excel, jadi ia bukan diformat dalam baris dan lajur. 433 00:31:40,350 --> 00:31:45,140 Tetapi anda boleh bayangkan bagaimana ia mungkin akan diformat. 434 00:31:45,140 --> 00:31:47,740 >> CSV bermaksud nilai dipisahkan koma. 435 00:31:47,740 --> 00:31:50,090 Jadi anda boleh bayangkan ini mungkin berturut-turut. 436 00:31:50,090 --> 00:31:54,700 Dan setiap koma akan menunjukkan ruang yang berasingan. 437 00:31:54,700 --> 00:32:00,010 Hanya satu perkataan caution-- kadang-kadang anda berada 438 00:32:00,010 --> 00:32:02,260 mengikis perkara dengan banyak tanda koma. 439 00:32:02,260 --> 00:32:05,100 Jadi, jika anda keluarkan ke fail CSV, 440 00:32:05,100 --> 00:32:10,340 ia mungkin tidak output cara yang anda mungkin berfikir. 441 00:32:10,340 --> 00:32:16,770 >> Jadi, itu pada dasarnya semua ada untuk mengikis asas HTML 442 00:32:16,770 --> 00:32:20,110 muka surat dengan Nokogiri. 443 00:32:20,110 --> 00:32:26,000 >> Jadi makhluk internet inovatif kerana ia telah datang 444 00:32:26,000 --> 00:32:33,220 dengan lebih automatik dan GUI versi, walaupun kurang mantap 445 00:32:33,220 --> 00:32:35,540 versi mengikis pelbagai laman web. 446 00:32:35,540 --> 00:32:39,060 Dan untuk tujuan kami Saya akan menunjukkan 447 00:32:39,060 --> 00:32:42,920 sambungan Chrome dipanggil Kimono. 448 00:32:42,920 --> 00:32:46,690 Dan semua yang anda perlu lakukan adalah anda menavigasi ke halaman yang anda mahu untuk mengikis. 449 00:32:46,690 --> 00:32:48,590 Anda klik pada bidang yang diminati. 450 00:32:48,590 --> 00:32:51,510 Anda menentukurkan bidang, kerana ia akan secara automatik 451 00:32:51,510 --> 00:32:54,360 mengesan difikirkannya anda mahu mengikis, 452 00:32:54,360 --> 00:32:56,280 dan kemudian anda hanya membuat API. 453 00:32:56,280 --> 00:33:03,700 >> Jadi jika kita untuk menunjukkan pada Craigslist, ia sebenarnya tidak akan berfungsi. 454 00:33:03,700 --> 00:33:08,290 Dan ini adalah apa yang saya akan kembali ke berkata mengenainya yang bukan sebagai yang teguh. 455 00:33:08,290 --> 00:33:10,320 Ia mempunyai masalah mewujudkan API. 456 00:33:10,320 --> 00:33:13,400 Tetapi sebagai demonstrasi daripada apa yang ia akan lakukan, 457 00:33:13,400 --> 00:33:17,460 jika anda memasang pelanjutan Chrome, semua yang anda lakukan adalah anda klik di atasnya. 458 00:33:17,460 --> 00:33:21,750 Ia Kimonofies halaman, dan kemudian anda klik pada perkara yang anda mahu untuk skrip. 459 00:33:21,750 --> 00:33:24,480 >> Jadi jika saya klik pada itu, ia akan mengetengahkan 460 00:33:24,480 --> 00:33:28,130 apa yang difikirkannya Saya hendak menjadi mengikis off laman tersebut. 461 00:33:28,130 --> 00:33:33,660 Jadi mungkin saya panggil penyenaraian ini. 462 00:33:33,660 --> 00:33:36,430 Ini adalah berapa banyak perkara yang saya pilih. 463 00:33:36,430 --> 00:33:43,810 Dan saya hanya boleh mengesahkan atau menafikan beberapa daripada penyenaraian lain yang disyorkan 464 00:33:43,810 --> 00:33:49,600 untuk mendapatkannya untuk menambah apa yang akan dikikis. 465 00:33:49,600 --> 00:33:52,330 >> Oleh sebab itu kita dapat lihat ada seratus barangan terpilih. 466 00:33:52,330 --> 00:33:58,060 Jika saya mahu mempunyai ladang lain yang saya juga mengikis yang berkaitan dengan ini, 467 00:33:58,060 --> 00:34:02,540 mengatakan saya mahu mengikis harga juga, maka saya boleh melakukan perkara yang sama. 468 00:34:02,540 --> 00:34:06,190 469 00:34:06,190 --> 00:34:11,550 >> Jadi di sini adalah satu demonstrasi bagaimana ia lebih kurang mantap, kerana sekarang ia 470 00:34:11,550 --> 00:34:15,050 mengambil bandar dan bukannya hanya harga yang saya mahu. 471 00:34:15,050 --> 00:34:16,989 Dan kini ia meningkat 200 perkara. 472 00:34:16,989 --> 00:34:19,880 Anda boleh kembali dan memadam. 473 00:34:19,880 --> 00:34:21,449 Anda boleh cuba lagi. 474 00:34:21,449 --> 00:34:24,250 Tetapi tidak ada jaminan. 475 00:34:24,250 --> 00:34:29,909 Ini adalah bagaimana kerja-kerja ini kadang-kadang. 476 00:34:29,909 --> 00:34:32,969 Seperti yang anda lihat di sini, kini ia berkata 96 di sini. 477 00:34:32,969 --> 00:34:37,000 Ia mengambil sebahagian besar daripada pautan yang anda mahu untuk mengikis, tetapi tidak 478 00:34:37,000 --> 00:34:39,280 semestinya semua daripada mereka. 479 00:34:39,280 --> 00:34:43,909 >> Satu lagi alat yang berguna Kimono walaupun adalah anda boleh pergi ke Ciri-ciri Advanced 480 00:34:43,909 --> 00:34:47,980 di sini, pergi ke Advanced, dan ia akan menunjukkan kepada anda 481 00:34:47,980 --> 00:34:53,139 pecahan yang unik cara untuk mengakses HTML 482 00:34:53,139 --> 00:34:54,909 tag yang anda mahu untuk mengikis. 483 00:34:54,909 --> 00:35:01,450 Jadi untuk penyenaraian, jika anda melihat penggunaan di sini, jika anda mengakses div p span span, 484 00:35:01,450 --> 00:35:06,030 anda sebenarnya hanya menggunakan ini dalam kod Nokogiri anda, 485 00:35:06,030 --> 00:35:10,780 di mana sebelum kita telah span.txt untuk mengakses setiap satu daripada senarai. 486 00:35:10,780 --> 00:35:13,270 Jika saya hanya mahu teks dalam senarai, 487 00:35:13,270 --> 00:35:18,950 Saya dapat input ruang div p span ruang ruang span ruang, 488 00:35:18,950 --> 00:35:21,570 dan ia akan mencapai kesan yang sama. 489 00:35:21,570 --> 00:35:26,320 Dan bagi anda yang berminat dalam menggunakan ungkapan biasa, 490 00:35:26,320 --> 00:35:31,670 ia berlaku juga memberi anda biasa semacam ungkapan tali untuk input 491 00:35:31,670 --> 00:35:34,900 untuk mencari perkara-perkara anda cuba untuk mencari. 492 00:35:34,900 --> 00:35:44,130 >> Jadi ada satu lagi ciri sejuk daripada Kimono di mana anda boleh nombor pd halaman buku, 493 00:35:44,130 --> 00:35:47,780 yang bukan sahaja boleh saya mengikis keputusan halaman ini, 494 00:35:47,780 --> 00:35:50,890 Saya boleh klik pada ini sedikit butang sini, penomboran, 495 00:35:50,890 --> 00:35:55,580 menentukan butang yang akan membawa saya ke halaman seterusnya, 496 00:35:55,580 --> 00:35:59,500 dan kemudian ia hanya akan tahu bahawa ia boleh melelar ke halaman seterusnya, 497 00:35:59,500 --> 00:36:04,120 dan kemudian mengikis semua the-- selagi kerana ia adalah format yang sama course-- 498 00:36:04,120 --> 00:36:06,110 Pandangan semua link juga. 499 00:36:06,110 --> 00:36:15,230 >> Jadi kerana Kimono tidak mahu bekerja dengan Craigslist, apa yang kita lakukan 500 00:36:15,230 --> 00:36:19,790 adalah saya Kimonofied Crimson Harvard. 501 00:36:19,790 --> 00:36:29,380 Saya telah ditarik keluar beberapa jenis bahagian dipaparkan artikel, mengesahkan di sini. 502 00:36:29,380 --> 00:36:33,090 Mengatakan semua ini. 503 00:36:33,090 --> 00:36:35,830 Saya telah menyusun API ini untuk anda terlebih dahulu. 504 00:36:35,830 --> 00:36:38,990 Tetapi jika tidak, apa yang akan anda lakukan adalah anda akan hanya klik Selesai. 505 00:36:38,990 --> 00:36:40,940 Masukkan butir-butir API anda. 506 00:36:40,940 --> 00:36:45,260 Tetapkan untuk memuat merangkak automatik atau manual. 507 00:36:45,260 --> 00:36:48,460 Jadi, anda boleh mengemas kini data setiap 15 minit, 508 00:36:48,460 --> 00:36:50,330 mingguan, harian, apa sahaja yang anda mahu. 509 00:36:50,330 --> 00:36:51,160 Nama API anda. 510 00:36:51,160 --> 00:36:52,790 Buat API. 511 00:36:52,790 --> 00:36:58,460 Untuk kamu, saya telah menciptakan Lembayung depan API halaman sudah. 512 00:36:58,460 --> 00:37:02,480 >> Jadi anda hanya membuat akaun di Kimono, dan ia 513 00:37:02,480 --> 00:37:06,240 akan menyimpan semua API anda untuk anda. 514 00:37:06,240 --> 00:37:10,330 Jadi pada asasnya itu sahaja anda scrapes yang berbeza berasingan. 515 00:37:10,330 --> 00:37:18,250 >> Jadi, jika kita lihat di sini, ini adalah pendapat pautan yang saya telah dikumpulkan. 516 00:37:18,250 --> 00:37:21,290 Inilah yang dipaparkan pautan yang saya telah dikumpulkan. 517 00:37:21,290 --> 00:37:24,090 Dan ini yang paling banyak dibaca pautan yang saya telah mengumpul 518 00:37:24,090 --> 00:37:27,120 Pandangan dari API paling baru-baru ini. 519 00:37:27,120 --> 00:37:30,790 >> Jadi jika anda boleh lihat di sini, ini akan menjadi yang dipaparkan, 520 00:37:30,790 --> 00:37:34,130 ini akan menjadi pendapat, yang dalam contoh ini, 521 00:37:34,130 --> 00:37:38,150 Saya telah digabungkan mereka semua ke dalam satu koleksi. 522 00:37:38,150 --> 00:37:42,780 Tetapi jika anda hanya bermain-main dengannya sedikit, anda boleh berpecah 523 00:37:42,780 --> 00:37:45,090 dan dibahagikan sehingga bagaimanapun anda mahu selagi 524 00:37:45,090 --> 00:37:47,520 sebagai pemformatan adalah sedikit berbeza. 525 00:37:47,520 --> 00:37:51,320 >> Hanya untuk bermain-main dengan ini, merangkak ditubuhkan, salah satu daripada kelemahan 526 00:37:51,320 --> 00:37:58,120 adalah anda hanya boleh merangkak naik 25 muka surat pada satu masa. 527 00:37:58,120 --> 00:38:00,430 Itulah salah satu faktor menghadkan. 528 00:38:00,430 --> 00:38:03,060 Tetapi di sini, tidak meletakkanya merangkak manual, ini 529 00:38:03,060 --> 00:38:06,100 adalah bagaimana anda boleh memberitahu ia untuk mengemas kini data anda. 530 00:38:06,100 --> 00:38:11,010 Dan di sini anda boleh melihat sejarah merangkak anda segala-galanya yang anda telah merangkak. 531 00:38:11,010 --> 00:38:16,000 Dan anda semua boleh kembali, mendaftar, bermain-main dengan semua cara yang berbeza 532 00:38:16,000 --> 00:38:20,340 bahawa anda boleh mengubah suai dan menggunakan data anda. 533 00:38:20,340 --> 00:38:24,580 >> Kimono boleh ditetapkan sehingga mengikis pautan dalam pautan. 534 00:38:24,580 --> 00:38:29,700 Dan anda akan berbuat demikian dengan terlebih dahulu mengikis senarai pautan, 535 00:38:29,700 --> 00:38:35,390 dan kemudian menggunakan API bahawa sebagai melompat dari mata untuk API lain 536 00:38:35,390 --> 00:38:36,710 yang anda buat skrip. 537 00:38:36,710 --> 00:38:42,040 Tetapi itu lebih rumit daripada apa yang kita akan masuk ke dalam hari ini. 538 00:38:42,040 --> 00:38:44,270 >> Jadi itulah Kimono. 539 00:38:44,270 --> 00:38:46,980 Kami akan bercakap tentang kebaikan dan keburukan Nokogiri dan Kimono. 540 00:38:46,980 --> 00:38:50,380 >> Nokogiri, ia benar-benar cepat. 541 00:38:50,380 --> 00:38:51,640 Ia mudah untuk menguji. 542 00:38:51,640 --> 00:38:55,910 Anda hanya boleh meletakkan apa-apa untuk konsol, mudah untuk mengkonfigurasi. 543 00:38:55,910 --> 00:39:00,400 Anda boleh membuat keputusan apa yang anda mahu untuk mengikis dan kedai. 544 00:39:00,400 --> 00:39:02,060 Tiada had halaman. 545 00:39:02,060 --> 00:39:08,010 Saya benar-benar digunakan untuk mengikis seperti 1800 Afrika Selatan laman web sekolah 546 00:39:08,010 --> 00:39:10,870 untuk e-mel untuk magang yang saya lakukan. 547 00:39:10,870 --> 00:39:16,060 >> Jadi, itu mungkin, walaupun amalan terbaik akan berpecah skrip. 548 00:39:16,060 --> 00:39:19,310 Kerana jika ia gagal, maka anda tidak mendapat apa-apa. 549 00:39:19,310 --> 00:39:22,790 Maka jika kamu tidak seratus, mungkin 200 muka surat pada satu masa, 550 00:39:22,790 --> 00:39:27,840 maka anda mempunyai beberapa peluang sekurang-kurangnya mendapatkan itu sedikit demi sedikit, terutamanya 551 00:39:27,840 --> 00:39:30,280 jika anda mempunyai internet yang buruk. 552 00:39:30,280 --> 00:39:32,720 >> Malangnya ia hanya boleh mengikis HTML. 553 00:39:32,720 --> 00:39:35,190 Jadi jika anda mempunyai pages-- dinamik dimuatkan 554 00:39:35,190 --> 00:39:39,480 dan saya akan menunjukkan kepada anda contoh seperti Kayak dalam second-- 555 00:39:39,480 --> 00:39:42,270 Nokogiri malangnya tidak boleh mengikis itu. 556 00:39:42,270 --> 00:39:45,700 >> Tetapi Kimono juga mudah untuk digunakan. 557 00:39:45,700 --> 00:39:48,330 Seperti yang anda lihat, ia pada dasarnya titik dan klik. 558 00:39:48,330 --> 00:39:50,260 Ia boleh mengikis JavaScript. 559 00:39:50,260 --> 00:39:53,790 Malangnya, tidak maksimum berapa banyak halaman yang anda boleh mengikis. 560 00:39:53,790 --> 00:39:55,710 Kadang-kadang ia sedikit sukar untuk mengkonfigurasi. 561 00:39:55,710 --> 00:39:57,240 Ia mendapat keliru. 562 00:39:57,240 --> 00:40:00,920 Tetapi ia pasti sesuatu yang perlu dipertimbangkan 563 00:40:00,920 --> 00:40:05,930 jika anda tidak cuba untuk mempunyai mengikis dikekalkan super mantap. 564 00:40:05,930 --> 00:40:09,010 Jika anda hanya mahu untuk mendapatkan segala-galanya kira halaman dengan cepat, 565 00:40:09,010 --> 00:40:10,970 kemudian Kimono adalah benar-benar alat yang baik untuk digunakan. 566 00:40:10,970 --> 00:40:16,490 Dan seperti yang saya nyatakan sebelum ini, ada ciri maju Kimono 567 00:40:16,490 --> 00:40:19,260 yang menunjukkan anda bagaimana untuk mengakses HTML unik 568 00:40:19,260 --> 00:40:24,210 elemen, yang super berguna walaupun jika anda bekerja di Nokogiri. 569 00:40:24,210 --> 00:40:30,370 >> Jadi, jika kita pergi ke laman web Kayak, untuk Contohnya, anda boleh lihat di sana is-- 570 00:40:30,370 --> 00:40:31,750 atau mungkin anda tidak dapat melihat. 571 00:40:31,750 --> 00:40:38,910 Tetapi jika saya menunjukkan kepada anda URL untuk Kayak, ini sebenarnya hanya URL sumber itu. 572 00:40:38,910 --> 00:40:43,800 Ini adalah URL yang sebelum menjadi diubahsuai dengan apa jua JavaScript skrip 573 00:40:43,800 --> 00:40:45,350 bahawa mereka telah berlaku. 574 00:40:45,350 --> 00:40:52,420 Dan ia akan kelihatan berbeza dari memeriksa unsur. 575 00:40:52,420 --> 00:40:55,940 >> Jadi, jika anda pergi melalui dan anda perlawanan sehingga Element Memeriksa 576 00:40:55,940 --> 00:41:00,340 kod kepada kod sumber, ia adalah sebenarnya akan berbeza. 577 00:41:00,340 --> 00:41:05,640 Dan ini adalah pada dasarnya mengapa Nokogiri tidak boleh mengikis laman dinamik dimuatkan. 578 00:41:05,640 --> 00:41:08,810 Kerana Nokogiri adalah mengikis URL sumber, 579 00:41:08,810 --> 00:41:16,310 sedangkan Kimono sebenarnya mengikis apa yang anda dasarnya 580 00:41:16,310 --> 00:41:18,260 lihat di Pilih Element. 581 00:41:18,260 --> 00:41:23,880 >> Jadi, jika saya pergi melalui dan saya cuba Kimonofy Kayak, 582 00:41:23,880 --> 00:41:26,600 Saya benar-benar boleh pergi melalui dan pilih harga. 583 00:41:26,600 --> 00:41:32,360 Ia sedikit lebih keras, dan dalam kes ini, ia adalah 584 00:41:32,360 --> 00:41:36,600 benar-benar melihat harga ini berbeza daripada ini. 585 00:41:36,600 --> 00:41:41,110 Jadi sedangkan anda boleh configure-- atau jika ini tidak dinamik dimuatkan, 586 00:41:41,110 --> 00:41:43,620 anda boleh mengkonfigurasi Nokogiri untuk mendapatkan semua ini. 587 00:41:43,620 --> 00:41:48,230 >> Kerana pemformatan sedikit berbeza untuk penyenaraian ini 588 00:41:48,230 --> 00:41:51,280 kerana ia dibandingkan dengan yang lain daripada mereka, dan anda boleh lihat di sini 589 00:41:51,280 --> 00:41:54,830 ia sebenarnya hilang dan semua harga tiket dipilih. 590 00:41:54,830 --> 00:42:01,200 Mungkin saya mahu untuk memilih masa penerbangan juga. 591 00:42:01,200 --> 00:42:04,700 Dan saya boleh pergi melalui dan semacam mengkonfigurasi itu. 592 00:42:04,700 --> 00:42:06,950 Saya tidak mahu itu. 593 00:42:06,950 --> 00:42:10,200 Saya hanya mahu masa penerbangan depan. 594 00:42:10,200 --> 00:42:17,030 Dan kemudian selepas beberapa ini melalui, ia mendapat gambar. 595 00:42:17,030 --> 00:42:19,080 Jadi ini Kimono cukup bijak. 596 00:42:19,080 --> 00:42:21,900 Ia hanya tidak cukup mantap. 597 00:42:21,900 --> 00:42:26,710 >> Terdapat beberapa yang lain alternatif yang boleh anda gunakan. 598 00:42:26,710 --> 00:42:31,600 Dan saya akan menunjukkan kepada anda di sini. 599 00:42:31,600 --> 00:42:35,790 Sekiranya anda lebih selesa di Python bukannya Ruby mungkin, 600 00:42:35,790 --> 00:42:39,290 terdapat perpustakaan dipanggil Sup indah. 601 00:42:39,290 --> 00:42:40,430 Anda boleh menggunakan itu. 602 00:42:40,430 --> 00:42:42,270 Ia hampir sama dengan Nokogiri. 603 00:42:42,270 --> 00:42:44,620 Ia mempunyai beberapa lagi ciri-ciri. 604 00:42:44,620 --> 00:42:52,160 Anda boleh mencari tag HTML dan kemudian bergerak ke atas atau bergerak ke tepi. 605 00:42:52,160 --> 00:42:54,690 >> Ada PyQt. 606 00:42:54,690 --> 00:42:57,820 Ini sebenarnya boleh mengikis dinamik laman web, kerana ia adalah jenis 607 00:42:57,820 --> 00:43:02,540 adalah WebKit yang berpura-pura menjadi pelayar tanpa ada sebenarnya 608 00:43:02,540 --> 00:43:03,670 sebagai pelayar. 609 00:43:03,670 --> 00:43:07,490 Oleh itu, ia akan menunggu untuk semua JavaScript untuk memuatkan pertama, dan kemudian 610 00:43:07,490 --> 00:43:09,560 masuk dan cuba mengikis laman web ini. 611 00:43:09,560 --> 00:43:13,560 >> Jika anda mahu melekat dengan Ruby, anda boleh pergi satu tahap dari Nokogiri. 612 00:43:13,560 --> 00:43:17,650 Anda boleh menggunakan Capybara dengan pembungkus Poltergeist. 613 00:43:17,650 --> 00:43:22,910 Dan ini boleh sebenarnya asasnya melakukan perkara yang sama 614 00:43:22,910 --> 00:43:26,610 sebagai PyQt, iaitu ia adalah WebKit a. 615 00:43:26,610 --> 00:43:29,610 Ia menunggu untuk JavaScript untuk memuatkan pertama. 616 00:43:29,610 --> 00:43:33,340 Jika anda biola main dengan cukup, anda juga boleh mendapatkannya untuk klik pada sesuatu. 617 00:43:33,340 --> 00:43:42,780 >> Jadi, jika ada link yang bukan href klasik di mana 618 00:43:42,780 --> 00:43:46,350 jalan yang mudah diakses, dan ia adalah beberapa perkara JavaScript yang mengesan 619 00:43:46,350 --> 00:43:49,490 klik, anda sebenarnya boleh melakukannya. 620 00:43:49,490 --> 00:43:53,430 Perpustakaan lebih popular untuk mensimulasikan pengguna 621 00:43:53,430 --> 00:43:56,390 adalah dalam JavaScript, iaitu PhantomJS. 622 00:43:56,390 --> 00:44:01,010 Ini jelas boleh mengikis dinamik laman web kerana ini adalah pada dasarnya 623 00:44:01,010 --> 00:44:04,270 berpura-pura menjadi Chrome tanpa antara muka pengguna. 624 00:44:04,270 --> 00:44:09,970 >> Dan kemudian, sudah tentu yang paling , pilihan yang teguh tetapi perlahan, 625 00:44:09,970 --> 00:44:13,260 ialah automasi pelayar Selenium. 626 00:44:13,260 --> 00:44:15,550 Dan malangnya, anda tidak akan menjadi 627 00:44:15,550 --> 00:44:19,770 dapat melakukan ini dalam IDE CS50 anda. 628 00:44:19,770 --> 00:44:24,140 Kerana pada dasarnya apa yang ia merupakan ia but Chrome anda, 629 00:44:24,140 --> 00:44:27,090 Firefox, apa sahaja pelayar yang anda ingin gunakan, 630 00:44:27,090 --> 00:44:32,570 dan ia menjejaki mungkin tetikus anda pergerakan, apa sahaja yang anda taip, 631 00:44:32,570 --> 00:44:35,170 dan ia hanya jenis mengautomasikan proses ini. 632 00:44:35,170 --> 00:44:42,070 Oleh itu, ia telah dibangunkan sebagai satu bentuk Laman web alat ujian automasi. 633 00:44:42,070 --> 00:44:45,910 Tetapi banyak orang menggunakan Selenium untuk mengikis laman web 634 00:44:45,910 --> 00:44:49,990 jika tidak mereka mempunyai banyak kesukaran mengikis 635 00:44:49,990 --> 00:44:53,700 dengan sesetengah yang lain, alat-alat yang lebih cepat. 636 00:44:53,700 --> 00:44:57,530 >> Jadi itu sahaja yang saya ada untuk web mengikis. 637 00:44:57,530 --> 00:44:58,090 Berseronok. 638 00:44:58,090 --> 00:45:01,762 639 00:45:01,762 --> 00:45:02,680 >> PENONTON: Soalan. 640 00:45:02,680 --> 00:45:04,016 >> ROBERT KRABEK: Ya. 641 00:45:04,016 --> 00:45:12,840 >> PENONTON: Adakah terdapat mekanisme untuk hash laman web supaya anda boleh pada dasarnya 642 00:45:12,840 --> 00:45:14,207 melaluinya kemudian hari. 643 00:45:14,207 --> 00:45:15,040 ROBERT KRABEK: Ya. 644 00:45:15,040 --> 00:45:21,530 Oleh itu, kita meletakkan, dalam kita Sebagai contoh, bagi kedua-dua mereka, 645 00:45:21,530 --> 00:45:24,980 kita meletakkan seluruh laman web ke dalam doc. 646 00:45:24,980 --> 00:45:31,260 Dan supaya anda boleh sebenarnya hanya mengambil doc berubah-ubah dan menulis ke fail. 647 00:45:31,260 --> 00:45:35,490 Jadi, jika saya mahu, saya boleh menulisnya sebagai fail HTML, 648 00:45:35,490 --> 00:45:39,280 dan kemudian daripada menggunakan OpenURI dan permintaan Curl, 649 00:45:39,280 --> 00:45:43,520 kemudian saya hanya boleh membuka doc HTML dan kemudian mencari untuk itu. 650 00:45:43,520 --> 00:45:47,960 >> PENONTON: Tetapi boleh anda mengekalkan jenis pengalaman dalam talian 651 00:45:47,960 --> 00:45:48,930 semasa anda melakukan di luar talian. 652 00:45:48,930 --> 00:45:51,013 Contohnya. apabila anda berada terbang selama beberapa jam, 653 00:45:51,013 --> 00:45:54,070 Saya hendak dasarnya arkib seluruh laman web. [Didengar] 654 00:45:54,070 --> 00:45:58,780 >> ROBERT KRABEK: Ya, itu exactly-- jadi betul-betul apa ini melakukan 655 00:45:58,780 --> 00:46:03,010 adalah ia mengambil segala-galanya yang akan menjadi di URL ini. 656 00:46:03,010 --> 00:46:11,280 Jadi, jika kita berlari Curl, ia mengambil semua HTML ini, 657 00:46:11,280 --> 00:46:14,590 dan ia menyimpannya dalam doc berubah-ubah. 658 00:46:14,590 --> 00:46:17,290 Oleh itu, maka anda boleh melakukan apa anda mahu lakukan dengan doc. 659 00:46:17,290 --> 00:46:18,575 Anda boleh output ke fail. 660 00:46:18,575 --> 00:46:19,950 PENONTON: Tetapi ia tidak dikaitkan. 661 00:46:19,950 --> 00:46:20,780 Ia tidak dinamik. 662 00:46:20,780 --> 00:46:22,770 Ia bukan rekursi, bukan? 663 00:46:22,770 --> 00:46:24,016 Anda lihat apa yang saya maksudkan? 664 00:46:24,016 --> 00:46:28,359 Saya cuba untuk pada dasarnya jenis hash seluruh laman web pada cakera keras saya 665 00:46:28,359 --> 00:46:31,150 supaya saya pada dasarnya boleh melakukannya selama beberapa jam tanpa internet. 666 00:46:31,150 --> 00:46:32,025 >> ROBERT KRABEK: Betul. 667 00:46:32,025 --> 00:46:37,140 Jadi, jika saya had-- jadi di mana yang fail saya I / O? 668 00:46:37,140 --> 00:46:47,766 Jadi ini adalah fail I / O. Jadi mengatakan sebaliknya ini, saya menyeru craigslist.html ini. 669 00:46:47,766 --> 00:46:52,620 670 00:46:52,620 --> 00:46:53,940 Saya membuka bahawa sehingga. 671 00:46:53,940 --> 00:46:59,020 Saya hendak meletakkan doc ke dalamnya. 672 00:46:59,020 --> 00:47:00,470 Saya menutup fail. 673 00:47:00,470 --> 00:47:05,410 Dan kemudian hanya kerana IDE CS50 adalah pada awan, itu apa sahaja. 674 00:47:05,410 --> 00:47:07,710 Saya boleh pergi di sini. 675 00:47:07,710 --> 00:47:09,320 Saya boleh memuat turun fail. 676 00:47:09,320 --> 00:47:11,830 Dan kemudian yang akan berada di cakera keras saya. 677 00:47:11,830 --> 00:47:13,930 Jadi, anda boleh melakukannya dengan cara itu. 678 00:47:13,930 --> 00:47:18,830 Atau jika anda berada di rumah, tidak menggunakan CS50 IDE, seperti Sublime atau sesuatu, 679 00:47:18,830 --> 00:47:21,900 ini adalah lebih mudah, kerana ini semua di dalam negara, 680 00:47:21,900 --> 00:47:23,020 tidak terikat kepada internet. 681 00:47:23,020 --> 00:47:24,720 >> PENONTON: saya lihat. 682 00:47:24,720 --> 00:47:26,580 Ini adalah untuk satu masalah. 683 00:47:26,580 --> 00:47:30,410 Bolehkah anda melakukannya secara berulang supaya anda pergi beberapa lapisan jenis mendalam perkara? 684 00:47:30,410 --> 00:47:33,801 >> ROBERT KRABEK: saya boleh memuat turun folder juga, jika itu yang anda meminta. 685 00:47:33,801 --> 00:47:34,426 PENONTON: Ya. 686 00:47:34,426 --> 00:47:39,890 687 00:47:39,890 --> 00:47:41,440 >> ROBERT KRABEK: Cool. 688 00:47:41,440 --> 00:47:43,182