Получите содержание URL как строка

По утомительным причинам сделать с Hpricot, я должен записать функцию, которая передается URL и возвращает целое содержание страницы как единственная строка.

Я близок. Я знаю, что должен использовать OpenURI, и он должен выглядеть примерно так:

require 'open-uri'
open(url) {
  # do something mysterious here to get page_string
}
puts page_string

Кто-либо может предложить то, что я должен добавить?

24
задан the Tin Man 2 April 2016 в 21:36
поделиться

4 ответа

Метод open передает IO представление ресурса вашему блоку, когда он уступает. Вы можете прочитать его, используя метод IO # read

open([mode [, perm]] [, options]) [{|io| ... }] 
open(path) { |io| data = io.read }
21
ответ дан 28 November 2019 в 22:14
поделиться

Вы можете сделать то же самое без 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'))
55
ответ дан 28 November 2019 в 22:14
поделиться

require 'open-uri'
open(url) {|f|  #url must specify the protocol
str = f.read()
}
-2
ответ дан 28 November 2019 в 22:14
поделиться
require 'open-uri'
open(url) do |f|
  page_string = f.read
end

См. Также документацию по классу ввода-вывода

11
ответ дан 28 November 2019 в 22:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: