Получение содержимого веб-страницы с помощью Ruby - у меня проблемы
Я хочу загрузить контент с этой * страницы. Все, что я искал, дает решение синтаксического разбора элементов CSS; но на этой странице нет.
Здесь единственный код, который я нашел, который выглядел так, должен работать:
file = File.open('http://hiscore.runescape.com/index_lite.ws?player=zezima', "r")
contents = file.read
puts contents
Ошибка:
tracker.rb:1:in 'initialize': Invalid argument - http://hiscore.runescape.com/index_lite.ws?player=zezima (Errno::EINVAL)
from tracker.rb:1:in 'open'
from tracker.rb:1
* http://hiscore.runescape.com/index_lite.ws?player=zezima
Если вы попытаетесь отформатировать это как ссылку в сообщении, он почему-то не распознает символ подчеркивания (_) в URL-адресе.
Ответы
Ответ 1
Вы действительно хотите использовать open(), предоставляемый классом Kernel, который может читать с URI, вам нужно сначала сначала использовать библиотеку OpenURI:
require 'open-uri'
Используется так:
require 'open-uri'
file = open('http://hiscore.runescape.com/index_lite.ws?player=zezima')
contents = file.read
puts contents
Этот связанный поток SO охватывает тот же вопрос:
Откройте поток ввода-вывода из локального файла или URL-адреса
Ответ 2
Соответствующим способом получения содержимого веб-сайта является модуль NET:: HTTP в Ruby:
require 'uri'
require 'net/http'
url = "http://hiscore.runescape.com/index_lite.ws?player=zezima"
r = Net::HTTP.get_response(URI.parse(url).host, URI.parse(url).path)
File.open() не поддерживает URI.
С наилучшими пожеланиями,
Fabian
Ответ 3
Пожалуйста, используйте open-uri, его поддержку как uri, так и локальных файлов
require 'open-uri'
contents = open('http://www.google.com') {|f| f.read }