Was ist, wenn ich Ruby verwenden möchte, um Dateien im Internet herunterzuladen und lokal zu speichern?
Das erste ist ein Beispiel für eine Textdatei. Wenn Sie Wikipedia --HyperText Markup Language als HTML-Datei herunterladen möchten, schreiben Sie wie folgt.
require 'open-uri'
uri_str = 'https://ja.wikipedia.org/wiki/HyperText_Markup_Language'
URI.open(uri_str) do |res|
IO.copy_stream(res, 'HyperText_Markup_Language.html')
end
Gleiches gilt für Binärdateien wie Bilder. Laden Sie das Bild als Beispiel für eine PNG-Datei in Wikipedia - Portable Network Graphics herunter.
require 'open-uri'
uri_str = 'https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png'
URI.open(uri_str) do |res|
IO.copy_stream(res, 'PNG_transparency_demonstration_1.png')
end
Die open-uri
-Bibliothek ist ein Wrapper wie Net :: HTTP`` Net :: HTTPS`` Net :: FTP
, mit dem Sie http- und https-URLs wie normale Dateien behandeln können. Diese Bibliothek definiert "Kernel # open" neu, sodass Sie auch schreiben können:
require 'open-uri'
uri_str = 'https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png'
open(uri_str) do |res|
IO.copy_stream(res, 'PNG_transparency_demonstration_1.png')
end
Ab Ruby 2.7 ist das Öffnen von URIs mit "Kernel # open", das um "open-uri" erweitert wird, jedoch veraltet. Wenn ich den obigen Code unter Ruby 2.7 ausführe, wird folgende Warnung angezeigt:
warning: calling URI.open via Kernel#open is deprecated, call URI.open directly or use URI#open
Dies bedeutet nicht, dass es nicht nur aufgrund der Warnung funktioniert, es wird jedoch empfohlen, "URI # open" oder "OpenURI # open_uri" zu verwenden.
$ ruby -v
ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-darwin18