1 00:00:00,000 --> 00:00:03,234 >> [音楽再生] 2 00:00:03,234 --> 00:00:05,275 3 00:00:05,275 --> 00:00:06,400 ロバートKRABEK:こんにちは、みんな。 4 00:00:06,400 --> 00:00:09,980 私の名前はロバートKrabekで、 私は君たちを教えるされます 5 00:00:09,980 --> 00:00:15,470 でウェブをこすりする方法 Rubyのライブラリです鋸山、 6 00:00:15,470 --> 00:00:17,566 Chromeの拡張機能であり、着物、。 7 00:00:17,566 --> 00:00:20,940 8 00:00:20,940 --> 00:00:25,010 >> したがって、最初あります そのあなたのカップルの事 9 00:00:25,010 --> 00:00:28,790 多分あなたがしてきた場合に行うことができます これまでのすべてのpsetをやっ 10 00:00:28,790 --> 00:00:31,170 そして、ワークスペースがあります 少しの完全取得。 11 00:00:31,170 --> 00:00:37,060 私たちは、実際には行くことができ、 あなたのための新しいワークスペースを作成します 12 00:00:37,060 --> 00:00:41,220 ただで新しいプロジェクトを行います。 13 00:00:41,220 --> 00:00:46,160 ですから、継続したいならば CS50のテンプレートIDでの作業 14 00:00:46,160 --> 00:00:49,080 あなたが現在持っていること、 お気軽に、そしてあなただけのことができます 15 00:00:49,080 --> 00:00:54,700 CFLAGSと鋸山をインストール equals--逸品鋸山をインストールします。 16 00:00:54,700 --> 00:00:56,930 しかし、そうでなければ、私はあなたを紹介 新しいものをセットアップする方法について説明します。 17 00:00:56,930 --> 00:01:01,210 そしてこれは、本質的に より多くの補助輪を落とします。 18 00:01:01,210 --> 00:01:07,120 あなたがであるかのように、あなたがコーディングしています ただ崇高か何かでのコーディング。 19 00:01:07,120 --> 00:01:12,365 我々はそれを上にシフトするのであれば。 20 00:01:12,365 --> 00:01:14,930 21 00:01:14,930 --> 00:01:18,690 >> だから、これはあなたの現在のCS 50のIDであると言います。 22 00:01:18,690 --> 00:01:21,490 あなたはちょうどここCloud9に行くことができます。 23 00:01:21,490 --> 00:01:22,725 あなたのダッシュボードに行くことができます。 24 00:01:22,725 --> 00:01:26,720 25 00:01:26,720 --> 00:01:29,950 これは、[ワークスペース]タブを表示する必要があります。 26 00:01:29,950 --> 00:01:32,980 そして、あなただけクリックすることができます ここでは、新しいワークスペースを作成します。 27 00:01:32,980 --> 00:01:37,600 あなたの新しいワークスペースに名前を付け、 多分テスト、または擦過。 28 00:01:37,600 --> 00:01:42,700 そしてここで、このカスタムタブをクリックし、 代わりにCS50テンプレート]タブの。 29 00:01:42,700 --> 00:01:45,155 そして、あなただけ行くことができます そして、新しいワークスペースを作成します。 30 00:01:45,155 --> 00:01:48,280 >> 私はすでにここでワークスペースを作成しました。 31 00:01:48,280 --> 00:01:50,640 だから我々はこれで作業になります。 32 00:01:50,640 --> 00:01:55,380 そして、あなたは新しいを作成した場合 [カスタム]タブでそのように、ワークスペース、 33 00:01:55,380 --> 00:02:04,560 あなただけの逸品をインストール入力することができます ここに行くのではありません鋸山、。 34 00:02:04,560 --> 00:02:06,230 [OK]を、それは少し凍ったのです。 35 00:02:06,230 --> 00:02:08,979 しかし、あなたは鋸山をインストール宝石を入力することができます。 36 00:02:08,979 --> 00:02:15,970 そして、それはすべてのことでなければなりません インストールにあります。 37 00:02:15,970 --> 00:02:20,590 >> 私が言ったように、前にあなたはまだしている場合 あなたのCS50のテンプレートIDでの作業、 38 00:02:20,590 --> 00:02:30,270 あなただけのCFLAGSを入力する必要があります 鋸山の宝石インストール等しいです。 39 00:02:30,270 --> 00:02:33,130 そして、私はすでにインストールしています ここで私はそれを行うことはありません。 40 00:02:33,130 --> 00:02:38,500 しかし、これらについては、以下の 沿って、そうして自由に感じます。 41 00:02:38,500 --> 00:02:46,000 >> つまり、あなたの鋸山を持ってたら ワークスペースまたはライブラリがインストール、 42 00:02:46,000 --> 00:02:49,500 私はあなたに少しを与えるつもりです Rubyの構文でクラッシュコース 43 00:02:49,500 --> 00:02:53,380 鋸山はRubyのライブラリであるため。 44 00:02:53,380 --> 00:03:03,710 だから、いくつかの基本的なを知っている必要があります 鋸山で作業するためのRubyの構文。 45 00:03:03,710 --> 00:03:08,750 だから、いくつかの基本的な違い あなたが慣れているものとから 46 00:03:08,750 --> 00:03:13,370 おそらく、あなたが作業してきた場合 これまでちょうどCとPHPで、 47 00:03:13,370 --> 00:03:16,010 あなたはなしタイプの変数を宣言します。 48 00:03:16,010 --> 00:03:19,720 あなたはセミコロンを使用しないでください、 これは救済の一種です。 49 00:03:19,720 --> 00:03:25,480 今周りに括弧がありません またはwhileループ、例えば。 50 00:03:25,480 --> 00:03:29,460 あなただけのコードのブロックを持っており、 あなたはその終わりに終止符を打ちます。 51 00:03:29,460 --> 00:03:32,380 何のプラスプラスはありません またはマイナスのマイナス、ちょうどそう 52 00:03:32,380 --> 00:03:36,180 知っているときのために あなたは、ループのためにやっています、 53 00:03:36,180 --> 00:03:38,620 ただプラスイコールとマイナスに等しいです。 54 00:03:38,620 --> 00:03:43,310 その代わりにハッシュには、 あなたは、その後、必要と使用します 55 00:03:43,310 --> 00:03:47,755 しようとしてどのようなライブラリー あなたのプログラムにロードします。 56 00:03:47,755 --> 00:03:51,610 57 00:03:51,610 --> 00:03:53,430 >> Rubyはコンパイル言語ではありません。 58 00:03:53,430 --> 00:03:55,550 だから、他の救済です。 59 00:03:55,550 --> 00:03:59,350 これは、PHPの場所に、より似ています それはインタプリタ言語です。 60 00:03:59,350 --> 00:04:03,570 あなたは、任意のRubyスクリプトを実行できます Rubyは、その後で次のように記述 61 00:04:03,570 --> 00:04:07,380 スクリプトまたはプログラムの名前で。 62 00:04:07,380 --> 00:04:13,000 それはRubyプログラムだことを示すために、 あなただけの.RB代わりの.Cで終了します。 63 00:04:13,000 --> 00:04:17,440 そして、変数があります Rubyでサイズの配列、 64 00:04:17,440 --> 00:04:23,200 これはあなたがいるときに超便利です こすると、おそらく追加したいです 65 00:04:23,200 --> 00:04:26,090 アレイに掻き取ってきたデータ。 66 00:04:26,090 --> 00:04:31,960 あなたは、新しい配列ををmallocする必要はありませんし、 新しい配列に古い配列をコピーします。 67 00:04:31,960 --> 00:04:36,150 あなただけで追加できます 2矢印記号。 68 00:04:36,150 --> 00:04:39,820 そして、何の文字があり、存在しません ただ一文字列。 69 00:04:39,820 --> 00:04:44,760 だから、少し簡単にする必要があります。 70 00:04:44,760 --> 00:04:50,130 >> だから、私たちはあなたにいくつかを与えるだろう いくつかの基本的なRubyの構文の例。 71 00:04:50,130 --> 00:04:57,100 だからここにあなたの代わりにそれを見ることができます スラッシュスラッシュは、Rubyでコメントします 72 00:04:57,100 --> 00:04:58,740 あなただけのシャープ記号を使用します。 73 00:04:58,740 --> 00:05:04,990 そして、変数宣言、あなた ちょうど変数等号を入力 74 00:05:04,990 --> 00:05:07,971 あなたは変数になりたいものは何でも。 75 00:05:07,971 --> 00:05:09,220 彼らは文字列でできます。 76 00:05:09,220 --> 00:05:14,120 あなたは、配列を有することができます あなたが値を取り込みます。 77 00:05:14,120 --> 00:05:17,240 プットとプリントが似ています。 78 00:05:17,240 --> 00:05:20,110 私たちの目的のために、 唯一の違いは、実際にあります 79 00:05:20,110 --> 00:05:25,500 それがために立って、置きます プットは、単に新しい行を置きます 80 00:05:25,500 --> 00:05:27,440 あなたが印刷しているものは何でもで文字。 81 00:05:27,440 --> 00:05:30,980 >> だから私たちは小さなを与える場合 ここでデモ、 82 00:05:30,980 --> 00:05:41,800 我々はこのwith--を実行することができます 新しいターミナルを開きます。 83 00:05:41,800 --> 00:05:46,020 あなたはこれらのすべてを見ることができます 私の端末にあるファイル。 84 00:05:46,020 --> 00:05:50,960 そして、私はちょうど実行した場合 ルビー、ルビーintro.rb、それ 85 00:05:50,960 --> 00:05:53,530 こんにちは5を出します メイザー、クインシー、キャリア。 86 00:05:53,530 --> 00:05:54,410 アダムス。 87 00:05:54,410 --> 00:05:59,295 だから、全部です 宣言アレイに。 88 00:05:59,295 --> 00:06:01,670 対象者:ロバート、あなたが行うことができます あなたのフォントを少し大きめ? 89 00:06:01,670 --> 00:06:02,461 ロバートKRABEK:はい。 90 00:06:02,461 --> 00:06:05,370 91 00:06:05,370 --> 00:06:12,280 あなたがすることはできませんので、私は中にズームすることができます どうやらターミナルのフォントにズームイン。 92 00:06:12,280 --> 00:06:18,790 93 00:06:18,790 --> 00:06:24,630 >> だから、あなたが印刷方法です あなたの端末に変数。 94 00:06:24,630 --> 00:06:28,820 使用することもできます 文字列の中の変数。 95 00:06:28,820 --> 00:06:33,720 だから、最近のPHPで、 あなたが学んだことがあります 96 00:06:33,720 --> 00:06:37,340 文字列補間があること。 97 00:06:37,340 --> 00:06:43,830 ですから、ここで見てみると、私の場合 三つの変数、名前、ライブラリを宣言し、 98 00:06:43,830 --> 00:06:49,700 言語、と私プット、私 文字列を書き込み、こんにちは私の名前はあります。 99 00:06:49,700 --> 00:06:54,190 そして、代わりにPHPの 文字列補間のバージョン 100 00:06:54,190 --> 00:06:58,960 これはもう少し、このようになり、 あなたはその後、ポンド記号を持っており、 101 00:06:58,960 --> 00:07:01,220 中かっこ、その後、 変数の名前。 102 00:07:01,220 --> 00:07:07,350 そして、それは、たとえば、あなたが印刷したい方法です どのような変数名です。 103 00:07:07,350 --> 00:07:10,140 >> そして、あなたがすることもできます 文字列を連結します。 104 00:07:10,140 --> 00:07:12,890 Rubyは、それがスーパーになります プラス記号で簡単。 105 00:07:12,890 --> 00:07:16,110 あなたはただ1つの文字列を持っています 左側のプラス変数に 106 00:07:16,110 --> 00:07:18,860 または、別の文字列を加えた文字列。 107 00:07:18,860 --> 00:07:23,500 私はこれをプリントアウトした場合、それは必要がありますので、 ちょうど私の名前はロバートです、こんにちは言います。 108 00:07:23,500 --> 00:07:27,340 私は、あなたがRubyで鋸山教えします。 109 00:07:27,340 --> 00:07:35,370 >> そして、ちょうどそのことを確認してみましょう 確かにcase--ルビーイントロです。 110 00:07:35,370 --> 00:07:36,480 こんにちは、私の名前はロバートです。 111 00:07:36,480 --> 00:07:40,160 私は、あなたがRubyで鋸山教えします。 112 00:07:40,160 --> 00:07:45,600 >> elseステートメント場合は、上に移動すると、 それは少し違います 113 00:07:45,600 --> 00:07:49,800 あなたが使用するかもしれないものから あなたはCで働いてきた場合 114 00:07:49,800 --> 00:07:53,200 あなたは括弧を必要としません。 115 00:07:53,200 --> 00:07:55,220 あなたは、中括弧を必要としません。 116 00:07:55,220 --> 00:08:00,170 そして、代わりにあれば、他の、 それは、連結ELSIFです。 117 00:08:00,170 --> 00:08:07,260 ここでだから、私はxは宣言した場合 私たちが見ることができるようにここで、xはまだ5です。 118 00:08:07,260 --> 00:08:11,100 xが3未満であれば、それは小さなあげますよ。 119 00:08:11,100 --> 00:08:14,030 それは、7未満の中、大他の人の場合。 120 00:08:14,030 --> 00:08:17,340 だから5は、メディア番号です。 121 00:08:17,340 --> 00:08:22,270 そして、私は最後でコードブロックを終了します。 122 00:08:22,270 --> 00:08:24,920 >> ここに私のforループです。 123 00:08:24,920 --> 00:08:28,240 そして、この構文でもあります わずかに違う。 124 00:08:28,240 --> 00:08:33,500 ただ、基本的に5に0 0〜5の配列を宣言されています。 125 00:08:33,500 --> 00:08:36,120 だから、配列内の5つのスロットがあります。 126 00:08:36,120 --> 00:08:40,500 そして、その中の各スロットについて アレイは、私は私をインクリメントされます。 127 00:08:40,500 --> 00:08:46,080 だから、これは4に5から0、または0を印刷する必要があります。 128 00:08:46,080 --> 00:08:49,630 そして、これはメディアを印刷する必要があります。 129 00:08:49,630 --> 00:08:51,370 >> そして、私はちょうどを通して切り開くでしょう。 130 00:08:51,370 --> 00:08:54,466 君たちはアクセスする必要があります 後でこのコードへ。 131 00:08:54,466 --> 00:08:55,965 だから君たちはこの自分自身を実行することができます。 132 00:08:55,965 --> 00:09:02,090 133 00:09:02,090 --> 00:09:06,620 >> だから、これはあなたの基本的なwhileループです。 134 00:09:06,620 --> 00:09:12,230 これは単にJを印刷され、 私たちは5を打つまで、1ずつ増加。 135 00:09:12,230 --> 00:09:18,320 >> スーパークイックRubyのクラッシュコース 関数の記述方法。 136 00:09:18,320 --> 00:09:24,460 代わりに、言う、int型の階乗 数は、私たちはデフ持っています。 137 00:09:24,460 --> 00:09:28,450 そして、基本的にあなたがいます ここで関数を定義します。 138 00:09:28,450 --> 00:09:30,600 これは、になるだろう 関数の名前、 139 00:09:30,600 --> 00:09:34,280 これはあなたのすべての変数であります 関数に渡したいです。 140 00:09:34,280 --> 00:09:36,760 ステートメント内の場合は、することができます。 141 00:09:36,760 --> 00:09:38,030 あなたは返すことができます。 142 00:09:38,030 --> 00:09:42,620 この場合、私たちはしています 再帰を定義します 143 00:09:42,620 --> 00:09:45,000 階乗関数を実装しました。 144 00:09:45,000 --> 00:09:48,660 だから我々は単に関数を呼び出します このようなルビーインチ 145 00:09:48,660 --> 00:09:54,700 >> 私は、私はこれを定義しているので、もし 3に渡し、階乗を呼び出すことができ、 146 00:09:54,700 --> 00:09:59,700 そしてその後、図3は、多数の変数になります 私は、関数内で使用することができます。 147 00:09:59,700 --> 00:10:08,010 そして、このto_sはただ回しています 文字列に階乗の値を返します。 148 00:10:08,010 --> 00:10:10,760 そうでない場合は、スローされます エラー私は、ああ言って 149 00:10:10,760 --> 00:10:13,230 string--を印刷することはできません あなたは覚えているので、 150 00:10:13,230 --> 00:10:18,230 このためstring--入れて置きます 階乗は数が返されました。 151 00:10:18,230 --> 00:10:21,850 だから我々はそれを変換することができます そのようなのような文字列へ。 152 00:10:21,850 --> 00:10:27,856 そして逆に、あなたはまた、変換することができます to_iで整数に文字列。 153 00:10:27,856 --> 00:10:32,650 >> だから、すべてが超シンプルな作り、 私はこれをコメントアウトした場合、保存 154 00:10:32,650 --> 00:10:36,250 そして、階乗関数を実行します。 155 00:10:36,250 --> 00:10:39,850 私たちは見ることができるはずです 3の階乗は6です。 156 00:10:39,850 --> 00:10:42,790 そして、それは確かに真実です。 157 00:10:42,790 --> 00:10:46,160 >> だから、Rubyであなたのクラッシュコースです。 158 00:10:46,160 --> 00:10:53,550 そして今、あなたはルビーを知っていることを、我々は上に行くことができます 基本鋸山まで設定削れ。 159 00:10:53,550 --> 00:10:58,190 基本的にあなたがしなければならないすべては、 Rubyで、ライブラリを必要とします。 160 00:10:58,190 --> 00:11:04,390 そして、私たちの目的のために、私たちは使用しています ライブラリOpenURIなど鋸山。 161 00:11:04,390 --> 00:11:07,870 そして、あなたがdo--、それはよ あなたthis--の構文を与えます 162 00:11:07,870 --> 00:11:16,010 あなたはと同じように多くのURLを開いています CのURLの略でcURLの要求、。 163 00:11:16,010 --> 00:11:20,330 >> だから、のURLを取ります 問題のウェブサイト。 164 00:11:20,330 --> 00:11:22,030 あなたは変数に格納します。 165 00:11:22,030 --> 00:11:27,400 そして、あなたはそれを検索することができます 使用したユニークなHTMLタグのための変数 166 00:11:27,400 --> 00:11:30,590 .cssのコマンド。 167 00:11:30,590 --> 00:11:34,360 そして出力することができます あなたが好きな場所にコンテンツ。 168 00:11:34,360 --> 00:11:35,720 あなたは、データベース内で開始することができます。 169 00:11:35,720 --> 00:11:42,040 あなたができるファイルで出力しますか、 だけでも、それを画面に出力します。 170 00:11:42,040 --> 00:11:47,290 >> だから我々はあなたに基本的なスクレーパーを紹介します。 171 00:11:47,290 --> 00:11:52,570 だからここまで、あなたは私たちが見ることができます 鋸山を必要とする、オープン-URIが必要です。 172 00:11:52,570 --> 00:11:57,150 あなたの基本的なセットアップ、レッツ ドキュメントまたはドキュメントを呼び出し、 173 00:11:57,150 --> 00:12:07,780 鋸山に等しい::オープンHTML、 OpenURIより提供されているコマンド 174 00:12:07,780 --> 00:12:08,920 図書館。 175 00:12:08,920 --> 00:12:14,000 そして、我々は、それらのために、検索されます クワッドに住んでいる可能性があります、 176 00:12:14,000 --> 00:12:21,270 ボストンにリストされているバイク ボストンCraigslistの自転車部に 177 00:12:21,270 --> 00:12:22,020 サイト。 178 00:12:22,020 --> 00:12:26,460 >> だから、あなたが慣れていない場合 cURLので、私はちょうどよ 179 00:12:26,460 --> 00:12:28,930 実際に素早くカールがどうなるかを示しています。 180 00:12:28,930 --> 00:12:38,350 私は、URLからのすべてを取得したい場合 Craigslistのサイト、私はカールと入力した場合、 181 00:12:38,350 --> 00:12:44,950 それだけで、URLのすべてをダンプします Craigslistの自転車サイトから 182 00:12:44,950 --> 00:12:46,720 私の端末に。 183 00:12:46,720 --> 00:12:49,130 それは特にありません 便利な私にはないので、 184 00:12:49,130 --> 00:12:53,330 手動で通過したいです 私が探しているものを見つけます。 185 00:12:53,330 --> 00:13:01,590 しかし、単にすることができますので、 私が実際だことを確認 186 00:13:01,590 --> 00:13:13,966 あなたが見た場合、右のコードを使用して bikes--でCraigslistのためのURLに 187 00:13:13,966 --> 00:13:17,460 何らかの理由でそれが見つからないです。 188 00:13:17,460 --> 00:13:20,340 このページを見てみると あなたは、URLを見て、 189 00:13:20,340 --> 00:13:23,970 これは、同一でなければなりません 私はちょうど送信cURLの要求。 190 00:13:23,970 --> 00:13:27,700 そして実際、それはされているものです doc変数に格納されています。 191 00:13:27,700 --> 00:13:36,540 >> ですから、私たちのコードに戻ったときに、我々 このドキュメント変数を操作することができます 192 00:13:36,540 --> 00:13:40,660 .cssファイルを使用します。 193 00:13:40,660 --> 00:13:49,240 だから私はすべてを取得したいと言います span.txtのタグ、 194 00:13:49,240 --> 00:13:51,740 そして、そのタグ内のすべてのAタグ。 195 00:13:51,740 --> 00:13:56,150 そして、なぜ私たちがしたいことがあります 私はあなたが泣く聞く、これを行いますか? 196 00:13:56,150 --> 00:14:02,920 >> 我々は要素を検査した場合、それはあなたができます URLが構成されている方法の内訳。 197 00:14:02,920 --> 00:14:06,200 私が通って下にスクロールした場合 ここで、あなたが見ることができます 198 00:14:06,200 --> 00:14:08,770 何これらのそれぞれ異なります 要素を表します。 199 00:14:08,770 --> 00:14:13,410 だから多分私はアクセスしたいです この特定の要素。 200 00:14:13,410 --> 00:14:16,820 だから私は、Chromeの開発者を使用しています 要素を点検するためのツール。 201 00:14:16,820 --> 00:14:22,970 私はこのことをここに見ることができますダウン スパン内のタグです 202 00:14:22,970 --> 00:14:26,230 TXTのクラスにタグ付け。 203 00:14:26,230 --> 00:14:29,610 >> だから、これは私たちに到達します 最初の操作します 204 00:14:29,610 --> 00:14:37,330 そのタグであるdoc.cssスパンは、あります 私はこのすべてのURL内を探しています。 205 00:14:37,330 --> 00:14:43,650 そして、.txtのは、CSSのような多くを操作し あなただけのCSSを書いているときに行います 206 00:14:43,650 --> 00:14:49,630 HTMLファイル内により クラスを指定します。 207 00:14:49,630 --> 00:14:57,980 したがって、この特定のオペレータの意志 TXTのクラスでspanタグを指定します。 208 00:14:57,980 --> 00:15:02,800 そして、私はスペースを残している場合、 これは、そのタグ内に移動します 209 00:15:02,800 --> 00:15:05,170 そしてその内のタグを見つけます。 210 00:15:05,170 --> 00:15:10,750 >> だから私はちょうどこれを置く場合 ターミナル、私がすべき 211 00:15:10,750 --> 00:15:21,630 基本的にすべてのものを見ることができます それは、クラスのtxtのこのスパンの範囲内です。 212 00:15:21,630 --> 00:15:22,890 だから我々はそれをやってみますよ。 213 00:15:22,890 --> 00:15:25,870 214 00:15:25,870 --> 00:15:27,756 ルビーCraigslistのスクレーパー。 215 00:15:27,756 --> 00:15:31,850 216 00:15:31,850 --> 00:15:37,250 そして実際、それは私たちに、これらのすべてを提供します その様々なリストのタグ 217 00:15:37,250 --> 00:15:40,400 Craigslistのページにあります。 218 00:15:40,400 --> 00:15:45,670 >> 我々は戻ってあれば、我々はこれを変えることができます もう少し便利なものに。 219 00:15:45,670 --> 00:15:51,050 多分私達はちょうど、リンクをしたいです。 220 00:15:51,050 --> 00:15:58,790 このタグ内に、私はまただろうから パスのハイパーリンクを持っています 221 00:15:58,790 --> 00:16:00,590 このページはに行くこと。 222 00:16:00,590 --> 00:16:09,100 ですから、ここにこのコードを見れば、 私がやることは、代わりの.cssであります 223 00:16:09,100 --> 00:16:12,380 私はat_cssを行くことができます。 224 00:16:12,380 --> 00:16:16,820 そして、これは単に最初を取得します それらのもののすべての要素。 225 00:16:16,820 --> 00:16:20,890 だから私はそれを行うにした場合 コー​​ド私は以前に実証され、 226 00:16:20,890 --> 00:16:23,800 代わりにすべて返します このうち、それだけだろう 227 00:16:23,800 --> 00:16:26,850 それらの最初のものを返します。 228 00:16:26,850 --> 00:16:31,310 だから、at_cssオペレータがどのように動作するかです。 229 00:16:31,310 --> 00:16:39,460 >> だから我々は、保存したいです 最初のタグのパスがすべて。 230 00:16:39,460 --> 00:16:47,430 そして、私たちを与えるためA-- だから我々はまだの.cssを使用するつもりです。 231 00:16:47,430 --> 00:16:53,830 しかし、これは与えるために起こっているので、 私たちバックタグの配列全体、 232 00:16:53,830 --> 00:16:55,710 我々は、アクセスしようとしています 最初の要素。 233 00:16:55,710 --> 00:17:01,700 だから、これは、あなたができる別の方法です よろしければ、任意の特定の要素にアクセス 234 00:17:01,700 --> 00:17:04,810 素子のアレイを有しています それが返され、 235 00:17:04,810 --> 00:17:11,930 あなたは何を扱うことができますので、その 基本的に、配列としてリターンを.CSS。 236 00:17:11,930 --> 00:17:16,880 そして、我々は、アクセスしようとしています このハイパーテキストの参照属性。 237 00:17:16,880 --> 00:17:24,810 >> だから、見てみると、あれば あなたは、ここで本当に近くに見えました 238 00:17:24,810 --> 00:17:28,270 ただ、基本的にあなたの場合 URLバーを見て、 239 00:17:28,270 --> 00:17:33,880 これはパスであること あなたはこすることになるだろう。 240 00:17:33,880 --> 00:17:41,565 だから、私たちは再びこれを実行する場合、 そして我々はそれを保存していることを確認します。 241 00:17:41,565 --> 00:17:47,040 242 00:17:47,040 --> 00:17:48,300 あなたは自宅でチェックすることができます。 243 00:17:48,300 --> 00:17:51,430 これは実際には、このリンクをアップ一致します。 244 00:17:51,430 --> 00:17:55,950 >> では、なぜ我々はこれを使用することをお勧めしますか? 245 00:17:55,950 --> 00:17:57,870 あなたがこすりしたい場合 ページとそれが持っています 246 00:17:57,870 --> 00:18:00,270 以下のようなリンクのページ Craigslistのは、行います 247 00:18:00,270 --> 00:18:03,210 次に行きたいかもしれません これらのリンクのそれぞれに 248 00:18:03,210 --> 00:18:05,120 して、こすり その内容、その 249 00:18:05,120 --> 00:18:08,520 私たちがやろうとしている正確に何です。 250 00:18:08,520 --> 00:18:11,660 >> だから、としてパスを持っていたら、 変数、もはや私は本当に 251 00:18:11,660 --> 00:18:13,200 それをプリントアウトを気に。 252 00:18:13,200 --> 00:18:15,420 私は、変数として保存する必要があります。 253 00:18:15,420 --> 00:18:20,980 そして、私は別のものをアクセスすることができます 私はアクセスするのと同じ方法でページ 254 00:18:20,980 --> 00:18:22,260 最初の場所でドキュメント。 255 00:18:22,260 --> 00:18:25,920 URLを除き、我々はつもりです 文字列の補間を使用します 256 00:18:25,920 --> 00:18:29,180 私はで記述されたように ルビー以前に追加します 257 00:18:29,180 --> 00:18:32,010 ルートの最後にパス。 258 00:18:32,010 --> 00:18:38,970 >> それでは、これを行うに起こっていることです これは、パスを置くために起こっています 259 00:18:38,970 --> 00:18:42,360 私は以前に掻き取っていること して、それを回します 260 00:18:42,360 --> 00:18:49,580 新しい項目に、あなたがしたいものは何でも 例えば、it-- first_listingを呼び出します。 261 00:18:49,580 --> 00:18:52,900 しかし、私は残すつもりです 今の項目のこと、 262 00:18:52,900 --> 00:18:55,420 それは私がここに使用しているものですので。 263 00:18:55,420 --> 00:19:02,900 >> だから私は説明を取得したいと言います Craigslistの中の最初の投稿の。 264 00:19:02,900 --> 00:19:04,740 だから私はここでダウンして行くだろう。 265 00:19:04,740 --> 00:19:10,660 私は点検の要素をクリックしてくださいだろう 再び、これは、説明されるためです。 266 00:19:10,660 --> 00:19:14,350 私はここでダウンして行くと参照してくださいね 私が見つけることができればどのように私はかもしれません 267 00:19:14,350 --> 00:19:16,530 このユニークなタグを検索することができます。 268 00:19:16,530 --> 00:19:19,530 この場合には、それが持っています 私たちをリードID、 269 00:19:19,530 --> 00:19:26,810 検索する私たちの次の道へ ハッシュタグであるタグ、。 270 00:19:26,810 --> 00:19:30,670 >> だからクラスについては、次のことができます ドット演算子を使用します。 271 00:19:30,670 --> 00:19:38,610 だから、.TXTはTXTのクラスを指定して、 ハッシュに対し、IDを指定します。 272 00:19:38,610 --> 00:19:43,720 したがって、この場合には、タグは、 セクション、およびIDがpostingbodyです。 273 00:19:43,720 --> 00:19:47,780 >> だから、これは行くと見つけました first--私たちがしているので、 274 00:19:47,780 --> 00:19:51,200 これが行くat_css--使用し、 最初の要素を見つけること 275 00:19:51,200 --> 00:19:57,180 セクションのタグを思い付きます そして、postingbodyのID。 276 00:19:57,180 --> 00:20:02,636 そして、あなたはテキスト要素にアクセスすることができます その項目の.textセクションに戻りました。 277 00:20:02,636 --> 00:20:06,230 そして、我々は保存することができます 説明です。 278 00:20:06,230 --> 00:20:09,370 >> だから今我々が持っていること 変数の説明、 279 00:20:09,370 --> 00:20:14,850 私たちは、たとえば、行うことができるかもしれません ファイルI / O。だからRubyでのI / Oファイル 280 00:20:14,850 --> 00:20:21,310 I / Oをファイルに非常に似ています C言語で私たちは、ファイルを開く場所。 281 00:20:21,310 --> 00:20:23,260 我々はそれに書き込む可能性があります。 282 00:20:23,260 --> 00:20:25,060 そして、我々はそのファイルを閉じます。 283 00:20:25,060 --> 00:20:29,660 >> そこでここでは、我々だけで命名しています ファイル、いくつかの任意の変数。 284 00:20:29,660 --> 00:20:33,120 我々はまた、ちょうどここにこれを入れている可能性があります。 285 00:20:33,120 --> 00:20:39,630 私たちは保存している変数を持っています File.openと同じように開いているファイル。 286 00:20:39,630 --> 00:20:46,370 そして、我々は、このファイルに書いています 私たちは、Wオペレータで開きます。 287 00:20:46,370 --> 00:20:54,280 そして、我々はに文字列を入れて .puts演算子を使用してファイル。 288 00:20:54,280 --> 00:20:58,310 そして、我々は、我々の変数を置きます その内のファイルに書き込みたいです。 289 00:20:58,310 --> 00:21:00,200 そして、我々は、単にファイルを閉じます。 290 00:21:00,200 --> 00:21:04,000 >> だから我々は先に行くと、これを実行する場合、 これは、文書を作成する必要があります 291 00:21:04,000 --> 00:21:10,840 description.txtとする意志 その中にこの説明を持っています。 292 00:21:10,840 --> 00:21:14,015 もしそうであればノーit--を実行します。 293 00:21:14,015 --> 00:21:17,520 294 00:21:17,520 --> 00:21:23,330 これは、テキストフ​​ァイルを作成しています うまくいけば、同じこと。 295 00:21:23,330 --> 00:21:25,850 296 00:21:25,850 --> 00:21:33,290 だから新しい投稿があったかもしれません 私が話をしてきた一方で、それは来ています。 297 00:21:33,290 --> 00:21:36,580 あったように、実際にそれが見えます。 298 00:21:36,580 --> 00:21:43,380 だから我々は、この古典的な自転車に行けば、 一致するように思われる1966年から1962年、。 299 00:21:43,380 --> 00:21:45,620 そして、そこに行きます。 300 00:21:45,620 --> 00:21:51,250 >> だから、最も基本的なのです スクレイピングの機能。 301 00:21:51,250 --> 00:21:57,510 私たちの代わりに持つことができます ただ、このファイルへの書き込み、 302 00:21:57,510 --> 00:21:59,930 我々は配列に物事を追加することができます。 303 00:21:59,930 --> 00:22:03,770 だから私は3つの配列を宣言した場合、 タイトル、価格、説明。 304 00:22:03,770 --> 00:22:06,310 305 00:22:06,310 --> 00:22:13,790 そして、我々は今、ドキュメントのアイテム上で動作しています。 306 00:22:13,790 --> 00:22:16,940 我々は通過して行くことができます span.txtのすべてを見つけます。 307 00:22:16,940 --> 00:22:21,710 これは配列を返し、覚えています それが見つかったすべての項目の。 308 00:22:21,710 --> 00:22:27,300 そしてRubyで、あなただけ使用することができます すべての項目を反復処理します.each 309 00:22:27,300 --> 00:22:28,410 配列の。 310 00:22:28,410 --> 00:22:31,330 そして、各項目について、 私はちょうどそれを呼び出すつもりです 311 00:22:31,330 --> 00:22:34,620 、それはだからリンク 基本的にそれが何でありますか。 312 00:22:34,620 --> 00:22:46,830 >> だから私は、各link.cssドットa.hdrlnkを置く場合、 これは実際にリンクに起こっています 313 00:22:46,830 --> 00:22:58,280 別のそのリンク内で発見 HTML要素と対応するクラス。 314 00:22:58,280 --> 00:23:04,990 だから我々は何を覚えていれば これは、span.txtました、 315 00:23:04,990 --> 00:23:13,160 あなたは私がちょうど戻って手放すsee-できます span.txt内の実quick-- 316 00:23:13,160 --> 00:23:17,490 我々は、他のクラスがたくさんあり​​ます。 317 00:23:17,490 --> 00:23:27,180 だからspan.txt内側に、私たちは見ています クラスhdrlnkとタグ。 318 00:23:27,180 --> 00:23:29,890 だから、私はちょうどそれを見つけてみましょう 実際に素早く君たちのために。 319 00:23:29,890 --> 00:23:37,390 320 00:23:37,390 --> 00:23:42,850 >> ですから、ここで見ることができ、これはタグであります それは、クラスのtxtのスパン内です 321 00:23:42,850 --> 00:23:44,920 それは、クラスhdrlnkを持っています。 322 00:23:44,920 --> 00:23:47,610 そして、それは確かに何 我々が取得しようとしています。 323 00:23:47,610 --> 00:23:54,680 >> だから我々は今、すべてを保存しようとしています タイトルの中にあるもののリンク。 324 00:23:54,680 --> 00:23:59,545 そして、我々は、印刷しようとしています これらのリンクの各アウト。 325 00:23:59,545 --> 00:24:00,360 いいえ、申し訳ありません。 326 00:24:00,360 --> 00:24:04,530 私たちは、プリントアウトするつもりです それらのそれぞれの価格。 327 00:24:04,530 --> 00:24:09,350 それでは、実際にこれを実行してみましょう 迅速かつそれが何を参照してください。 328 00:24:09,350 --> 00:24:14,680 329 00:24:14,680 --> 00:24:17,720 >> だから、これはただ、基本的に行ってきました 各リンクを介して、 330 00:24:17,720 --> 00:24:27,310 今度は、問題のタグにアクセスし、 して、価格を引き抜きます。 331 00:24:27,310 --> 00:24:33,910 そして、それが原因後のことでした あなたはタイトルにすべてを持っています、 332 00:24:33,910 --> 00:24:37,260 私たちはそこにタイトルを保存されてきました。 333 00:24:37,260 --> 00:24:40,180 私達はちょうど、リンクを保存されてきました 配列のタイトル内で。 334 00:24:40,180 --> 00:24:47,720 そして、このループの動作では、 どこ代わりにa.hdrlnkに行くの、 335 00:24:47,720 --> 00:24:50,490 我々はspan.priceを探しています。 336 00:24:50,490 --> 00:24:56,500 だから私は本当にすぐに見つけることができれば 価格、あなたが要素を検査する場合、 337 00:24:56,500 --> 00:25:00,610 あなたはそれがスパンであることがわかります 価格のクラスで。 338 00:25:00,610 --> 00:25:04,670 そして、それは本質的にどのようです 我々はそこに価格を取得しています。 339 00:25:04,670 --> 00:25:10,040 >> だから、本当にです こするの基本的なケース。 340 00:25:10,040 --> 00:25:13,550 それはあなたがすべて取得する方法です ページの要素 341 00:25:13,550 --> 00:25:16,510 つまり、あなたはすでにのURLを知っています。 342 00:25:16,510 --> 00:25:21,050 >> だから我々は、取得したい場合 深さもう少し、 343 00:25:21,050 --> 00:25:23,950 私たちは、ページ内のページをこすりすることができます。 344 00:25:23,950 --> 00:25:28,480 そして、この例では、私はよ CSVファイルに出力すること。 345 00:25:28,480 --> 00:25:39,510 だから私はここにCSVを必要としてい Rubyはないので、それ自体の内部には、 346 00:25:39,510 --> 00:25:42,350 機能性を持っています ただ、出力CSVファイルに。 347 00:25:42,350 --> 00:25:45,030 だから、超簡単です。 348 00:25:45,030 --> 00:25:48,710 私はすぐ隣に行きましょう。 349 00:25:48,710 --> 00:25:51,640 350 00:25:51,640 --> 00:25:57,170 私たちは、ファイルI / Oをカバーしました。だから、この それがCであるかに似ています 351 00:25:57,170 --> 00:26:00,870 そして、私たちは着物に移動する前に、 私がどれだけあなたが本当に迅速紹介します 352 00:26:00,870 --> 00:26:02,790 スポット内のサイトをこすります。 353 00:26:02,790 --> 00:26:10,040 >> だから我々はすでに方法を学びました Rubyで配列を宣言します。 354 00:26:10,040 --> 00:26:13,280 だから、僕は宣言しています 任意の配列の束 355 00:26:13,280 --> 00:26:16,310 私は、内のデータを格納すること。 356 00:26:16,310 --> 00:26:20,680 ドキュメントは、同じように動作しています それは前のファイルで行ったように。 357 00:26:20,680 --> 00:26:23,580 我々は見つけること、で行っています span.txt年代の各。 358 00:26:23,580 --> 00:26:25,040 我々はすでにそれを知っています。 359 00:26:25,040 --> 00:26:32,130 それは内の各コンテナです リンクは、私たちが望むすべてのデータを持っています。 360 00:26:32,130 --> 00:26:40,800 >> だからここに私たちがやっていることは、それぞれのためのものです スパンクラスTXTのリンク、私たちが行っています 361 00:26:40,800 --> 00:26:45,720 私たちは、タグを発見しています その最初の要素を見つけます。 362 00:26:45,720 --> 00:26:49,937 、配列を返すの.css、覚えておいてください あるようにあなたはそれにアクセスすることはできません。 363 00:26:49,937 --> 00:26:51,520 我々は最初の要素を見つけるつもりです。 364 00:26:51,520 --> 00:26:56,430 それは、一つの配列の場合でも、 項目は、次の構文を使用する必要があり、 365 00:26:56,430 --> 00:26:58,800 して、href属性を引き出します。 366 00:26:58,800 --> 00:27:01,800 >> だから我々は以前これをしました。 367 00:27:01,800 --> 00:27:04,440 だから、これはおなじみのはずです。 368 00:27:04,440 --> 00:27:14,330 そして今、我々は配列を持っています 私たちのすべてのリンクのパスと呼ばれます 369 00:27:14,330 --> 00:27:16,590 我々が使用したいとしていること。 370 00:27:16,590 --> 00:27:21,350 だから我々は、すべてのこの配列を持っている場合 我々が使用するパスの、 371 00:27:21,350 --> 00:27:26,840 我々はその後、それぞれに項目を作成することができます これらのページの私たちは、そのページを開いたとき。 372 00:27:26,840 --> 00:27:31,150 だから我々はまた、上で見たように 前の構文ここで、 373 00:27:31,150 --> 00:27:37,450 パスで文字列の補間を行います ここでは、そのように構文がパスだけのためのものです。 374 00:27:37,450 --> 00:27:41,450 そして私は、この名前を付けることができ 変数任意の名前。 375 00:27:41,450 --> 00:27:43,070 >> これは重要なものです。 376 00:27:43,070 --> 00:27:46,650 これは、あなた'LL配列です 各要素にアクセスします。 377 00:27:46,650 --> 00:27:52,400 しかし、あなたがパスにパスを言うとき、 これはパスの各要素ための手段と、 378 00:27:52,400 --> 00:27:55,150 パスを呼び出し、それを使用しています。 379 00:27:55,150 --> 00:27:59,266 ときにこれは本質的に似ています forループを行うと、あなたは私をintを使用します。 380 00:27:59,266 --> 00:28:04,000 だから、あなたにパスを扱うことができます インクリメントだ変数。 381 00:28:04,000 --> 00:28:07,820 >> そしてそれらのそれぞれについて、 これらのリンクのそれぞれに行きます。 382 00:28:07,820 --> 00:28:11,710 私たちは商品ページでそれを保存しているので、 私たちは毎回新しいページを作成しています 383 00:28:11,710 --> 00:28:13,330 我々はそれにアクセスします。 384 00:28:13,330 --> 00:28:20,560 そして、その新しいページ内検索、 span.postingtitletext、span.price、 385 00:28:20,560 --> 00:28:22,240 して、セクション#のpostingbody。 386 00:28:22,240 --> 00:28:28,430 我々はすでにセクション#のpostingbodyをカバー 我々は、説明を見たとき。 387 00:28:28,430 --> 00:28:34,890 >> だから我々は、Craigslistの記事で見に行くことができ、 あなただけのタイトルを見ている場合は、 388 00:28:34,890 --> 00:28:38,810 あなたは、ここでそれを見ることができます スパンpostingtitletext。 389 00:28:38,810 --> 00:28:41,390 そして、それはそれがあります理由です。 390 00:28:41,390 --> 00:28:49,120 そして価格のため、次のことができます 価格のスパンクラスでそれにアクセスします。 391 00:28:49,120 --> 00:28:54,480 >> だから我々はまた、おそらくかもしれません URLを保存したいです。 392 00:28:54,480 --> 00:28:58,580 だから我々は単にこれを実行します 再び、配列に格納し、 393 00:28:58,580 --> 00:29:01,150 あなたが探している場合ので、 Craigslistの上で、あなたがしています 394 00:29:01,150 --> 00:29:05,290 場合、おそらく、への道をするつもり あなたは、あなたの興味のある何かを見ます 395 00:29:05,290 --> 00:29:06,620 バックそのサイトにアクセスしてください。 396 00:29:06,620 --> 00:29:10,480 だから、あなただけ保存したいです 参照のためのURL。 397 00:29:10,480 --> 00:29:13,840 398 00:29:13,840 --> 00:29:19,630 >> これは単に、本質的です ループのための別の構文。 399 00:29:19,630 --> 00:29:26,360 私はだけではなく、paths.eachんでした 指標とパスでパスの。 400 00:29:26,360 --> 00:29:31,280 そして、この構文はルビーですfor-- パスは、私たちがここまでやったことあります 401 00:29:31,280 --> 00:29:33,920 各項目の変数を宣言。 402 00:29:33,920 --> 00:29:38,540 そしてインデックスは、同じように動作し ループのためのC言語で私。 403 00:29:38,540 --> 00:29:41,280 だから、追跡することができます インデックスが何であるかの。 404 00:29:41,280 --> 00:29:45,200 >> だからここだけです ちょっと便利なもの 405 00:29:45,200 --> 00:29:46,950 あなたはスクレーパーを実行しているときのために。 406 00:29:46,950 --> 00:29:50,580 あなたは数百ページをこするしている場合は、 それがぶら下がっていないことを確認し、 407 00:29:50,580 --> 00:29:53,320 それだけで出力は以下となり、 私はこのページにアクセスしています、 408 00:29:53,320 --> 00:29:55,960 とことを確認すること それはまだ続いています。 409 00:29:55,960 --> 00:29:59,250 しかし、我々の目的のために、なぜなら 百の項目があります、 410 00:29:59,250 --> 00:30:08,000 私はそれらの3つだけにアクセスするつもりです ここでは、時間が不足しないようにします。 411 00:30:08,000 --> 00:30:13,040 >> 我々はそれに到達する前にしかし、私はちょうどよ あなたは本当に素早く表示するために行きます、 412 00:30:13,040 --> 00:30:16,940 私はタイトルを出力します、 価格、説明、およびURL 413 00:30:16,940 --> 00:30:19,600 私が掻き取ってきた各リンクの。 414 00:30:19,600 --> 00:30:23,720 そして、これはただであります CSVライブラリの構文。 415 00:30:23,720 --> 00:30:25,240 あなたは、CSVを開きます。 416 00:30:25,240 --> 00:30:27,070 これは私がそれを呼び出すつもりだものです。 417 00:30:27,070 --> 00:30:29,430 書き込みで開きください。 418 00:30:29,430 --> 00:30:33,830 そしてCSVは、そのファイルになります あなたはにすべてを入力しています。 419 00:30:33,830 --> 00:30:37,800 これがためだけの健全性チェックであります 私はそれを実行していることを知っています。 420 00:30:37,800 --> 00:30:41,240 そして、これは私の健全性チェックであります それが完了していますことを知っています。 421 00:30:41,240 --> 00:30:46,670 だから私は、内の行にタイトルを入れています CSV、価格、URL、説明、 422 00:30:46,670 --> 00:30:49,420 CSVの行にすべて。 423 00:30:49,420 --> 00:30:53,410 >> だから我々は行くと実行した場合 このnow--と私はちょうど 424 00:30:53,410 --> 00:31:04,710 私が代わりにit--保存したことを確認してください 単に端末に出力します、 425 00:31:04,710 --> 00:31:09,750 我々は、CSVを持つ必要があります 生産のファイル。 426 00:31:09,750 --> 00:31:13,500 そこでここでは、CSVを見ることができます 生産されていたファイル。 427 00:31:13,500 --> 00:31:19,330 これは、出力され 私はちょうど走った花茎。 428 00:31:19,330 --> 00:31:23,030 あなたがここに見ることができるように、 ページ0、1、2、3にアクセスします。 429 00:31:23,030 --> 00:31:27,400 これらはタイトルであり、 価格、説明。 430 00:31:27,400 --> 00:31:31,710 そして、我々は、このCSVファイルを見れば 我々は、生成したファイル、 431 00:31:31,710 --> 00:31:35,700 あなたは、そのここで出力を見ることができます。 432 00:31:35,700 --> 00:31:40,350 これは、Excelではないので、そうではありません 行と列にフォーマットされています。 433 00:31:40,350 --> 00:31:45,140 しかし、あなたはどのように想像することができます それがフォーマットされることがあります。 434 00:31:45,140 --> 00:31:47,740 >> CSVはカンマ区切りの略です。 435 00:31:47,740 --> 00:31:50,090 だから、これは行であるかもしれないと想像することができます。 436 00:31:50,090 --> 00:31:54,700 また、各カンマが希望 別の列を示しています。 437 00:31:54,700 --> 00:32:00,010 caution--の言葉だけ 時にはあなたがいます 438 00:32:00,010 --> 00:32:02,260 コンマの多くのものをこします。 439 00:32:02,260 --> 00:32:05,100 ですから、出力している場合 それCSVファイルに、 440 00:32:05,100 --> 00:32:10,340 それが出力されないかもしれません あなたが考えるかもしれない方法。 441 00:32:10,340 --> 00:32:16,770 >> だから、基本的にすべてです 基本的なHTMLのスクレイピングにあり 442 00:32:16,770 --> 00:32:20,110 鋸山持つページ。 443 00:32:20,110 --> 00:32:26,000 >> だから、インターネットビーイング それは来ているとして、革新的な 444 00:32:26,000 --> 00:32:33,220 より自動化とGUIを持ちます バージョン、あまり堅牢ではあるが 445 00:32:33,220 --> 00:32:35,540 さまざまなウェブサイトをこするのバージョン。 446 00:32:35,540 --> 00:32:39,060 そして、私たちの目的のために 私が実証されます 447 00:32:39,060 --> 00:32:42,920 着物と呼ばれるChrome拡張。 448 00:32:42,920 --> 00:32:46,690 そして、あなたがしなければならないすべては、あなたがナビゲートであります あなたがこすりしたいページに移動します。 449 00:32:46,690 --> 00:32:48,590 あなたが興味のある分野をクリックしてください。 450 00:32:48,590 --> 00:32:51,510 あなたは、フィールドを校正、 それは自動的になるため、 451 00:32:51,510 --> 00:32:54,360 それがどう思うかを検出 あなたはスクレーピングしたいです、 452 00:32:54,360 --> 00:32:56,280 して、あなただけのAPIを作成します。 453 00:32:56,280 --> 00:33:03,700 >> だから我々はそれを実証した場合 Craigslistのは、それが実際に動作しないでしょう。 454 00:33:03,700 --> 00:33:08,290 そして、これは私が戻って何が起こっていたかであります それはのように堅牢されていないについて言っ。 455 00:33:08,290 --> 00:33:10,320 これは、トラブルのAPIを作成しています。 456 00:33:10,320 --> 00:33:13,400 しかし、デモなど それはどうなるのかの、 457 00:33:13,400 --> 00:33:17,460 あなたがChromeの拡張機能をインストールする場合、 あなたが行うすべては、あなたがそれをクリックします。 458 00:33:17,460 --> 00:33:21,750 これは、ページをKimonofies、その後 あなたがスクリプトにしたいものをクリックしてください。 459 00:33:21,750 --> 00:33:24,480 >> だから私は、上のクリックした場合 それは、それがハイライト表示になります 460 00:33:24,480 --> 00:33:28,130 何それは私がしたいと考えて そのページを削り取ること。 461 00:33:28,130 --> 00:33:33,660 だから多分私はこのリストを呼び出します。 462 00:33:33,660 --> 00:33:36,430 これは私が選択したどのように多くの項目です。 463 00:33:36,430 --> 00:33:43,810 そして、私はいくつかを確認するか、または拒否することができます 他の提案したリストの 464 00:33:43,810 --> 00:33:49,600 それがに追加取得します 何が掻き取られます。 465 00:33:49,600 --> 00:33:52,330 >> だから今、私たちがあります見ることができます 百の項目が選択されています。 466 00:33:52,330 --> 00:33:58,060 私は別のフィールドを持つようにしたい場合 また、これに関連しているこすり、 467 00:33:58,060 --> 00:34:02,540 私は価格をこすりしたいと言います 同様に、私は同じことを行うことができます。 468 00:34:02,540 --> 00:34:06,190 469 00:34:06,190 --> 00:34:11,550 >> だから、ここでそれだ方法のデモンストレーションです はるかに少ない堅牢な、今だから 470 00:34:11,550 --> 00:34:15,050 代わりに街を拾います 私はしたいの価格だけ。 471 00:34:15,050 --> 00:34:16,989 そして今、それが200物事をピックアップしています。 472 00:34:16,989 --> 00:34:19,880 あなたが戻って削除することができます。 473 00:34:19,880 --> 00:34:21,449 もう一度試すことができます。 474 00:34:21,449 --> 00:34:24,250 しかし、無保証。 475 00:34:24,250 --> 00:34:29,909 これは、これは時々どのように動作するかです。 476 00:34:29,909 --> 00:34:32,969 ここで見るように、今ではここまでの96を述べています。 477 00:34:32,969 --> 00:34:37,000 これは、リンクの大部分をピックアップしています あなたがこすりしたいことではなく、 478 00:34:37,000 --> 00:34:39,280 必ずしもそれらのすべて。 479 00:34:39,280 --> 00:34:43,909 >> 着物しかし別の有用なツール あなたは高度な機能に行くことができますです 480 00:34:43,909 --> 00:34:47,980 ここでは、高度に行き、 そして、それはあなたが表示されます 481 00:34:47,980 --> 00:34:53,139 独特の内訳 HTMLにアクセスする方法 482 00:34:53,139 --> 00:34:54,909 あなたがこすりしたいタグ。 483 00:34:54,909 --> 00:35:01,450 だからリストのために、あなたはここを見れば、 あなたはdivのPスパンにアクセスする場合にまたがります、 484 00:35:01,450 --> 00:35:06,030 あなたは、実際には使用することができます あなたの鋸山のコードでこの、 485 00:35:06,030 --> 00:35:10,780 ここで、我々はspan.txtていた前に リストの各アクセスします。 486 00:35:10,780 --> 00:35:13,270 私はテキストだけをしたい場合 リスト内で、 487 00:35:13,270 --> 00:35:18,950 私ができた入力のdiv空間P 空間スパン空間スパン空間A、 488 00:35:18,950 --> 00:35:21,570 それは、同じ効果を達成するであろう。 489 00:35:21,570 --> 00:35:26,320 そして、興味を持っているあなたの人々のために 正規表現を使用して、 490 00:35:26,320 --> 00:35:31,670 それはまた、あなたの定期的なを与えるために起こります 入力に文字列の発現ソート 491 00:35:31,670 --> 00:35:34,900 物事を見つけるために あなたが見つけることをしようとしています。 492 00:35:34,900 --> 00:35:44,130 >> だから、他のクールな機能があります あなたがページ付けでき着物の、 493 00:35:44,130 --> 00:35:47,780 これだけではありません私はこすりすることができます このページの結果、 494 00:35:47,780 --> 00:35:50,890 私はこの小さなをクリックすることができます ここでボタン、ページネーション、 495 00:35:50,890 --> 00:35:55,580 その希望のボタンを指定します 次のページに私を取ります、 496 00:35:55,580 --> 00:35:59,500 そして、それはちょうどそれを知っています それは次のページに繰り返すことができ、 497 00:35:59,500 --> 00:36:04,120 そしてその後the--限りのすべてをこすり それはcourse--のと同じ形式だとして 498 00:36:04,120 --> 00:36:06,110 同様にそれらのすべてのリンクをスケープ。 499 00:36:06,110 --> 00:36:15,230 >> 着物は望んでいないので、そのために 私たちが何をやったか、Craigslistのと連携 500 00:36:15,230 --> 00:36:19,790 私はハーバード・クリムゾンをKimonofiedきています。 501 00:36:19,790 --> 00:36:29,380 私は一種の一部を取り出してきました トップ記事を特色にし、ここで確認してください。 502 00:36:29,380 --> 00:36:33,090 これらのすべてを言います。 503 00:36:33,090 --> 00:36:35,830 私は、このAPIをまとめました あなたのために早めに。 504 00:36:35,830 --> 00:36:38,990 しかし、そうでなければ、どうなるのか あなただけの[完了]をクリックしますでしょうです。 505 00:36:38,990 --> 00:36:40,940 あなたのAPIの詳細を入力します。 506 00:36:40,940 --> 00:36:45,260 いずれかに設定してください 自動または手動のクロール。 507 00:36:45,260 --> 00:36:48,460 つまり、あなたの更新ができ データを15分ごとに、 508 00:36:48,460 --> 00:36:50,330 毎週、毎日、何をしたいです。 509 00:36:50,330 --> 00:36:51,160 あなたのAPIに名前を付けます。 510 00:36:51,160 --> 00:36:52,790 APIを作成します。 511 00:36:52,790 --> 00:36:58,460 あなたの利益のために、私が作成しました すでにフロントページAPIをクリムゾン。 512 00:36:58,460 --> 00:37:02,480 >> だから、あなただけの作成します 着物のアカウント、およびそれ 513 00:37:02,480 --> 00:37:06,240 あなたのためにすべてのあなたのAPIを格納します。 514 00:37:06,240 --> 00:37:10,330 だから、基本的にそれがすべてですあなた 独立した別の擦り傷。 515 00:37:10,330 --> 00:37:18,250 >> 私たちはここを見てあれば、これは 私が収集した意見へのリンク。 516 00:37:18,250 --> 00:37:21,290 これらは紹介されています 私が収集したリンク。 517 00:37:21,290 --> 00:37:24,090 そして、これらは、最も読まれています 私が収集したリンク 518 00:37:24,090 --> 00:37:27,120 この最新のAPI花茎から。 519 00:37:27,120 --> 00:37:30,790 >> ですから、ここで見ることができれば、 これらは、特色になります 520 00:37:30,790 --> 00:37:34,130 これらは意見であろうが、 この例でいます、 521 00:37:34,130 --> 00:37:38,150 私はそれらすべてを組み合わせました 1コレクションに。 522 00:37:38,150 --> 00:37:42,780 しかし、あなたはそれで遊ぶ場合 少しは、あなたはそれを分割することができます 523 00:37:42,780 --> 00:37:45,090 としかし、それを分割 あなたがいる限りにしたいです 524 00:37:45,090 --> 00:37:47,520 フォーマットとしては若干異なります。 525 00:37:47,520 --> 00:37:51,320 >> ただ、これをいじって、 クロール、欠点のいずれかを設定します 526 00:37:51,320 --> 00:37:58,120 あなただけのアップクロールできています 一度に25ページへ。 527 00:37:58,120 --> 00:38:00,430 それが制限要因の一つです。 528 00:38:00,430 --> 00:38:03,060 しかし、ここで、あなたはそれを設定した場合 マニュアルクロールに、この 529 00:38:03,060 --> 00:38:06,100 あなたはそれを伝えることができる方法です あなたのデータを更新します。 530 00:38:06,100 --> 00:38:11,010 そして、ここであなたのクロール履歴を見ることができます あなたがクロールしましたすべての。 531 00:38:11,010 --> 00:38:16,000 そして、あなたたちは、戻ってサインアップすることができ、 すべての異なった方法で遊びます 532 00:38:16,000 --> 00:38:20,340 あなたのデータを変更して使用することができ。 533 00:38:20,340 --> 00:38:24,580 >> 着物はまで設定することができます リンク内のリンクをこすり。 534 00:38:24,580 --> 00:38:29,700 そして、あなたは最初にして行うことになります リンクのリストをこします、 535 00:38:29,700 --> 00:38:35,390 そして、その後のようにそのAPIを使用して、 別のAPIのポイントから飛び降ります 536 00:38:35,390 --> 00:38:36,710 あなたは、スクリプトを作成すること。 537 00:38:36,710 --> 00:38:42,040 しかし、それはより複雑です 私たちが今日に取得するつもりです。 538 00:38:42,040 --> 00:38:44,270 >> だから、着物です。 539 00:38:44,270 --> 00:38:46,980 私たちはプロの話をしますと、 鋸山と着物の短所。 540 00:38:46,980 --> 00:38:50,380 >> 鋸山は、それは本当に速いです。 541 00:38:50,380 --> 00:38:51,640 これは、テストするのは簡単です。 542 00:38:51,640 --> 00:38:55,910 あなただけに何かを置くことができます コンソールは、簡単に設定できます。 543 00:38:55,910 --> 00:39:00,400 あなたは正確に何を決定することができます あなたはこすり、店舗にしたいです。 544 00:39:00,400 --> 00:39:02,060 ページ・制限はありません。 545 00:39:02,060 --> 00:39:08,010 私は実際のようにこすりするためにそれを使用しました 1800年南アフリカの学校のウェブサイト 546 00:39:08,010 --> 00:39:10,870 私はインターンシップのための電子メールのために。 547 00:39:10,870 --> 00:39:16,060 >> だから、ベストプラクティスが、可能性があります スクリプトを分割することであろう。 548 00:39:16,060 --> 00:39:19,310 それが失敗した場合ので、その後、 あなたは何を得ることはありません。 549 00:39:19,310 --> 00:39:22,790 しかし、あなたは百をすれば、 多分当時の200ページ、 550 00:39:22,790 --> 00:39:27,840 あなたは、少なくともいくつかのチャンスがあります 特に、少しずつそれを取得 551 00:39:27,840 --> 00:39:30,280 あなたが悪い、インターネットを持っている場合。 552 00:39:30,280 --> 00:39:32,720 >> 残念ながら、HTMLだけをこすりすることができます。 553 00:39:32,720 --> 00:39:35,190 あなたが持っているのであれば 動的にロードさpages-- 554 00:39:35,190 --> 00:39:39,480 そして、私はあなたの例を紹介します second--でカヤックのような 555 00:39:39,480 --> 00:39:42,270 残念ながら鋸山 それをこすりすることはできません。 556 00:39:42,270 --> 00:39:45,700 >> しかし、着物にも使いやすいです。 557 00:39:45,700 --> 00:39:48,330 あなたが見たように、それは本質的です ポイントとクリックします。 558 00:39:48,330 --> 00:39:50,260 それは、JavaScriptをこすりすることができます。 559 00:39:50,260 --> 00:39:53,790 残念ながら、最大値があります あなたがこすりことができますどのように多くのページへ。 560 00:39:53,790 --> 00:39:55,710 時にはそれは少しです 設定するのは難しいです。 561 00:39:55,710 --> 00:39:57,240 それは混乱してしまいます。 562 00:39:57,240 --> 00:40:00,920 しかし、それは間違いです 考慮すべきもの 563 00:40:00,920 --> 00:40:05,930 あなたが持ってしようとしていない場合 超堅牢な保守性こすり。 564 00:40:05,930 --> 00:40:09,010 あなただけ取得したい場合 すぐにページのオフすべて、 565 00:40:09,010 --> 00:40:10,970 その後、着物は本当にあります 使用するには良いツール。 566 00:40:10,970 --> 00:40:16,490 私は前に述べたように、あります 着物の高度な機能 567 00:40:16,490 --> 00:40:19,260 それはあなたがどの​​ように示しています ユニークなHTMLにアクセス 568 00:40:19,260 --> 00:40:24,210 でも超便利な元素で、 あなたは鋸山で作業している場合。 569 00:40:24,210 --> 00:40:30,370 >> だから我々は、カヤックのサイトに行けば たとえば、あなたが見ることができますis-- 570 00:40:30,370 --> 00:40:31,750 または多分あなたは見ることはできません。 571 00:40:31,750 --> 00:40:38,910 しかし、私はあなたのカヤックのURLを示す場合、 これは、実際には元のURLです。 572 00:40:38,910 --> 00:40:43,800 これは、従来ビーイングのURLです どのようなJavaScriptのスクリプトによって変更されました 573 00:40:43,800 --> 00:40:45,350 彼らは起こっていること。 574 00:40:45,350 --> 00:40:52,420 そして、それは異なって見えるために起こっています 要素を検査から。 575 00:40:52,420 --> 00:40:55,940 >> だから、通過した場合 エレメントを点検一致 576 00:40:55,940 --> 00:41:00,340 ソースコードにコードが、それはです 実際には異なることになるだろう。 577 00:41:00,340 --> 00:41:05,640 そして、これは本質的理由鋸山であります 動的にロードされたサイトをこすりすることはできません。 578 00:41:05,640 --> 00:41:08,810 鋸山であるため ソースURLをこします、 579 00:41:08,810 --> 00:41:16,310 着物は、実際にあるのに対し、 あなたは基本的にしているものをこすります 580 00:41:16,310 --> 00:41:18,260 select要素で見て。 581 00:41:18,260 --> 00:41:23,880 >> だから私は通過し、私ならば 試してみて、Kimonofyカヤック、 582 00:41:23,880 --> 00:41:26,600 私は実際に通過することができます 価格を選択します。 583 00:41:26,600 --> 00:41:32,360 それは、少し難しくなります この場合には、です 584 00:41:32,360 --> 00:41:36,600 実際にこの価格を見て これらとは異なり。 585 00:41:36,600 --> 00:41:41,110 あなたがconfigure--できるのに対し、そうか これは、動的にロードされなかった場合、 586 00:41:41,110 --> 00:41:43,620 あなたは鋸山を設定でき これらのすべてを取得します。 587 00:41:43,620 --> 00:41:48,230 >> 書式はわずかであるため このリストには異なります 588 00:41:48,230 --> 00:41:51,280 これは他の部分に比較されます それらの、あなたはここで見ることができます 589 00:41:51,280 --> 00:41:54,830 それは実際に逝ってしまったと 選択されたすべての便価格。 590 00:41:54,830 --> 00:42:01,200 たぶん私は選択したいです 飛行時間にも。 591 00:42:01,200 --> 00:42:04,700 そして、私が通過することができ、 ソートのことを設定します。 592 00:42:04,700 --> 00:42:06,950 私はそれを望んでいません。 593 00:42:06,950 --> 00:42:10,200 私はちょうど次のフライトの時間が欲しいです。 594 00:42:10,200 --> 00:42:17,030 そして、これらのカップルの後に 通過して、それが画像を取得します。 595 00:42:17,030 --> 00:42:19,080 だから、着物の美しいスマート。 596 00:42:19,080 --> 00:42:21,900 それはちょうどほど堅牢ではありません。 597 00:42:21,900 --> 00:42:26,710 >> いくつかの他のがあります。 あなたが使用できる選択肢。 598 00:42:26,710 --> 00:42:31,600 そして、私はここであなたにそれらを紹介します。 599 00:42:31,600 --> 00:42:35,790 あなたは、より快適である場合 多分代わりにルビーのPythonの、 600 00:42:35,790 --> 00:42:39,290 ライブラリがあります 美しいスープと呼ばれます。 601 00:42:39,290 --> 00:42:40,430 あなたはそれを使用することができます。 602 00:42:40,430 --> 00:42:42,270 それは鋸山に非常に似てます。 603 00:42:42,270 --> 00:42:44,620 これは、いくつかのより多くの機能を持っています。 604 00:42:44,620 --> 00:42:52,160 あなたは、HTMLタグを見つけることができますし、 その後、上に移動または横に移動します。 605 00:42:52,160 --> 00:42:54,690 >> PyQtはがあります。 606 00:42:54,690 --> 00:42:57,820 これは実際に動的なこすりすることができます サイト、それは一種のだから 607 00:42:57,820 --> 00:43:02,540 なりすましWebKitがあります そこに実際にせずにブラウザ 608 00:43:02,540 --> 00:43:03,670 ブラウザいます。 609 00:43:03,670 --> 00:43:07,490 だから、すべてのを待つことになります 最初のロードするJavaScript、およびその後 610 00:43:07,490 --> 00:43:09,560 行くとしようとサイトをこすり。 611 00:43:09,560 --> 00:43:13,560 >> あなたはルビーに固執する場合は、 鋸山から1レベル上を行くことができます。 612 00:43:13,560 --> 00:43:17,650 あなたはとカピバラを使用することができます ポルターガイストラッパー。 613 00:43:17,650 --> 00:43:22,910 そして、これは実際にすることができます 本質的に同じことを行います 614 00:43:22,910 --> 00:43:26,610 それはWebKitのですPyQtは、のように。 615 00:43:26,610 --> 00:43:29,610 それはのを待ちます JavaScriptは最初にロードします。 616 00:43:29,610 --> 00:43:33,340 あなたは十分にそれを周りいじる場合は、 あなたも、それは物事をクリックして取得することができます。 617 00:43:33,340 --> 00:43:42,780 >> だから、そのリンクがあるかどうか ここで古典的なHREFではありません 618 00:43:42,780 --> 00:43:46,350 パスは簡単にアクセス可能で、 それは、検出し、いくつかのJavaScriptのことです 619 00:43:46,350 --> 00:43:49,490 クリックは、あなたが実際にそれを行うことができます。 620 00:43:49,490 --> 00:43:53,430 より人気のライブラリ ユーザをシミュレートします 621 00:43:53,430 --> 00:43:56,390 PhantomJSではJavaScript、です。 622 00:43:56,390 --> 00:44:01,010 これは明らかに、動的こすりすることができます サイト、これは本質的であるため、 623 00:44:01,010 --> 00:44:04,270 クロームのふり ユーザーインターフェースなし。 624 00:44:04,270 --> 00:44:09,970 >> そして、もちろんほとんど 堅牢な、しかし最も遅いオプション、 625 00:44:09,970 --> 00:44:13,260 セレンブラウザの自動化があります。 626 00:44:13,260 --> 00:44:15,550 残念ながら、 あなたがあることを行っていません 627 00:44:15,550 --> 00:44:19,770 あなたのCS50のIDE内でこれを行うことができます。 628 00:44:19,770 --> 00:44:24,140 基本的にどのようなので、 それはあなたのChromeをブートアップされ、 629 00:44:24,140 --> 00:44:27,090 Firefoxの、どのようなブラウザ あなたが使用することを、 630 00:44:27,090 --> 00:44:32,570 それは多分あなたのマウスを追跡 あなたが入力するどのような動き、 631 00:44:32,570 --> 00:44:35,170 それだけでソート このプロセスを自動化します。 632 00:44:35,170 --> 00:44:42,070 だから、のようなものとして開発されました ウェブサイトの自動テストツール。 633 00:44:42,070 --> 00:44:45,910 しかし、多くの人が使用します ウェブサイトをこすりするセレン 634 00:44:45,910 --> 00:44:49,990 彼らは、そうでなければ持っていること 難易度の多くこすります 635 00:44:49,990 --> 00:44:53,700 これらの他、より高速なツールのいくつかと。 636 00:44:53,700 --> 00:44:57,530 >> だから、私は、Webスクレイピングのために持っているすべてです。 637 00:44:57,530 --> 00:44:58,090 楽しむ。 638 00:44:58,090 --> 00:45:01,762 639 00:45:01,762 --> 00:45:02,680 >> 聴衆:質問。 640 00:45:02,680 --> 00:45:04,016 >> ロバートKRABEK:はい。 641 00:45:04,016 --> 00:45:12,840 >> 聴衆:ハッシュするメカニズムがあります ウェブサイトあなたは基本的にできたので、 642 00:45:12,840 --> 00:45:14,207 後でそれを通過します。 643 00:45:14,207 --> 00:45:15,040 ロバートKRABEK:うん。 644 00:45:15,040 --> 00:45:21,530 だから私たちは私たちの中に、入れ 例えば、それらの両方のために、 645 00:45:21,530 --> 00:45:24,980 私たちは、docにWebサイト全体を置きます。 646 00:45:24,980 --> 00:45:31,260 だから、あなたは実際には取ることができます 変数ドキュメントとファイルに書き込みます。 647 00:45:31,260 --> 00:45:35,490 私がしたかったのであれば、私ができました HTMLファイルとして書き出します、 648 00:45:35,490 --> 00:45:39,280 そしてその後の代わりに使用して OpenURIとcURLの要求、 649 00:45:39,280 --> 00:45:43,520 その後、私はドキュメントを開くことができ HTMLと、そのために検索します。 650 00:45:43,520 --> 00:45:47,960 >> 聴衆:しかし、あなたは保存することができます オンライン体験のソート 651 00:45:47,960 --> 00:45:48,930 あなたはオフラインを行いながら。 652 00:45:48,930 --> 00:45:51,013 例えば。あなたがいるとき 数時間飛んで、 653 00:45:51,013 --> 00:45:54,070 私は基本的にアーカイブします ウェブサイト全体。 [聞こえません] 654 00:45:54,070 --> 00:45:58,780 >> ロバートKRABEK:ええ、それはexactly--です そう、文字通りこれが何をしていますか 655 00:45:58,780 --> 00:46:03,010 それはすべてのものを取っているされています それは、次のURLからだろう。 656 00:46:03,010 --> 00:46:11,280 我々はカールを実行したのであれば、それはです このHTMLのすべてを取って、 657 00:46:11,280 --> 00:46:14,590 そしてそれを保存です 変数ドキュメントの内部。 658 00:46:14,590 --> 00:46:17,290 だから、あなたは何でも行うことができます あなたは、docでやってみたいです。 659 00:46:17,290 --> 00:46:18,575 あなたは、ファイルへの出力をすることができます。 660 00:46:18,575 --> 00:46:19,950 聴衆:しかし、それがリンクアップしていません。 661 00:46:19,950 --> 00:46:20,780 それは、動的ではありません。 662 00:46:20,780 --> 00:46:22,770 それは右、再帰的ではありませんか? 663 00:46:22,770 --> 00:46:24,016 あなたは私が何を意味するか参照してください? 664 00:46:24,016 --> 00:46:28,359 私は基本的に一種のハッシュにしようとしています 私のハードドライブ上のウェブサイト全体 665 00:46:28,359 --> 00:46:31,150 私は基本的にそれを行うことができるように インターネットなしで数時間。 666 00:46:31,150 --> 00:46:32,025 >> ロバートKRABEK:右。 667 00:46:32,025 --> 00:46:37,140 私はそうhad--場合だからここで私のファイルI / Oがですか? 668 00:46:37,140 --> 00:46:47,766 だから、これはファイルI / Oです。だからではなく、言います このことから、私はこのcraigslist.htmlを呼び出します。 669 00:46:47,766 --> 00:46:52,620 670 00:46:52,620 --> 00:46:53,940 私はそれを開くと思います。 671 00:46:53,940 --> 00:46:59,020 私はそれに入れドキュメントを思います。 672 00:46:59,020 --> 00:47:00,470 私は、ファイルを閉じます。 673 00:47:00,470 --> 00:47:05,410 そしてちょうどCS50 IDE理由 それは何だ、クラウド上にあります。 674 00:47:05,410 --> 00:47:07,710 私はここに行くことができます。 675 00:47:07,710 --> 00:47:09,320 私は、ファイルをダウンロードすることができます。 676 00:47:09,320 --> 00:47:11,830 そしてそれは私のハードドライブになります。 677 00:47:11,830 --> 00:47:13,930 だから、そのように行うことができます。 678 00:47:13,930 --> 00:47:18,830 あなたが自宅にいる場合は、使用していません CS50 IDE、サブライムか何かのような、 679 00:47:18,830 --> 00:47:21,900 これは、さらに簡単です これは、ローカルで使用可能なすべてのです 680 00:47:21,900 --> 00:47:23,020 インターネットに関連付けられていません。 681 00:47:23,020 --> 00:47:24,720 >> 聴衆:私は参照してください。 682 00:47:24,720 --> 00:47:26,580 これは、1つの特定の問題のためです。 683 00:47:26,580 --> 00:47:30,410 ようにするために、再帰的にそれを行うことができます いくつかの層に事の深い種類を行きますか? 684 00:47:30,410 --> 00:47:33,801 >> ロバートKRABEK:私は、フォルダをダウンロードすることができます 同様に、それはあなたが求めているものだ場合。 685 00:47:33,801 --> 00:47:34,426 聴衆:うん。 686 00:47:34,426 --> 00:47:39,890 687 00:47:39,890 --> 00:47:41,440 >> ロバートKRABEK:クール。 688 00:47:41,440 --> 00:47:43,182