1 00:00:00,000 --> 00:00:03,234 >> [Musikwiedergabe] 2 00:00:03,234 --> 00:00:05,275 3 00:00:05,275 --> 00:00:06,400 ROBERT KRABEK: Hallo, Jungs. 4 00:00:06,400 --> 00:00:09,980 Mein Name ist Robert Krabek und Ich werde euch lehren 5 00:00:09,980 --> 00:00:15,470 wie man das Netz mit kratzen Nokogiri, der ein Ruby-Bibliothek ist, 6 00:00:15,470 --> 00:00:17,566 und Kimono, der ein Chrome-Erweiterung ist. 7 00:00:17,566 --> 00:00:20,940 8 00:00:20,940 --> 00:00:25,010 >> Also zuerst gibt es eine paar Dinge, die Sie 9 00:00:25,010 --> 00:00:28,790 tun können, wenn vielleicht Sie gewesen sind Tun aller psets bisher 10 00:00:28,790 --> 00:00:31,170 und Ihr Arbeitsbereich ist immer ein wenig voll. 11 00:00:31,170 --> 00:00:37,060 Wir können eigentlich nur gehen und erstellen Sie einen neuen Arbeitsbereich für Sie 12 00:00:37,060 --> 00:00:41,220 um nur ein neues Projekt in zu tun. 13 00:00:41,220 --> 00:00:46,160 Also, wenn Sie wollen auch weiterhin Arbeiten in der CS50-Vorlage ID 14 00:00:46,160 --> 00:00:49,080 dass Sie derzeit haben, fühlen Sie sich frei, und Sie können einfach 15 00:00:49,080 --> 00:00:54,700 Installieren Nokogiri mit CFLAGS equals-- gem install nokogiri. 16 00:00:54,700 --> 00:00:56,930 Aber sonst werde ich Ihnen zeigen wie man eine neue eingerichtet. 17 00:00:56,930 --> 00:01:01,210 Und dann ist dies im wesentlichen dropping mehr Stützräder. 18 00:01:01,210 --> 00:01:07,120 Und du bist Codierung, als wären Sie nur die Kodierung in Sublime oder so etwas. 19 00:01:07,120 --> 00:01:12,365 Wenn wir also verschieben Sie es um. 20 00:01:12,365 --> 00:01:14,930 21 00:01:14,930 --> 00:01:18,690 >> So sagen, dies ist Ihr aktueller CS 50 ID. 22 00:01:18,690 --> 00:01:21,490 Sie können nur Cloud9 Sie hier. 23 00:01:21,490 --> 00:01:22,725 Sie können an Ihrem Armaturenbrett zu gehen. 24 00:01:22,725 --> 00:01:26,720 25 00:01:26,720 --> 00:01:29,950 Es sollte bringen Workspaces Registerkarte. 26 00:01:29,950 --> 00:01:32,980 Und dann klicken Sie einfach kann Hier erstellen Sie einen neuen Arbeitsbereich. 27 00:01:32,980 --> 00:01:37,600 Benennen Sie Ihre neuen Arbeitsbereich, vielleicht Test oder Kratzen. 28 00:01:37,600 --> 00:01:42,700 Und klicken Sie auf diese benutzerdefinierte Registerkarte hier, statt der Registerkarte CS50-Vorlagen. 29 00:01:42,700 --> 00:01:45,155 Und dann können Sie einfach gehen kann und erstellen Sie einen neuen Arbeitsbereich. 30 00:01:45,155 --> 00:01:48,280 >> Ich habe bereits einen Arbeitsbereich hier geschaffen. 31 00:01:48,280 --> 00:01:50,640 Also werden wir mit diesem arbeiten. 32 00:01:50,640 --> 00:01:55,380 Und wenn Sie ein neues erstellt Arbeitsbereich so mit der Registerkarte Benutzerdefiniert, 33 00:01:55,380 --> 00:02:04,560 Sie geben Sie einfach gem install nokogiri, die hier nicht geht. 34 00:02:04,560 --> 00:02:06,230 OK, es ist ein wenig eingefroren. 35 00:02:06,230 --> 00:02:08,979 Aber man kann geben gem install nokogiri. 36 00:02:08,979 --> 00:02:15,970 Und das sollte alles sein, dass Es ist für die Installation. 37 00:02:15,970 --> 00:02:20,590 >> Wie ich schon sagte, wenn Sie noch Arbeit in Ihrem CS50-Vorlage ID, 38 00:02:20,590 --> 00:02:30,270 Sie brauchen nur zu geben CFLAGS entspricht gem install nokogiri. 39 00:02:30,270 --> 00:02:33,130 Und ich bereits installiert haben hier also werde ich das nicht tun. 40 00:02:33,130 --> 00:02:38,500 Aber für diejenigen, folgende entlang, fühlen Sie sich frei, dies zu tun. 41 00:02:38,500 --> 00:02:46,000 >> Also, wenn Sie Ihre Nokogiri haben Arbeitsplatz oder Bibliothek installiert, 42 00:02:46,000 --> 00:02:49,500 Ich werde Ihnen ein wenig zu geben, der einen Crash-Kurs in Ruby-Syntax 43 00:02:49,500 --> 00:02:53,380 weil Nokogiri ist ein Ruby-Bibliothek. 44 00:02:53,380 --> 00:03:03,710 So müssen Sie einige grundlegende wissen Ruby-Syntax für die Arbeit mit Nokogiri. 45 00:03:03,710 --> 00:03:08,750 So einige grundlegende Unterschiede von dem, was Sie gewohnt sind 46 00:03:08,750 --> 00:03:13,370 vielleicht, wenn Sie gearbeitet haben bisher nur C und PHP, 47 00:03:13,370 --> 00:03:16,010 Sie Variablen deklarieren ohne Typ. 48 00:03:16,010 --> 00:03:19,720 Sie verwenden ein Semikolon nicht, Das ist eine Art Erleichterung. 49 00:03:19,720 --> 00:03:25,480 Es gibt keine Klammern jetzt rund für oder while-Schleifen, zum Beispiel. 50 00:03:25,480 --> 00:03:29,460 Sie müssen nur einen Codeblock, und dann Ende am Ende, dass setzen. 51 00:03:29,460 --> 00:03:32,380 Es gibt keinen plus plus oder minus minus, so dass nur 52 00:03:32,380 --> 00:03:36,180 wissen, dass, wenn Sie for-Schleifen tun, 53 00:03:36,180 --> 00:03:38,620 nur zzgl equals und Minus entspricht. 54 00:03:38,620 --> 00:03:43,310 Und statt der Hash gehören, Sie verwenden benötigen und dann 55 00:03:43,310 --> 00:03:47,755 was auch immer Bibliothek versuchen um in das Programm zu laden. 56 00:03:47,755 --> 00:03:51,610 57 00:03:51,610 --> 00:03:53,430 >> Ruby ist nicht eine kompilierte Sprache. 58 00:03:53,430 --> 00:03:55,550 Also das ist eine andere Erleichterung. 59 00:03:55,550 --> 00:03:59,350 Es ist mehr ähnlich wie PHP, wo es ist eine interpretierte Sprache. 60 00:03:59,350 --> 00:04:03,570 Sie können eine beliebige Ruby-Skript ausgeführt, dass Sie schreiben mit Rubin gefolgt 61 00:04:03,570 --> 00:04:07,380 durch den Namen von Ihrem Skript oder Programm. 62 00:04:07,380 --> 00:04:13,000 Um anzuzeigen, dass es ist ein Ruby-Programm, Sie nur am Ende mit .rb statt .c. 63 00:04:13,000 --> 00:04:17,440 Und es gibt variablen große Arrays in Ruby, 64 00:04:17,440 --> 00:04:23,200 Das ist sehr praktisch, wenn Sie Schaben und vielleicht möchte anfügen 65 00:04:23,200 --> 00:04:26,090 Daten, die Sie in ein Array gekratzt habe. 66 00:04:26,090 --> 00:04:31,960 Sie müssen nicht, um ein neues Array malloc und kopieren Sie die alten Array in das neue Array. 67 00:04:31,960 --> 00:04:36,150 Sie können einfach mit anhängen die beiden Pfeil Zeichen. 68 00:04:36,150 --> 00:04:39,820 Und es gibt keine Zeichen gibt nur einzelne Buchstabenfolgen. 69 00:04:39,820 --> 00:04:44,760 So dass ein wenig leichter sollte. 70 00:04:44,760 --> 00:04:50,130 >> So dass wir Ihnen nur einige Beispiele von einigen grundlegenden Ruby-Syntax. 71 00:04:50,130 --> 00:04:57,100 Also hier kann man sehen, dass anstelle von der Schrägstrich Schrägstrich, um in Ruby zu kommentieren, 72 00:04:57,100 --> 00:04:58,740 Sie benutzen Sie einfach die Nummernzeichen. 73 00:04:58,740 --> 00:05:04,990 Und Variablendeklaration, die Sie geben Sie einfach die variablen equals 74 00:05:04,990 --> 00:05:07,971 Was auch immer Sie wollen, dass die variabel zu sein. 75 00:05:07,971 --> 00:05:09,220 Sie können Strings sein. 76 00:05:09,220 --> 00:05:14,120 Sie können Arrays, haben die Sie bevölkern mit Werten. 77 00:05:14,120 --> 00:05:17,240 puts und Drucke sind ähnlich. 78 00:05:17,240 --> 00:05:20,110 Für unsere Zwecke, die einzige Unterschied ist wirklich 79 00:05:20,110 --> 00:05:25,500 das bringt, das steht für puts, legt nur eine neue Zeile 80 00:05:25,500 --> 00:05:27,440 Zeichen an, was auch immer Sie drucken. 81 00:05:27,440 --> 00:05:30,980 >> Also wenn wir einen kleinen Demonstration hier, 82 00:05:30,980 --> 00:05:41,800 wir laufen diese mit-- Öffnen Sie ein neues Terminal. 83 00:05:41,800 --> 00:05:46,020 Sie können alle diese sehen Dateien, die in meinem Terminal sind. 84 00:05:46,020 --> 00:05:50,960 Und wenn ich nur laufen Rubin, Rubin intro.rb, es 85 00:05:50,960 --> 00:05:53,530 löscht fünf Hallo Mather, Quincy, Träger. 86 00:05:53,530 --> 00:05:54,410 Adams. 87 00:05:54,410 --> 00:05:59,295 Also das ist alles, was es zu erklären Arrays. 88 00:05:59,295 --> 00:06:01,670 ZIELGRUPPE: Robert, können Sie Ihre Schrift ein wenig größer? 89 00:06:01,670 --> 00:06:02,461 ROBERT KRABEK: Ja. 90 00:06:02,461 --> 00:06:05,370 91 00:06:05,370 --> 00:06:12,280 Und ich kann, weil man nicht zoomen vergrößern, um Terminal-Schriftarten offenbar. 92 00:06:12,280 --> 00:06:18,790 93 00:06:18,790 --> 00:06:24,630 >> Also das ist, wie Sie drucken Variablen auf Ihrem Terminal. 94 00:06:24,630 --> 00:06:28,820 Sie können auch Variablen in einem String. 95 00:06:28,820 --> 00:06:33,720 So vor kurzem in PHP, die Dir vielleicht gelernt haben 96 00:06:33,720 --> 00:06:37,340 dass es String-Interpolation. 97 00:06:37,340 --> 00:06:43,830 Also, wenn Sie hier einen Blick, wenn ich erklären drei Variablen, Namen, Bibliothek, 98 00:06:43,830 --> 00:06:49,700 und Sprache, und ich puts, I einen String, hallo mein name ist. 99 00:06:49,700 --> 00:06:54,190 Und dann statt der PHP Version von String-Interpolation 100 00:06:54,190 --> 00:06:58,960 das sieht ein bisschen so aus, Sie haben ein Pfund-Zeichen, und dann 101 00:06:58,960 --> 00:07:01,220 eine geschweifte Klammer, und dann den Namen der Variablen. 102 00:07:01,220 --> 00:07:07,350 Und das ist, wie Sie ausdrucken möchten, sagen, unabhängig von der Variablenname ist. 103 00:07:07,350 --> 00:07:10,140 >> Und dann können Sie auch verketten Zeichenfolgen. 104 00:07:10,140 --> 00:07:12,890 Rubin macht es super einfach mit dem Pluszeichen. 105 00:07:12,890 --> 00:07:16,110 Sie müssen nur eine Saite auf der linken Seite und einem variablen 106 00:07:16,110 --> 00:07:18,860 oder eine andere Zeichenfolge plus einem String. 107 00:07:18,860 --> 00:07:23,500 Also, wenn ich dieses heraus zu drucken, sollte es nur sagen, Hallo, mein Name ist Robert. 108 00:07:23,500 --> 00:07:27,340 Ich werde dir beibringen in Ruby Nokogiri. 109 00:07:27,340 --> 00:07:35,370 >> Und lassen Sie uns nur bestätigen, dass die ist in der Tat die Fall-- ruby ​​Intro. 110 00:07:35,370 --> 00:07:36,480 Hallo, mein Name ist Robert. 111 00:07:36,480 --> 00:07:40,160 Ich werde dir beibringen in Ruby Nokogiri. 112 00:07:40,160 --> 00:07:45,600 >> Umzug auf, wenn else-Anweisungen, es ist ein wenig anders, 113 00:07:45,600 --> 00:07:49,800 von dem, was Sie vielleicht zu nutzen Wenn Sie in C gearbeitet 114 00:07:49,800 --> 00:07:53,200 Sie brauchen nicht die Klammern. 115 00:07:53,200 --> 00:07:55,220 Sie brauchen nicht die geschweiften Klammern. 116 00:07:55,220 --> 00:08:00,170 Und statt else if, es ist eine verkettete elsif. 117 00:08:00,170 --> 00:08:07,260 Also hier, wenn ich erklärt habe x up hier, wie wir sehen können, ist immer noch 5 x. 118 00:08:07,260 --> 00:08:11,100 Also, wenn weniger als 3 x ist, wird es kleine setzen. 119 00:08:11,100 --> 00:08:14,030 Wenn es weniger als 7, mittel, anderes groß. 120 00:08:14,030 --> 00:08:17,340 So 5 eine mittlere Anzahl. 121 00:08:17,340 --> 00:08:22,270 Und ich am Ende dieses Codeblock mit Ende. 122 00:08:22,270 --> 00:08:24,920 >> Hier ist mein for-Schleife. 123 00:08:24,920 --> 00:08:28,240 Und diese Syntax ist auch etwas anders. 124 00:08:28,240 --> 00:08:33,500 Die 0 bis fünf nur im wesentlichen ist ein Arrays von 0 bis 5 erklärt. 125 00:08:33,500 --> 00:08:36,120 Es gibt also fünf Schlitze in der Anordnung. 126 00:08:36,120 --> 00:08:40,500 Und dann für jeden Slot, dass Array, ich werde Inkrementieren i. 127 00:08:40,500 --> 00:08:46,080 So sollte 0-5 oder 0-4 zu drucken. 128 00:08:46,080 --> 00:08:49,630 Und dies sollte das Druckmedium. 129 00:08:49,630 --> 00:08:51,370 >> Und ich werde gerade Flamme durch. 130 00:08:51,370 --> 00:08:54,466 You guys Zugang haben dieser Code später. 131 00:08:54,466 --> 00:08:55,965 So euch kann dieses selbst ausführen. 132 00:08:55,965 --> 00:09:02,090 133 00:09:02,090 --> 00:09:06,620 >> Also das ist Ihre grundlegende while-Schleife. 134 00:09:06,620 --> 00:09:12,230 Dies wird nur Druck j sein, um 1 erhöht bis wir 5. 135 00:09:12,230 --> 00:09:18,320 >> Super schnell Ruby-Crash-Kurs wie man eine Funktion zu schreiben. 136 00:09:18,320 --> 00:09:24,460 Anstelle von, sagen wir, int faktoriellen Anzahl, nur müssen wir def. 137 00:09:24,460 --> 00:09:28,450 Und im Wesentlichen sind Sie Definieren Sie hier eine Funktion. 138 00:09:28,450 --> 00:09:30,600 Das wird das sein, Name der Funktion, 139 00:09:30,600 --> 00:09:34,280 und das ist, alle Variablen, die wollen in die Funktion übergeben. 140 00:09:34,280 --> 00:09:36,760 Sie können, wenn Aussagen im. 141 00:09:36,760 --> 00:09:38,030 Sie können zurückkehren. 142 00:09:38,030 --> 00:09:42,620 In diesem Fall sind wir eine rekursiv definieren 143 00:09:42,620 --> 00:09:45,000 implementiert Fakultätsfunktion. 144 00:09:45,000 --> 00:09:48,660 So nennen wir nur Funktionen in Ruby wie diese. 145 00:09:48,660 --> 00:09:54,700 >> Also, wenn ich das, ich definiert können factorial aufrufen, übergeben in 3, 146 00:09:54,700 --> 00:09:59,700 und 3 wird die Anzahl unterschiedlich sein dass ich in der Funktion verwenden. 147 00:09:59,700 --> 00:10:08,010 Und dies to_s ist nur Drehen der Rückgabewert der Fakultät in einen String. 148 00:10:08,010 --> 00:10:10,760 Ansonsten wird dies zu werfen eine Fehlermeldung, oh, ich 149 00:10:10,760 --> 00:10:13,230 können eine string-- nicht drucken denn wie Sie sich erinnern, 150 00:10:13,230 --> 00:10:18,230 puts ist string-- denn diese setzen Fakultät hat eine Reihe zurück. 151 00:10:18,230 --> 00:10:21,850 So können wir, dass zu konvertieren in einen String wie so. 152 00:10:21,850 --> 00:10:27,856 Und umgekehrt, können Sie auch konvertieren ein String in eine Ganzzahl mit to_i. 153 00:10:27,856 --> 00:10:32,650 >> So machen alles super einfach, wenn ich nur diese zu kommentieren, speichern 154 00:10:32,650 --> 00:10:36,250 und führen Sie die Fakultätsfunktion. 155 00:10:36,250 --> 00:10:39,850 Wir sollten in der Lage sein zu sehen, daß Fakultät von 3 6. 156 00:10:39,850 --> 00:10:42,790 Und das ist in der Tat wahr. 157 00:10:42,790 --> 00:10:46,160 >> Also das ist Ihre Crash-Kurs in Ruby. 158 00:10:46,160 --> 00:10:53,550 Und jetzt, da Sie wissen, Rubin, können wir weitergehen zum Grund Nokogiri Schaben einzurichten. 159 00:10:53,550 --> 00:10:58,190 Im Grunde alles, was Sie zu tun ist, haben, in Ruby, benötigen Sie die Bibliotheken. 160 00:10:58,190 --> 00:11:04,390 Und für unsere Zwecke werden wir mit Hilfe der Bibliothek openURI sowie Nokogiri. 161 00:11:04,390 --> 00:11:07,870 Und dann, was Sie do-- und es wird geben Ihnen die Syntax für this-- 162 00:11:07,870 --> 00:11:16,010 ist, dass Sie die URL viel, wie Sie es in öffnen eine cURL Anfrage, das für die C-URL steht. 163 00:11:16,010 --> 00:11:20,330 >> So können Sie die URL zu nehmen die Website in Frage. 164 00:11:20,330 --> 00:11:22,030 Sie speichern sie in einer Variablen. 165 00:11:22,030 --> 00:11:27,400 Und dann können Sie durch, dass zu suchen Variable für einzigartige HTML-Tags verwenden 166 00:11:27,400 --> 00:11:30,590 die CSS-Befehl. 167 00:11:30,590 --> 00:11:34,360 Und dann können Sie geben die Inhalte an, wo immer Sie wollen. 168 00:11:34,360 --> 00:11:35,720 Sie können in einer Datenbank zu starten. 169 00:11:35,720 --> 00:11:42,040 Sie können die Ausgabe in einer Datei, oder auch nur drucken Sie es auf den Bildschirm. 170 00:11:42,040 --> 00:11:47,290 >> So zeigen wir Ihnen, eine Grund Schaber. 171 00:11:47,290 --> 00:11:52,570 Also hier können Sie sehen, wir haben nokogiri erfordern, erfordern open-uri. 172 00:11:52,570 --> 00:11:57,150 Ihre Basis-Set up, lassen Sie uns nennen Dokument oder doc, 173 00:11:57,150 --> 00:12:07,780 gleich Nokogiri :: HTML offen, was das ist Befehl, die von der openURI bereitgestellt 174 00:12:07,780 --> 00:12:08,920 Bibliothek. 175 00:12:08,920 --> 00:12:14,000 Und wir werden auf der Suche, für die von Sie, die in der Quad leben könnte, 176 00:12:14,000 --> 00:12:21,270 für Fahrräder, die in Boston sind aufgeführt an der Boston Craigslist Bike Etappe 177 00:12:21,270 --> 00:12:22,020 Website. 178 00:12:22,020 --> 00:12:26,460 >> Also, wenn Sie nicht vertraut sind mit curl, ich werde einfach 179 00:12:26,460 --> 00:12:28,930 zeigen Ihnen, ganz schnell, was cURL tun wird. 180 00:12:28,930 --> 00:12:38,350 Wenn ich wollte, um alle der URL von erhalten die Craigslist-Website, wenn ich geben curl, 181 00:12:38,350 --> 00:12:44,950 es ist nur Dumps alle der URL von der Craigslist Fahrrad Website 182 00:12:44,950 --> 00:12:46,720 auf mein Terminal. 183 00:12:46,720 --> 00:12:49,130 Das ist nicht besonders nützlich, weil ich nicht 184 00:12:49,130 --> 00:12:53,330 wollen manuell durchlaufen und finden Sie das, was ich suche. 185 00:12:53,330 --> 00:13:01,590 Aber nur so können Sie sehen, dass ich bin eigentlich 186 00:13:01,590 --> 00:13:13,966 mit den richtigen Code, wenn man sich an der URL für Craigslist in bikes-- 187 00:13:13,966 --> 00:13:17,460 aus irgendeinem Grund ist es nicht gefunden. 188 00:13:17,460 --> 00:13:20,340 Wenn Sie auf dieser Seite sehen und man sich die URL, 189 00:13:20,340 --> 00:13:23,970 dies sollte identisch mit dem sein cURL Anfrage, die ich gerade zu senden. 190 00:13:23,970 --> 00:13:27,700 Und in der Tat, das ist, was wird im doc-Variable gespeichert. 191 00:13:27,700 --> 00:13:36,540 >> Also, wenn Sie zurück zu unserem Code zu gehen, haben wir kann dann auf dieser doc variablen Betrieb 192 00:13:36,540 --> 00:13:40,660 indem Sie CSS. 193 00:13:40,660 --> 00:13:49,240 Also sage ich wollte, um alle zu erhalten die Tags, die span.txt sind, 194 00:13:49,240 --> 00:13:51,740 und alle a-Tags innerhalb dieses Tag. 195 00:13:51,740 --> 00:13:56,150 Und warum könnten wir wollen dies tun, ich höre Sie weinen? 196 00:13:56,150 --> 00:14:02,920 >> Wenn wir Inspect Element, gibt es Ihnen eine Aufschlüsselung, wie die URL strukturiert ist. 197 00:14:02,920 --> 00:14:06,200 Wenn ich nach unten scrollen durch hier sieht man 198 00:14:06,200 --> 00:14:08,770 Was jedes dieser unterschiedlichen Elemente darstellt. 199 00:14:08,770 --> 00:14:13,410 Vielleicht möchte ich zugreifen Dieses besondere Element. 200 00:14:13,410 --> 00:14:16,820 So bin ich mit Chrome-Entwickler Werkzeuge, um Element zu inspizieren. 201 00:14:16,820 --> 00:14:22,970 Ich kann hier unten, dass diese sehen ist ein Tag innerhalb einer Zeitspanne 202 00:14:22,970 --> 00:14:26,230 Tag mit einer Klasse von txt. 203 00:14:26,230 --> 00:14:29,610 >> Also das wird zu unserem erste Operation, 204 00:14:29,610 --> 00:14:37,330 ist doc.css Spanne, die der Tag ist, dass Ich interessiere mich für alle innerhalb dieser URL. 205 00:14:37,330 --> 00:14:43,650 Und dann arbeitet .txt ähnlich wie CSS macht, wenn Sie nur schriftlich CSS 206 00:14:43,650 --> 00:14:49,630 in Ihren HTML-Dateien, die von Angabe einer Klasse. 207 00:14:49,630 --> 00:14:57,980 Also diese besondere Operator geben Sie ein span-Tag mit Klasse von txt. 208 00:14:57,980 --> 00:15:02,800 Und dann, wenn ich einen Raum zu verlassen, Diese werden dann innerhalb dieser Tag gehen 209 00:15:02,800 --> 00:15:05,170 und dann finden Sie ein ein Tag innerhalb dieses. 210 00:15:05,170 --> 00:15:10,750 >> Also, wenn ich gerade auf diese zu das Terminal, ich 211 00:15:10,750 --> 00:15:21,630 in der Lage, im Wesentlichen alles zu sehen das ist in diesem Zeitraum von Klasse txt. 212 00:15:21,630 --> 00:15:22,890 Also werden wir das mal ausprobieren. 213 00:15:22,890 --> 00:15:25,870 214 00:15:25,870 --> 00:15:27,756 ruby Craigslist-Schaber. 215 00:15:27,756 --> 00:15:31,850 216 00:15:31,850 --> 00:15:37,250 Und in der Tat, die uns alle diese Tags der verschiedenen Angebote, die 217 00:15:37,250 --> 00:15:40,400 sind auf der Craigslist-Seite. 218 00:15:40,400 --> 00:15:45,670 >> Also, wenn wir zurückgehen, können wir dies schalten in etwas mehr nützlich. 219 00:15:45,670 --> 00:15:51,050 Vielleicht wollen wir nur die Links. 220 00:15:51,050 --> 00:15:58,790 Da innerhalb dieses Tags, werde ich auch haben den Hyperlink des Weges 221 00:15:58,790 --> 00:16:00,590 dass diese Seite geht. 222 00:16:00,590 --> 00:16:09,100 Also, wenn Sie an diesem Code hier, was ich tun werde ist anstelle von CSS, 223 00:16:09,100 --> 00:16:12,380 Ich kann at_css gehen. 224 00:16:12,380 --> 00:16:16,820 Und das wird nur erhalten, die erste Element der all diese Dinge. 225 00:16:16,820 --> 00:16:20,890 Also, wenn ich, dass bis zu tun in der Code Ich habe bereits gezeigt, 226 00:16:20,890 --> 00:16:23,800 zurückgegeben, sondern alle dieser, nur wäre es 227 00:16:23,800 --> 00:16:26,850 Rückkehr der ersten einer von denen. 228 00:16:26,850 --> 00:16:31,310 Also das ist, wie die at_css Bediener arbeitet. 229 00:16:31,310 --> 00:16:39,460 >> So in den Laden wollen wir Pfad alle der ersten eines Tags. 230 00:16:39,460 --> 00:16:47,430 Und weil eine wird uns a-- so dass wir immer noch zu CSS zu verwenden. 231 00:16:47,430 --> 00:16:53,830 Weil aber das wird zu geben, uns wieder eine ganze Reihe von Tags, 232 00:16:53,830 --> 00:16:55,710 wir werden, um den Zugang gehen das erste Element. 233 00:16:55,710 --> 00:17:01,700 Also das ist ein weiterer Weg, dass man Ist ein bestimmtes Element, wenn Sie 234 00:17:01,700 --> 00:17:04,810 haben eine Reihe von Elementen, daß zurückgegeben wird, 235 00:17:04,810 --> 00:17:11,930 denn man kann alles zu behandeln, dass CSS-Renditen als Array im Wesentlichen. 236 00:17:11,930 --> 00:17:16,880 Und dann werden wir den Zugang Hypertext-Referenzattribut hierfür. 237 00:17:16,880 --> 00:17:24,810 >> Also, wenn Sie einen Blick zu nehmen, wenn Sie wirklich in der Nähe sah hier, 238 00:17:24,810 --> 00:17:28,270 wenn Sie nur im wesentlichen Schauen Sie sich die URL-Leiste, 239 00:17:28,270 --> 00:17:33,880 Dies ist der Weg, Sie gehen zu kratzen. 240 00:17:33,880 --> 00:17:41,565 So, wenn wir gerade laufen diese wieder, und stellen Sie sicher, wir haben sie als Favorit gespeichert. 241 00:17:41,565 --> 00:17:47,040 242 00:17:47,040 --> 00:17:48,300 Sie können zu Hause zu überprüfen. 243 00:17:48,300 --> 00:17:51,430 Das passt eigentlich mit diesem Link. 244 00:17:51,430 --> 00:17:55,950 >> Warum also könnten wir wollen, dies zu nutzen? 245 00:17:55,950 --> 00:17:57,870 Wenn Sie zu kratzen wollen die Seite, und es hat 246 00:17:57,870 --> 00:18:00,270 eine Seite mit Links wie Craigslist hat, können Sie 247 00:18:00,270 --> 00:18:03,210 Vielleicht möchten Sie gehen dann in jedem dieser Links 248 00:18:03,210 --> 00:18:05,120 und dann kratzen die Inhalt der, dass, die 249 00:18:05,120 --> 00:18:08,520 ist genau das, was wir tun werden. 250 00:18:08,520 --> 00:18:11,660 >> Also, wenn Sie ein haben Pfad variable, ich nicht mehr wirklich 251 00:18:11,660 --> 00:18:13,200 kümmern uns um es auszudrucken. 252 00:18:13,200 --> 00:18:15,420 Ich brauche nur, um es als eine Variable zu speichern. 253 00:18:15,420 --> 00:18:20,980 Und dann kann ich einen anderen Zugang Seite die gleiche Weise, die ich zugreifen 254 00:18:20,980 --> 00:18:22,260 doc in den ersten Platz. 255 00:18:22,260 --> 00:18:25,920 Außer mit der URL, wir gehen um String-Interpolation verwenden 256 00:18:25,920 --> 00:18:29,180 wie ich in der Beschreibung Rubin früher angehängt 257 00:18:29,180 --> 00:18:32,010 der Pfad zu dem Ende des Wurzel. 258 00:18:32,010 --> 00:18:38,970 >> Also, was es zu tun ist, das wird auf den Weg gebracht 259 00:18:38,970 --> 00:18:42,360 dass ich vorher abgekratzt und drehen Sie dann, dass 260 00:18:42,360 --> 00:18:49,580 zu einer neuen Sache, was auch immer Sie wollen, rufen es-- first_listing, zum Beispiel. 261 00:18:49,580 --> 00:18:52,900 Aber ich werde zu verlassen es zum Produkt für jetzt, 262 00:18:52,900 --> 00:18:55,420 denn das ist, was ich verwende hier. 263 00:18:55,420 --> 00:19:02,900 >> Also sage ich wollte die Beschreibung zu erhalten der ersten Buchung in Craigslist. 264 00:19:02,900 --> 00:19:04,740 So würde ich hier unten zu gehen. 265 00:19:04,740 --> 00:19:10,660 Ich würde auf auf Inspect Element wieder, denn dies ist die Beschreibung. 266 00:19:10,660 --> 00:19:14,350 Ich würde hier unten gehen und sehen, wenn ich finden kann, wie ich könnte 267 00:19:14,350 --> 00:19:16,530 in der Lage, für diese eindeutige Kennung zu suchen. 268 00:19:16,530 --> 00:19:19,530 Und in diesem Fall hat es eine ID, die uns führt 269 00:19:19,530 --> 00:19:26,810 zu unserem nächsten Weg, auf der Suche nach Tags, die mit einem Hashtag. 270 00:19:26,810 --> 00:19:30,670 >> Also für Klassen können Sie verwenden Sie den Punktoperator. 271 00:19:30,670 --> 00:19:38,610 So .txt ist die Angabe einer Klasse von txt, während die Hash gibt eine ID. 272 00:19:38,610 --> 00:19:43,720 So dass in diesem Fall ist das tag Abschnitt, und die Identifikation ist postingbody. 273 00:19:43,720 --> 00:19:47,780 >> Also das geht und findet die first-- weil wir 274 00:19:47,780 --> 00:19:51,200 Verwendung at_css-- dies geht und findet das erste Element, das 275 00:19:51,200 --> 00:19:57,180 kommt mit dem Tag des Abschnitts und die ID des postingbody. 276 00:19:57,180 --> 00:20:02,636 Und dann haben Sie das Textelement zugreifen dieser Artikel kehrte mit .text. 277 00:20:02,636 --> 00:20:06,230 Und dann haben wir speichern können dass in der Beschreibung. 278 00:20:06,230 --> 00:20:09,370 >> So, jetzt haben wir eine Variable Beschreibung, 279 00:20:09,370 --> 00:20:14,850 könnten wir in der Lage sein zu tun, sagen wir, Datei-I / O. So Datei-I / O in Ruby 280 00:20:14,850 --> 00:20:21,310 ähnelt Datei-I / O in C, wo wir eine Datei öffnen. 281 00:20:21,310 --> 00:20:23,260 Wir könnten, es zu schreiben. 282 00:20:23,260 --> 00:20:25,060 Und dann werden wir diese Datei zu schließen. 283 00:20:25,060 --> 00:20:29,660 >> So, hier sind wir nur die Benennung der Datei, eine beliebige Variable. 284 00:20:29,660 --> 00:20:33,120 Wir könnten auch haben gerade das hier. 285 00:20:33,120 --> 00:20:39,630 Wir haben eine Variable, die wir speichern der offene Datei als mit File.open. 286 00:20:39,630 --> 00:20:46,370 Und wir werden in diese Datei zu schreiben, so dass wir es zu öffnen mit der w-Operator. 287 00:20:46,370 --> 00:20:54,280 Und dann setzen wir String in die Datei mit dem .puts Betreiber. 288 00:20:54,280 --> 00:20:58,310 Und dann setzen wir die Variable, die wir wollen, um die Datei in das zu schreiben. 289 00:20:58,310 --> 00:21:00,200 Und dann werden wir schließen Sie die Datei. 290 00:21:00,200 --> 00:21:04,000 >> Also, wenn wir weitermachen und führen Sie diese, dies sollte ein Dokument erzeugen 291 00:21:04,000 --> 00:21:10,840 mit description.txt dem Willen haben diese Beschreibung in ihr. 292 00:21:10,840 --> 00:21:14,015 Also, wenn ich laufen es-- nicht. 293 00:21:14,015 --> 00:21:17,520 294 00:21:17,520 --> 00:21:23,330 Es erzeugt eine Textdatei mit, hoffnungsvoll, die gleiche Sache. 295 00:21:23,330 --> 00:21:25,850 296 00:21:25,850 --> 00:21:33,290 So könnte es ein neues Posting haben das ist, während ich habe im Gespräch zu kommen. 297 00:21:33,290 --> 00:21:36,580 Und in der Tat sieht es aus wie es hat. 298 00:21:36,580 --> 00:21:43,380 Also, wenn wir nach diesem klassischen Fahrrad, 1962 bis 1966, scheint es, dass, um zusammenzupassen. 299 00:21:43,380 --> 00:21:45,620 Und los gehts. 300 00:21:45,620 --> 00:21:51,250 >> Also das ist die grundlegendste Funktionalität von Schaben. 301 00:21:51,250 --> 00:21:57,510 Wir könnten statt haben nur das Schreiben in diese Datei, 302 00:21:57,510 --> 00:21:59,930 wir können die Dinge zu einem Array hinzuzufügen. 303 00:21:59,930 --> 00:22:03,770 Also, wenn ich erkläre drei Arrays, Titel, Preis und Beschreibung. 304 00:22:03,770 --> 00:22:06,310 305 00:22:06,310 --> 00:22:13,790 Und wir sind auf der doc Artikel Betriebs jetzt. 306 00:22:13,790 --> 00:22:16,940 Wir können gehen durch und finden Sie die gesamte span.txt. 307 00:22:16,940 --> 00:22:21,710 Und denken Sie daran, dies gibt ein Array aller Elemente, die es findet. 308 00:22:21,710 --> 00:22:27,300 Und dann in Ruby, die Sie gerade verwenden können, .each durch jedes Element durchlaufen 309 00:22:27,300 --> 00:22:28,410 des Arrays. 310 00:22:28,410 --> 00:22:31,330 Und dann für jedes Element, Ich werde einfach es nennen 311 00:22:31,330 --> 00:22:34,620 ein Link, denn das ist, im Wesentlichen, was es ist. 312 00:22:34,620 --> 00:22:46,830 >> Also, wenn ich jeden link.css dot a.hdrlnk, Dies ist eigentlich los, um den Link 313 00:22:46,830 --> 00:22:58,280 und in dieser Verbindung einen anderen finden, HTML-Element und der entsprechenden Klasse. 314 00:22:58,280 --> 00:23:04,990 Also, wenn wir uns daran erinnern, was dies war das span.txt, 315 00:23:04,990 --> 00:23:13,160 Sie sehen- können lassen Sie mich nur zurück zu gehen Echt quick-- innerhalb span.txt 316 00:23:13,160 --> 00:23:17,490 Wir haben eine Menge von anderen Klassen. 317 00:23:17,490 --> 00:23:27,180 So Inneren span.txt, wir suchen für ein einem Tag mit einer Klasse hdrlnk. 318 00:23:27,180 --> 00:23:29,890 Also lassen Sie mich nur feststellen, dass für euch ganz schnell. 319 00:23:29,890 --> 00:23:37,390 320 00:23:37,390 --> 00:23:42,850 >> So können Sie hier sehen, ist dies ein ein Tag das ist innerhalb der Spanne von Klasse txt 321 00:23:42,850 --> 00:23:44,920 das hat die Klasse hdrlnk. 322 00:23:44,920 --> 00:23:47,610 Und das ist in der Tat, was wir versuchen zu bekommen. 323 00:23:47,610 --> 00:23:54,680 >> So dass wir nun versuchen, alle zu speichern dieser Links in der Titel. 324 00:23:54,680 --> 00:23:59,545 Und dann werden wir drucken aus jedem dieser Links. 325 00:23:59,545 --> 00:24:00,360 Nein Entschuldigung. 326 00:24:00,360 --> 00:24:04,530 Wir werden zum Ausdrucken Der Preis für jede von ihnen. 327 00:24:04,530 --> 00:24:09,350 Also lassen Sie laufen wirklich schnelle und sehen, was es tut. 328 00:24:09,350 --> 00:24:14,680 329 00:24:14,680 --> 00:24:17,720 >> Also das im Grunde nur ging durch jede der Verbindungen 330 00:24:17,720 --> 00:24:27,310 wiederum abgerufen das Tag in Frage, und zog dann den Preis. 331 00:24:27,310 --> 00:24:33,910 Und es tat, weil nach Sie haben alles, was in den Titel, 332 00:24:33,910 --> 00:24:37,260 wir haben gerade den Titel dort gespeichert. 333 00:24:37,260 --> 00:24:40,180 Wir haben gerade die Verknüpfung gespeichert innerhalb des Arrays Titel. 334 00:24:40,180 --> 00:24:47,720 Und in dieser für Loop-Betrieb, wo statt zu a.hdrlnk, 335 00:24:47,720 --> 00:24:50,490 Wir suchen nach einem span.price suchen. 336 00:24:50,490 --> 00:24:56,500 Also, wenn ich kann nur wirklich schnell der Preis, wenn Sie das Element zu inspizieren, 337 00:24:56,500 --> 00:25:00,610 Sie werden sehen, dass es eine Spanne mit der Klasse der Preis. 338 00:25:00,610 --> 00:25:04,670 Und das ist im Wesentlichen, wie wir erhalten den Preis gibt. 339 00:25:04,670 --> 00:25:10,040 >> Also das ist der wirklich Grund Bei Kratzen. 340 00:25:10,040 --> 00:25:13,550 Das ist, wie Sie alle bekommen die Elemente auf einer Seite 341 00:25:13,550 --> 00:25:16,510 , dass, sagen wir, wissen Sie bereits, die URL. 342 00:25:16,510 --> 00:25:21,050 >> Wenn wir also wollen, um eine zu bekommen etwas mehr in die Tiefe, 343 00:25:21,050 --> 00:25:23,950 Wir können Seiten in Seiten zu kratzen. 344 00:25:23,950 --> 00:25:28,480 Und für dieses Beispiel werde ich sein, die Ausgabe in eine CSV-Datei. 345 00:25:28,480 --> 00:25:39,510 Also bin ich hier erfordern csv up weil Rubin nicht, in sich selbst, 346 00:25:39,510 --> 00:25:42,350 die Funktionalität nur Ausgangs CSV-Dateien. 347 00:25:42,350 --> 00:25:45,030 Also das ist super einfach. 348 00:25:45,030 --> 00:25:48,710 Lassen Sie mich nur auf den nächsten zu gehen. 349 00:25:48,710 --> 00:25:51,640 350 00:25:51,640 --> 00:25:57,170 Wir deckten Datei-I / O. Also das ist ähnlich, wie es in C ist 351 00:25:57,170 --> 00:26:00,870 Und bevor wir zu Kimono, Ich werde nur zeigen Ihnen, wirklich schnell, wie 352 00:26:00,870 --> 00:26:02,790 um Stellen innerhalb Sehenswürdigkeiten zu kratzen. 353 00:26:02,790 --> 00:26:10,040 >> So bereits gelernt, wie wir Arrays in Ruby zu erklären. 354 00:26:10,040 --> 00:26:13,280 So bin ich nur über die Vereinbarkeit eines Bündel von beliebigen Arrays 355 00:26:13,280 --> 00:26:16,310 dass ich in der Speicherung von Daten innerhalb. 356 00:26:16,310 --> 00:26:20,680 doc arbeitet genauso wie es in der vorherigen Datei gemacht haben. 357 00:26:20,680 --> 00:26:23,580 Wir gehen in, der Suche nach jede der span.txt ist. 358 00:26:23,580 --> 00:26:25,040 Wir wissen bereits, dass. 359 00:26:25,040 --> 00:26:32,130 Das ist der Behälter, in dem jedem Link hat alle Daten, die wir wollen. 360 00:26:32,130 --> 00:26:40,800 >> Also hier, was wir tun, ist für jeden Link span class txt, wir gehen in 361 00:26:40,800 --> 00:26:45,720 und wir finden, das einen Tag, Suche nach dem ersten Element davon. 362 00:26:45,720 --> 00:26:49,937 Denken Sie daran, .css ein Array zurückgibt, so kann man nicht einfach darauf zugreifen, wie es ist. 363 00:26:49,937 --> 00:26:51,520 Wir werden das erste Element zu finden. 364 00:26:51,520 --> 00:26:56,430 Auch wenn es ein Array von einem Artikel, müssen Sie diese Syntax verwenden, 365 00:26:56,430 --> 00:26:58,800 und ziehen Sie dann die href-Attribut. 366 00:26:58,800 --> 00:27:01,800 >> Also haben wir diese zuvor. 367 00:27:01,800 --> 00:27:04,440 So sollte diese bekannt vorkommen. 368 00:27:04,440 --> 00:27:14,330 Und so haben wir jetzt ein Array genannt Pfade alle unsere Links 369 00:27:14,330 --> 00:27:16,590 dass wir gehen, um verwenden möchten. 370 00:27:16,590 --> 00:27:21,350 Also, wenn wir dieses Array aller der Wege, die wir verwenden möchten, 371 00:27:21,350 --> 00:27:26,840 wir können dann einen Eintrag für jeden dieser Seiten, wenn wir öffnen die Seite. 372 00:27:26,840 --> 00:27:31,150 So wie wir sahen auch Die Syntax vor, wobei 373 00:27:31,150 --> 00:27:37,450 Dabei String-Interpolation mit dem Pfad Hier, so die Syntax ist nur für Pfad. 374 00:27:37,450 --> 00:27:41,450 Und ich konnte diesen Namen variable beliebige Namen. 375 00:27:41,450 --> 00:27:43,070 >> Dies ist das wichtigste. 376 00:27:43,070 --> 00:27:46,650 Dies ist das Array, dass Sie sein, den Zugriff auf jedes Element. 377 00:27:46,650 --> 00:27:52,400 Aber wenn man in Pfade sagen zum Weg, Dies bedeutet, für jedes Element in den Wegen, 378 00:27:52,400 --> 00:27:55,150 nennen Sie es weg, und verwenden Sie diese. 379 00:27:55,150 --> 00:27:59,266 Dies ist im Wesentlichen, wie wenn man tun eine for-Schleife, und Sie int i verwenden. 380 00:27:59,266 --> 00:28:04,000 So können Sie den Pfad als das zu behandeln Variable, ist Erhöhen. 381 00:28:04,000 --> 00:28:07,820 >> Und dann für jeden dieser, gehen Sie in jedem dieser Links. 382 00:28:07,820 --> 00:28:11,710 Weil wir es speichern in Artikelseite, so dass wir eine neue Seite erstellt, jedes Mal 383 00:28:11,710 --> 00:28:13,330 wir zugreifen. 384 00:28:13,330 --> 00:28:20,560 Und dann innerhalb dieser neuen Seite zu finden span.postingtitletext, span.price, 385 00:28:20,560 --> 00:28:22,240 und dann Abschnitt # postingbody. 386 00:28:22,240 --> 00:28:28,430 Wir haben bereits Abschnitt # postingbody abgedeckt Als wir uns der Beschreibung. 387 00:28:28,430 --> 00:28:34,890 >> So können wir gehen sehen, in der Craigslist-Post, wenn Sie gerade auf der Suche auf den Titel, 388 00:28:34,890 --> 00:28:38,810 Sie können es hier oben zu sehen, Spanne postingtitletext. 389 00:28:38,810 --> 00:28:41,390 Und das ist, warum es da ist. 390 00:28:41,390 --> 00:28:49,120 Und dann für den Preis, können Sie Zugriff mit span class der Preis. 391 00:28:49,120 --> 00:28:54,480 >> Also haben wir auch vielleicht könnte wollen die URL zu speichern. 392 00:28:54,480 --> 00:28:58,580 So dass wir nur laufen diese wieder, lagern Sie es in einem Array, 393 00:28:58,580 --> 00:29:01,150 weil, wenn Sie suchen auf Craigslist, du bist 394 00:29:01,150 --> 00:29:05,290 wahrscheinlich, einen Weg zu wünschen, wenn Sie sehen etwas, das Sie interessiert, 395 00:29:05,290 --> 00:29:06,620 gehen Sie zurück zu diesem Standort. 396 00:29:06,620 --> 00:29:10,480 So dass Sie nur wollen, um zu speichern die URL für Verweise willen. 397 00:29:10,480 --> 00:29:13,840 398 00:29:13,840 --> 00:29:19,630 >> Dies ist nur im wesentlichen eine weitere Syntax für die for-Schleife. 399 00:29:19,630 --> 00:29:26,360 Ich konnte einfach nicht statt paths.each der zum Pfad in Pfade mit Index. 400 00:29:26,360 --> 00:29:31,280 Und diese Syntax ist Rubin for-- Weg ist, was wir haben hier oben, 401 00:29:31,280 --> 00:29:33,920 Deklarieren einer Variablen für jedes Element. 402 00:29:33,920 --> 00:29:38,540 Und der Index verhält sich wie das i in C for-Schleifen. 403 00:29:38,540 --> 00:29:41,280 So können Sie Kurs zu halten was der Index ist. 404 00:29:41,280 --> 00:29:45,200 >> So, hier ist nur ein wenig bequeme Sache 405 00:29:45,200 --> 00:29:46,950 für, wenn Sie mit den Schaber sind. 406 00:29:46,950 --> 00:29:50,580 Wenn Sie Schaben Hunderte von Seiten, um sicherzustellen, dass es nicht hängen, 407 00:29:50,580 --> 00:29:53,320 Es wird nur ausgegeben, Ich bin Zugriff auf diese Seite 408 00:29:53,320 --> 00:29:55,960 und sicherstellen, dass es ist noch nicht abgeschlossen. 409 00:29:55,960 --> 00:29:59,250 Aber für unsere Zwecke, weil es gibt hundert Artikel, 410 00:29:59,250 --> 00:30:08,000 Ich werde für den Zugriff auf nur drei von ihnen , so dass wir keine Zeit mehr hier. 411 00:30:08,000 --> 00:30:13,040 >> Aber bevor wir dazu kommen, ich bin nur gehen Sie zu zeigen, wirklich schnell, 412 00:30:13,040 --> 00:30:16,940 Ich werde die Ausgabe des Titels, Preis, Beschreibung und URL 413 00:30:16,940 --> 00:30:19,600 von jedem der Links, die ich abgeschabt. 414 00:30:19,600 --> 00:30:23,720 Und dann ist dies nur das Syntax für die CSV-Bibliothek. 415 00:30:23,720 --> 00:30:25,240 Sie öffnen eine CSV. 416 00:30:25,240 --> 00:30:27,070 Dies ist, was werde ich es nennen. 417 00:30:27,070 --> 00:30:29,430 Öffnen Sie diese mit Schreib do. 418 00:30:29,430 --> 00:30:33,830 Und dann CSV wird die Datei sein, dass Sie Eingabe alles in. 419 00:30:33,830 --> 00:30:37,800 Dies ist nur eine Plausibilitätsprüfung für mich zu wissen, dass es läuft. 420 00:30:37,800 --> 00:30:41,240 Und das ist meine Plausibilitätsprüfung zu wissen, dass es abgeschlossen ist. 421 00:30:41,240 --> 00:30:46,670 Also ich bin Putting Titel in eine Zeile in das CSV, Preis, URL, Beschreibung, 422 00:30:46,670 --> 00:30:49,420 alle in Reihen in der CSV. 423 00:30:49,420 --> 00:30:53,410 >> Also, wenn wir gehen und laufen Diese now-- und ich 424 00:30:53,410 --> 00:31:04,710 stellen Sie sicher, dass ich es-- anstatt gespeichert nur Ausgeben desselben an das Terminal, 425 00:31:04,710 --> 00:31:09,750 wir sollten eine CSV haben Datei, die produziert wird. 426 00:31:09,750 --> 00:31:13,500 Also hier können wir den CSV sehen Datei, die hergestellt worden ist. 427 00:31:13,500 --> 00:31:19,330 Dies ist der Ausgang des scape, dass ich gerade lief. 428 00:31:19,330 --> 00:31:23,030 Wie Sie hier sehen können, zugreifenden Seite 0, 1, 2, 3. 429 00:31:23,030 --> 00:31:27,400 Dies sind die Titel, Preise, Beschreibungen. 430 00:31:27,400 --> 00:31:31,710 Und wenn wir uns dieser CSV Datei, die wir erzeugt haben, 431 00:31:31,710 --> 00:31:35,700 Sie sehen, hier ihre ausgegeben. 432 00:31:35,700 --> 00:31:40,350 Dies ist nicht Excel, so dass es nicht in Reihen und Spalten formatiert. 433 00:31:40,350 --> 00:31:45,140 Aber man kann sich vorstellen, wie es könnte formatiert sein. 434 00:31:45,140 --> 00:31:47,740 >> CSV steht für Comma Separated Values. 435 00:31:47,740 --> 00:31:50,090 So können Sie sich vorstellen, dies könnte eine Zeile sein. 436 00:31:50,090 --> 00:31:54,700 Und jedes Komma würde zeigen einen separaten Spalte. 437 00:31:54,700 --> 00:32:00,010 Nur ein Wort der caution-- manchmal sind Sie 438 00:32:00,010 --> 00:32:02,260 Schaben Dinge mit viel Kommas. 439 00:32:02,260 --> 00:32:05,100 Also, wenn Sie die Ausgabe sind es in eine CSV-Datei, 440 00:32:05,100 --> 00:32:10,340 Es ist vielleicht nicht das Ausgangs wie Sie vielleicht denken. 441 00:32:10,340 --> 00:32:16,770 >> Also das ist, im wesentlichen alle dort ist zu kratzen grundlegende HTML- 442 00:32:16,770 --> 00:32:20,110 Seiten mit Nokogiri. 443 00:32:20,110 --> 00:32:26,000 >> So im Internet Befinden innovative wie es kommen 444 00:32:26,000 --> 00:32:33,220 eine stärker automatisierte und GUI Version, wenn auch weniger robust 445 00:32:33,220 --> 00:32:35,540 Version von Schaben verschiedenen Websites. 446 00:32:35,540 --> 00:32:39,060 Und für unsere Zwecke Ich werde zeigen, 447 00:32:39,060 --> 00:32:42,920 eine Chrome-Erweiterung namens Kimono. 448 00:32:42,920 --> 00:32:46,690 Und alles, was Sie tun müssen ist, Sie navigieren auf die Seite, die Sie zu kratzen wollen. 449 00:32:46,690 --> 00:32:48,590 Sie klicken auf einen Bereich von Interesse. 450 00:32:48,590 --> 00:32:51,510 Sie kalibrieren, die Felder, weil es automatisch 451 00:32:51,510 --> 00:32:54,360 zu erkennen, was er denkt, Sie wollen sicher sein Kratzen, 452 00:32:54,360 --> 00:32:56,280 und dann erstellen Sie einfach eine API. 453 00:32:56,280 --> 00:33:03,700 >> Also, wenn wir waren, es zu zeigen, auf Craigslist, es tatsächlich nicht funktionieren würde. 454 00:33:03,700 --> 00:33:08,290 Und das ist, was ich zurück zu sagen über sie nicht in der als robust. 455 00:33:08,290 --> 00:33:10,320 Es hat Probleme beim Erstellen der API. 456 00:33:10,320 --> 00:33:13,400 Aber als eine Demonstration von dem, was es tun würde, 457 00:33:13,400 --> 00:33:17,460 wenn Sie die Chrome-Erweiterung zu installieren, alles, was Sie tun, ist Sie darauf klicken. 458 00:33:17,460 --> 00:33:21,750 Es Kimonofies die Seite, und dann klicken Sie auf das, was Sie script möchten. 459 00:33:21,750 --> 00:33:24,480 >> Also, wenn ich klicken Sie auf dass es zu markieren würde 460 00:33:24,480 --> 00:33:28,130 was er denkt, ich will sein Abschaben die Seite. 461 00:33:28,130 --> 00:33:33,660 Also vielleicht habe ich diese Angebote anzurufen. 462 00:33:33,660 --> 00:33:36,430 Dies ist, wie viele Artikel habe ich ausgewählt. 463 00:33:36,430 --> 00:33:43,810 Und ich kann nur bestätigen oder dementieren, einige der anderen vorgeschlagenen einsehen 464 00:33:43,810 --> 00:33:49,600 sie hinzufügen zu bekommen was wird abgeschabt werden. 465 00:33:49,600 --> 00:33:52,330 >> So, jetzt können wir sehen, gibt es hundert Elemente ausgewählt. 466 00:33:52,330 --> 00:33:58,060 Wenn ich will, um ein weiteres Feld, dass ich auch zu kratzen, die damit verbunden ist, 467 00:33:58,060 --> 00:34:02,540 sagen, ich will, um den Preis zu kratzen als gut, dann kann ich das gleiche tun. 468 00:34:02,540 --> 00:34:06,190 469 00:34:06,190 --> 00:34:11,550 >> Also hier ist eine Demonstration, wie es ist viel weniger robust, denn jetzt ist es 470 00:34:11,550 --> 00:34:15,050 Abholung der Stadt statt nur der Preis, den ich will. 471 00:34:15,050 --> 00:34:16,989 Und jetzt ist es bis 200 Dinge gerichtet. 472 00:34:16,989 --> 00:34:19,880 Sie können zurück zu gehen und zu löschen. 473 00:34:19,880 --> 00:34:21,449 Sie können es erneut versuchen. 474 00:34:21,449 --> 00:34:24,250 Aber keine Garantien. 475 00:34:24,250 --> 00:34:29,909 Dies ist, wie dies manchmal funktioniert. 476 00:34:29,909 --> 00:34:32,969 Wie Sie hier sehen, jetzt heißt es 96 hier oben. 477 00:34:32,969 --> 00:34:37,000 Es hat den größten Teil der Links abgeholt dass Sie möchten, zu kratzen, aber nicht 478 00:34:37,000 --> 00:34:39,280 zwangsläufig alle. 479 00:34:39,280 --> 00:34:43,909 >> Ein weiteres nützliches Tool von Kimono obwohl ist, können Sie den Advanced Features gehen 480 00:34:43,909 --> 00:34:47,980 Hier, auf Erweitert, und es wird Ihnen zeigen, 481 00:34:47,980 --> 00:34:53,139 der Zusammenbruch der einzigartigen Weg, um die HTML-Zugriff 482 00:34:53,139 --> 00:34:54,909 Tags, die Sie zu kratzen wollen. 483 00:34:54,909 --> 00:35:01,450 Also für Auflistungen, wenn man sich hier ansehen, wenn Sie auf div p Spanne spannen a, 484 00:35:01,450 --> 00:35:06,030 Sie tatsächlich nur verwenden können, dies in Ihrem Nokogiri Code, 485 00:35:06,030 --> 00:35:10,780 wo, bevor wir span.txt hatte zu jedem der Angebote zu gelangen. 486 00:35:10,780 --> 00:35:13,270 Wenn ich will nur den Text innerhalb der Listen, 487 00:35:13,270 --> 00:35:18,950 Ich konnte Eingangs div Raum p Raumbereich Raumbereich Raum ein, 488 00:35:18,950 --> 00:35:21,570 und es würde den gleichen Effekt zu erzielen. 489 00:35:21,570 --> 00:35:26,320 Und für diejenigen unter Ihnen, die es interessiert in mit regulären Ausdrücken, 490 00:35:26,320 --> 00:35:31,670 es geschieht, um Ihnen auch die regelmäßige Ausdruck Art von String an Eingang 491 00:35:31,670 --> 00:35:34,900 um die Dinge zu finden Sie versuchen, zu finden. 492 00:35:34,900 --> 00:35:44,130 >> So gibt es eine andere kühle Eigenschaft der Kimono, wo Sie Paginieren können, 493 00:35:44,130 --> 00:35:47,780 die nicht nur kann ich kratzen die Ergebnisse dieser Seite 494 00:35:47,780 --> 00:35:50,890 Ich kann auf diesem kleinen klicken Sie hier, Paginieren, 495 00:35:50,890 --> 00:35:55,580 geben Sie die Schaltfläche, würde nimm mich auf die nächste Seite, 496 00:35:55,580 --> 00:35:59,500 und dann wird es nur, dass sie kann auf die nächste Seite durchlaufen, 497 00:35:59,500 --> 00:36:04,120 und dann kratzen alle the-- so lange wie es ist das gleiche Format der course-- 498 00:36:04,120 --> 00:36:06,110 scape alle diese Links auch. 499 00:36:06,110 --> 00:36:15,230 >> Also, weil Kimono will nicht arbeiten mit Craigslist, was wir getan haben 500 00:36:15,230 --> 00:36:19,790 ist Ich habe die Harvard Hochrot Kimonofied. 501 00:36:19,790 --> 00:36:29,380 Ich habe einige der Art gezogen top vorgestellten Artikel, bestätigen Sie hier. 502 00:36:29,380 --> 00:36:33,090 Sagen alle diese. 503 00:36:33,090 --> 00:36:35,830 Ich habe diese API kompiliert für Sie vor der Zeit. 504 00:36:35,830 --> 00:36:38,990 Aber sonst, was Sie tun würden wird Sie nur auf Fertig. 505 00:36:38,990 --> 00:36:40,940 Geben Sie in Ihrem API Details. 506 00:36:40,940 --> 00:36:45,260 Setzen Sie ihn auf entweder automatische oder manuelle kriechen. 507 00:36:45,260 --> 00:36:48,460 So dass Sie zu aktualisieren, könnte Ihre Daten alle 15 Minuten, 508 00:36:48,460 --> 00:36:50,330 wöchentlich, täglich, was auch immer Sie wollen. 509 00:36:50,330 --> 00:36:51,160 Benennen Sie Ihre API. 510 00:36:51,160 --> 00:36:52,790 Erstellen Sie die API. 511 00:36:52,790 --> 00:36:58,460 Zu Ihrem Vorteil, die ich angelegt habe die Hochrot Titelseite API bereits. 512 00:36:58,460 --> 00:37:02,480 >> So erstellen Sie einfach ein Konto auf dem Kimono, und es 513 00:37:02,480 --> 00:37:06,240 werden alle Ihre APIs für Sie zu speichern. 514 00:37:06,240 --> 00:37:10,330 So im Wesentlichen das ist, alle Ihre getrennte verschiedene Schürfwunden. 515 00:37:10,330 --> 00:37:18,250 >> Also, wenn wir hier sehen, ist dies die Meinungen Links, die ich gesammelt habe. 516 00:37:18,250 --> 00:37:21,290 Dies sind die vorgestellten Links, die ich gesammelt habe. 517 00:37:21,290 --> 00:37:24,090 Und das sind die am meisten gelesene Links, die ich gesammelt habe 518 00:37:24,090 --> 00:37:27,120 von diesem letzten API-scape. 519 00:37:27,120 --> 00:37:30,790 >> Also, wenn Sie hier sehen können, diese wäre die vorgestellten, 520 00:37:30,790 --> 00:37:34,130 diese würden die Meinungen sein, die in diesem Beispiel, 521 00:37:34,130 --> 00:37:38,150 Ich habe sie alle in Verbindung in eine Sammlung. 522 00:37:38,150 --> 00:37:42,780 Aber wenn Sie nur spielen, um mit ihm ein wenig, können Sie es aufteilen 523 00:37:42,780 --> 00:37:45,090 und teilen sie sich jedoch Sie möchten so lange 524 00:37:45,090 --> 00:37:47,520 Der Formatierungs ist etwas anders. 525 00:37:47,520 --> 00:37:51,320 >> Einfach zu spielen, um mit diesem, das crawl einzurichten, einer der Nachteile 526 00:37:51,320 --> 00:37:58,120 wird man nur kriechen 25 Seiten zu einem Zeitpunkt. 527 00:37:58,120 --> 00:38:00,430 Das ist einer der begrenzenden Faktoren. 528 00:38:00,430 --> 00:38:03,060 Aber hier, wenn Sie es eingestellt auf Hand kriechen, diese 529 00:38:03,060 --> 00:38:06,100 ist, wie Sie es sagen, um Ihre Daten zu aktualisieren. 530 00:38:06,100 --> 00:38:11,010 Und hier können Sie Ihre crawl Geschichte zu sehen von allem, was du hast kroch. 531 00:38:11,010 --> 00:38:16,000 Und euch kann zurückgehen, melden Sie sich an, spielen, um mit all den verschiedenen Möglichkeiten, 532 00:38:16,000 --> 00:38:20,340 dass Sie zu ändern und nutzen Ihre Daten können. 533 00:38:20,340 --> 00:38:24,580 >> Kimono kann bis zu festgelegt werden kratzen Links innerhalb Links. 534 00:38:24,580 --> 00:38:29,700 Und Sie würden so vom ersten zu tun Schaben eine Liste von Links, 535 00:38:29,700 --> 00:38:35,390 und dann unter Verwendung dieses API als Startplatz für eine weitere API 536 00:38:35,390 --> 00:38:36,710 dass Sie das Skript erstellen. 537 00:38:36,710 --> 00:38:42,040 Aber das ist komplizierter als was wir in heute. 538 00:38:42,040 --> 00:38:44,270 >> Also das ist, Kimono. 539 00:38:44,270 --> 00:38:46,980 Wir werden über die Vor-und sprechen Wider Nokogiri und Kimono. 540 00:38:46,980 --> 00:38:50,380 >> Nokogiri, es ist wirklich schnell. 541 00:38:50,380 --> 00:38:51,640 Es ist einfach zu testen. 542 00:38:51,640 --> 00:38:55,910 Sie können einfach macht nichts Konsole, einfach zu konfigurieren. 543 00:38:55,910 --> 00:39:00,400 Sie können genau das, was zu entscheiden Sie kratzen und speichern möchten. 544 00:39:00,400 --> 00:39:02,060 Es gibt keine Grenzen Seite. 545 00:39:02,060 --> 00:39:08,010 Ich tatsächlich verwendet werden, dass es wie kratzen 1800 South African School Websites 546 00:39:08,010 --> 00:39:10,870 E-Mails für ein Praktikum, das ich getan habe. 547 00:39:10,870 --> 00:39:16,060 >> Also das ist möglich, wenn auch Best-Practice- wäre die Aufteilung des Skripts. 548 00:39:16,060 --> 00:39:19,310 Denn wenn es fehlschlägt, Sie etwas nicht bekommen. 549 00:39:19,310 --> 00:39:22,790 Aber wenn Sie ein hundert tun, vielleicht 200 Seiten zu einem Zeitpunkt, 550 00:39:22,790 --> 00:39:27,840 dann haben Sie eine gewisse Chance haben mindestens bekommen es Stückwerk, vor allem 551 00:39:27,840 --> 00:39:30,280 wenn Sie schlechte Internet. 552 00:39:30,280 --> 00:39:32,720 >> Leider kann es nur kratzen HTML. 553 00:39:32,720 --> 00:39:35,190 Also, wenn Sie dynamisch geladen pages-- 554 00:39:35,190 --> 00:39:39,480 und ich werde Ihnen ein Beispiel zeigen, wie Kayak in einem second-- 555 00:39:39,480 --> 00:39:42,270 Nokogiri leider kann nicht zu kratzen, dass. 556 00:39:42,270 --> 00:39:45,700 >> Aber Kimono ist auch einfach zu bedienen. 557 00:39:45,700 --> 00:39:48,330 Wie Sie gesehen haben, ist es im wesentlichen ein Punkt, und klicken Sie auf. 558 00:39:48,330 --> 00:39:50,260 Es kann JavaScript kratzen. 559 00:39:50,260 --> 00:39:53,790 Leider gibt es ein Maximum um wie viele Seiten Sie kratzen können. 560 00:39:53,790 --> 00:39:55,710 Manchmal ist es ein wenig schwer zu konfigurieren. 561 00:39:55,710 --> 00:39:57,240 Es gerät durcheinander. 562 00:39:57,240 --> 00:40:00,920 Aber es ist auf jeden Fall etwas zu prüfen, 563 00:40:00,920 --> 00:40:05,930 wenn Sie nicht versuchen, eine haben werden Super-robuste wartbar kratzen. 564 00:40:05,930 --> 00:40:09,010 Wenn Sie nur wollen, um zu bekommen alles aus einer Seite schnell, 565 00:40:09,010 --> 00:40:10,970 dann Kimono ist ein wirklich gutes Werkzeug zu benutzen. 566 00:40:10,970 --> 00:40:16,490 Und wie ich bereits erwähnt, gibt es Die erweiterte Funktion des Kimono 567 00:40:16,490 --> 00:40:19,260 dass Sie wissen, wie man zeigt, Zugriff auf das einzigartige HTML 568 00:40:19,260 --> 00:40:24,210 Element, das super nützlich ist, auch wenn Sie in Nokogiri arbeiten. 569 00:40:24,210 --> 00:40:30,370 >> Also, wenn wir zum Kayak Website, für Beispielsweise können Sie es sehen können ist-- 570 00:40:30,370 --> 00:40:31,750 oder vielleicht können Sie nicht sehen. 571 00:40:31,750 --> 00:40:38,910 Aber wenn ich Ihnen zeigen, die URL für Kayak, eigentlich ist nur der Quell-URL. 572 00:40:38,910 --> 00:40:43,800 Dies ist die URL bevor es gleichgültig mit welchen JavaScript-Skripten modifiziert 573 00:40:43,800 --> 00:40:45,350 dass sie geht. 574 00:40:45,350 --> 00:40:52,420 Und es wird anders aussehen von der Überprüfung des Elements. 575 00:40:52,420 --> 00:40:55,940 >> Also, wenn Sie über gehen und Sie Spiel dich die Inspect Element 576 00:40:55,940 --> 00:41:00,340 Code zum Quellcode, es eigentlich vor sich geht, anders zu sein. 577 00:41:00,340 --> 00:41:05,640 Und das ist im Wesentlichen, warum Nokogiri kann nicht kratzen dynamisch belasteten Standorten. 578 00:41:05,640 --> 00:41:08,810 Weil Nokogiri ist Abkratzen der Quell-URL, 579 00:41:08,810 --> 00:41:16,310 wohin Kimono ist eigentlich Schaben, was Sie sind im Wesentlichen 580 00:41:16,310 --> 00:41:18,260 Sehen Sie in der Select-Element. 581 00:41:18,260 --> 00:41:23,880 >> Also, wenn ich durch und ich gehe versuchen und Kimonofy Kayak, 582 00:41:23,880 --> 00:41:26,600 Ich kann tatsächlich durchlaufen und wählen Sie den Preis. 583 00:41:26,600 --> 00:41:32,360 Es ist ein wenig schwieriger, und in diesem Fall ist es 584 00:41:32,360 --> 00:41:36,600 tatsächlich sehen diesen Preis als verschieden von diesen. 585 00:41:36,600 --> 00:41:41,110 Während also Sie configure-- kann oder Wäre dies nicht dynamisch geladen, 586 00:41:41,110 --> 00:41:43,620 Sie könnten Nokogiri konfigurieren alle diese zu bekommen. 587 00:41:43,620 --> 00:41:48,230 >> Da die Formatierung etwas verschiedene für diese Auflistung 588 00:41:48,230 --> 00:41:51,280 als es dem Rest verglichen wird von ihnen, und Sie hier sehen können 589 00:41:51,280 --> 00:41:54,830 es ist tatsächlich weg und ausgewählt alle Flugpreise. 590 00:41:54,830 --> 00:42:01,200 Vielleicht möchte ich auswählen Flugzeit-als auch. 591 00:42:01,200 --> 00:42:04,700 Und ich kann gehen durch und Art zu konfigurieren, dass. 592 00:42:04,700 --> 00:42:06,950 Ich möchte nicht, dass. 593 00:42:06,950 --> 00:42:10,200 Ich will einfach nur die Zeit des nächsten Fluges. 594 00:42:10,200 --> 00:42:17,030 Und dann nach ein paar davon gehen durch, wird es das Bild. 595 00:42:17,030 --> 00:42:19,080 So Kimono ist ziemlich smart. 596 00:42:19,080 --> 00:42:21,900 Es ist nur nicht ganz so robust. 597 00:42:21,900 --> 00:42:26,710 >> Es gibt einige andere Alternativen, die Sie verwenden können. 598 00:42:26,710 --> 00:42:31,600 Und ich werde Ihnen es hier anzuzeigen. 599 00:42:31,600 --> 00:42:35,790 Wenn Sie mehr Komfort in sind Python anstelle von Ruby vielleicht, 600 00:42:35,790 --> 00:42:39,290 gibt es eine Bibliothek genannt Schöne Suppe. 601 00:42:39,290 --> 00:42:40,430 Sie können, dass. 602 00:42:40,430 --> 00:42:42,270 Es ist sehr ähnlich zu Nokogiri. 603 00:42:42,270 --> 00:42:44,620 Es hat ein paar mehr Funktionen. 604 00:42:44,620 --> 00:42:52,160 Sie können ein HTML-Tag zu finden und dann nach oben oder seitwärts bewegen. 605 00:42:52,160 --> 00:42:54,690 >> Es gibt PyQt. 606 00:42:54,690 --> 00:42:57,820 Dies kann tatsächlich kratzen dynamischen Websites, weil es eine Art ist 607 00:42:57,820 --> 00:43:02,540 ist ein WebKit, die zu sein vorgibt, ein Browser, ohne dass es tatsächlich 608 00:43:02,540 --> 00:43:03,670 ein Browser. 609 00:43:03,670 --> 00:43:07,490 So wäre es für alle warten JavaScript zunächst zu laden, und dann 610 00:43:07,490 --> 00:43:09,560 gehen und versuchen, und kratzen Sie die Seite. 611 00:43:09,560 --> 00:43:13,560 >> Wenn Sie Ruby bleiben wollen, können Sie kann eine Ebene über Nokogiri gehen. 612 00:43:13,560 --> 00:43:17,650 Sie können mit Capybara verwenden ein Poltergeist-Wrapper. 613 00:43:17,650 --> 00:43:22,910 Und dies kann tatsächlich im wesentlichen das gleiche tun 614 00:43:22,910 --> 00:43:26,610 wie PyQt, das ist, es ist ein WebKit. 615 00:43:26,610 --> 00:43:29,610 Es wartet auf die JavaScript zuerst laden. 616 00:43:29,610 --> 00:43:33,340 Wenn Sie rund um genug Geige mit ihm, Sie können sogar erhalten, um an Dinge klicken. 617 00:43:33,340 --> 00:43:42,780 >> Also, wenn es einen Link, ist keine klassische href wo 618 00:43:42,780 --> 00:43:46,350 der Weg ist leicht zu erreichen, und es ist eine Sache, die JavaScript erkennt 619 00:43:46,350 --> 00:43:49,490 ein Klick, können Sie tatsächlich tun. 620 00:43:49,490 --> 00:43:53,430 Je beliebter Bibliothek um einen Benutzer zu simulieren 621 00:43:53,430 --> 00:43:56,390 ist in JavaScript, die PhantomJS ist. 622 00:43:56,390 --> 00:44:01,010 Dies kann natürlich kratzen dynamischen Seiten, da dies im wesentlichen 623 00:44:01,010 --> 00:44:04,270 vorgibt, Chrome sein ohne die Benutzerschnittstelle. 624 00:44:04,270 --> 00:44:09,970 >> Und dann natürlich die robust, aber langsamste Option, 625 00:44:09,970 --> 00:44:13,260 Selen ist ein Browser-Automatisierung. 626 00:44:13,260 --> 00:44:15,550 Und leider, du wirst doch nicht zu sein, 627 00:44:15,550 --> 00:44:19,770 Lage, dies in Ihrem CS50 IDE zu tun. 628 00:44:19,770 --> 00:44:24,140 Da im Wesentlichen, was es tut, ist er startet Chrome, 629 00:44:24,140 --> 00:44:27,090 Firefox, unabhängig von Browser dass Sie verwenden möchten, 630 00:44:27,090 --> 00:44:32,570 und es verfolgt vielleicht der Maus Bewegung, was Sie geben, 631 00:44:32,570 --> 00:44:35,170 und es einfach irgendwie automatisiert diesen Prozess. 632 00:44:35,170 --> 00:44:42,070 So wurde es als eine Art entwickelt, Website Automatisierung Test-Tool. 633 00:44:42,070 --> 00:44:45,910 Aber eine Menge Leute verwenden Selen zu Websites kratzen 634 00:44:45,910 --> 00:44:49,990 dass sie sonst ein Menge Schwierigkeiten Schaben 635 00:44:49,990 --> 00:44:53,700 mit einigen dieser anderen, schnelleren Werkzeuge. 636 00:44:53,700 --> 00:44:57,530 >> Also das ist alles, was ich für Web-Scraping bekam. 637 00:44:57,530 --> 00:44:58,090 Hab Spaß. 638 00:44:58,090 --> 00:45:01,762 639 00:45:01,762 --> 00:45:02,680 >> ZIELGRUPPE: Frage. 640 00:45:02,680 --> 00:45:04,016 >> ROBERT KRABEK: Ja. 641 00:45:04,016 --> 00:45:12,840 >> Publikum: Gibt es einen Mechanismus, um Hash die Website, so konnte man im Grunde 642 00:45:12,840 --> 00:45:14,207 durch sie gehen später. 643 00:45:14,207 --> 00:45:15,040 ROBERT KRABEK: Ja. 644 00:45:15,040 --> 00:45:21,530 Also haben wir das in unserer Beispiel für beide von ihnen, 645 00:45:21,530 --> 00:45:24,980 stellen wir die gesamte Website in Dok. 646 00:45:24,980 --> 00:45:31,260 Und so konnte man eigentlich nur nehmen die Variable doc und schreiben Sie es in eine Datei. 647 00:45:31,260 --> 00:45:35,490 Also, wenn ich wollte, könnte ich schreibe es als HTML-Datei, 648 00:45:35,490 --> 00:45:39,280 und dann anstelle von OpenURI und eine cURL Anfrage, 649 00:45:39,280 --> 00:45:43,520 dann habe ich nur öffnen doc könnte HTML und dann dafür zu suchen. 650 00:45:43,520 --> 00:45:47,960 >> ZIELGRUPPE: Aber können Sie erhalten die Art von Online-Nutzung 651 00:45:47,960 --> 00:45:48,930 während Sie offline zu tun. 652 00:45:48,930 --> 00:45:51,013 Beispielsweise. Wenn Du ..... bist Fliegen für mehrere Stunden, 653 00:45:51,013 --> 00:45:54,070 Ich möchte im Grunde Archiv die gesamte Website. [UNVERSTÄNDLICH] 654 00:45:54,070 --> 00:45:58,780 >> ROBERT KRABEK: Ja, das ist exactly-- so wörtlich, was dieser tut, 655 00:45:58,780 --> 00:46:03,010 wird es nimmt alles, was das wäre bei dieser URL sein. 656 00:46:03,010 --> 00:46:11,280 Also, wenn wir liefen cURL, ist es nehmen Sie die gesamte HTML, 657 00:46:11,280 --> 00:46:14,590 und es ist Speicherung innerhalb der variablen doc. 658 00:46:14,590 --> 00:46:17,290 Also was auch immer Sie tun können die Sie mit doc tun möchten. 659 00:46:17,290 --> 00:46:18,575 Sie können die Ausgabe in eine Datei. 660 00:46:18,575 --> 00:46:19,950 ZIELGRUPPE: Aber es ist nicht verbunden. 661 00:46:19,950 --> 00:46:20,780 Es ist nicht dynamisch. 662 00:46:20,780 --> 00:46:22,770 Es ist nicht rekursiv, nicht wahr? 663 00:46:22,770 --> 00:46:24,016 Sie sehen, was ich meine? 664 00:46:24,016 --> 00:46:28,359 Ich versuche, im Grunde eine Art von Hash- die gesamte Website auf meiner Festplatte 665 00:46:28,359 --> 00:46:31,150 so dass ich im Grunde tun es für mehrere Stunden ohne Internet. 666 00:46:31,150 --> 00:46:32,025 >> ROBERT KRABEK: Richtig. 667 00:46:32,025 --> 00:46:37,140 Also, wenn ich had-- so wo ist meine Datei-I / O? 668 00:46:37,140 --> 00:46:47,766 Das ist also der Datei-I / O. So sagen statt dieser, ich dieses craigslist.html nennen. 669 00:46:47,766 --> 00:46:52,620 670 00:46:52,620 --> 00:46:53,940 Ich würde, dass zu öffnen. 671 00:46:53,940 --> 00:46:59,020 Ich würde puts doc hinein. 672 00:46:59,020 --> 00:47:00,470 Ich schließe die Datei. 673 00:47:00,470 --> 00:47:05,410 Und dann, nur weil die CS50 IDE ist auf der Wolke, das ist, was auch immer. 674 00:47:05,410 --> 00:47:07,710 Ich kann hier. 675 00:47:07,710 --> 00:47:09,320 Ich kann die Datei herunterzuladen. 676 00:47:09,320 --> 00:47:11,830 Und dann wäre auf meiner Festplatte sein. 677 00:47:11,830 --> 00:47:13,930 So können Sie es auf diese Weise. 678 00:47:13,930 --> 00:47:18,830 Oder wenn Sie zu Hause sind, nicht mit dem CS50 IDE, wie Sublime oder so etwas, 679 00:47:18,830 --> 00:47:21,900 Dies ist sogar noch einfacher, weil das ist alles vor Ort verfügbar, 680 00:47:21,900 --> 00:47:23,020 nicht mit dem Internet verbunden. 681 00:47:23,020 --> 00:47:24,720 >> ZIELGRUPPE: Ich verstehe. 682 00:47:24,720 --> 00:47:26,580 Dies ist für ein bestimmtes Problem. 683 00:47:26,580 --> 00:47:30,410 Kannst du es rekursiv zu tun, so dass Sie gehen mehrere Lagen tief Art der Sache? 684 00:47:30,410 --> 00:47:33,801 >> ROBERT KRABEK: Ich kann Ordner herunterladen wie auch, wenn das, was Sie fragen. 685 00:47:33,801 --> 00:47:34,426 ZIELGRUPPE: Ja. 686 00:47:34,426 --> 00:47:39,890 687 00:47:39,890 --> 00:47:41,440 >> ROBERT KRABEK: Kühle. 688 00:47:41,440 --> 00:47:43,182