Ruby/Network/open uri

Материал из Wiki.crossplatform.ru

Перейти к: навигация, поиск

Содержание

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