Ruby/Network/open uri
Материал из Wiki.crossplatform.ru
Версия от 17:10, 26 мая 2010; (Обсуждение)
Do a google search and parse the result html
#!/usr/bin/env ruby require "open-uri" url = "http://www.google.ru/search?q=ruby" open(url) { |page| page_content = page.read() links = page_content.scan(/<a class=l.*?href=\"(.*?)\"/).flatten links.each {|link| puts link} }
Get a file from a URL
require "open-uri" f = open("http://www.rubyinside.ru/test.txt") puts "The document is #{f.size} bytes in length" f.each_line do |line| puts line end
open in a block style:
require "open-uri" open("http://www.rubyinside.ru/test.txt") do |f| puts f.readlines.join end
Opening a URI
require "open-uri" url = "http://www.google.ru/search?q=ruby" open(url) { |page| page_content = page.read( ) links = page_content.scan(/<a class=l.*?href=\"(.*?)\"/).flatten links.each {|link| puts link} }
send extra header fields with an HTTP request by supplying an optional hash parameter to open
require "open-uri" f = open("http://www.rubyinside.ru/test.txt", {"User-Agent" => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"}) puts f.read
The open-uri Library
require "open-uri" f = open("http://www.rubyinside.ru/test.txt") puts f.readlines.join
the shortest open-uri code possible
require "open-uri" puts URI.parse("http://www.rubyinside.ru/test.txt").open.read
use methods associated with the object it returns to find out particulars about the HTTP (or FTP) response itself.
require "open-uri" f = open("http://www.rubyinside.ru/test.txt") puts f.content_type puts f.charset puts f.last_modified
use open directly upon URI objects
require "open-uri" url = URI.parse("http://www.rubyinside.ru/test.txt") url.open { |f| puts f.read }
Use openuri to open a web link
require "openuri" open("http://www.google.ru") do |f| puts f.read.scan(/<img src="(.*?)"/m).uniq end