По утомительным причинам сделать с Hpricot, я должен записать функцию, которая передается URL и возвращает целое содержание страницы как единственная строка.
Я близок. Я знаю, что должен использовать OpenURI, и он должен выглядеть примерно так:
require 'open-uri'
open(url) {
# do something mysterious here to get page_string
}
puts page_string
Кто-либо может предложить то, что я должен добавить?
Метод open
передает IO
представление ресурса вашему блоку, когда он уступает. Вы можете прочитать его, используя метод IO # read
open([mode [, perm]] [, options]) [{|io| ... }]
open(path) { |io| data = io.read }
Вы можете сделать то же самое без OpenURI:
require 'net/http'
require 'uri'
def open(url)
Net::HTTP.get(URI.parse(url))
end
page_content = open('http://www.google.com')
puts page_content
Или, более кратко:
Net::HTTP.get(URI.parse('http://www.google.com'))
require 'open-uri'
open(url) {|f| #url must specify the protocol
str = f.read()
}
require 'open-uri'
open(url) do |f|
page_string = f.read
end
См. Также документацию по классу ввода-вывода