Получение контента веб-страницы с помощью Ruby - у меня проблемы - PullRequest
12 голосов
/ 06 декабря 2009

Я хочу получить контент с этой * страницы. Все, что я посмотрел, дает решение для анализа элементов 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.

Ответы [ 3 ]

38 голосов
/ 06 декабря 2009

Вы действительно хотите использовать 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-адреса

6 голосов
/ 06 декабря 2009

Пожалуйста, используйте open-uri, его поддержка как uri, так и локальных файлов

require 'open-uri'
contents  = open('http://www.google.com') {|f| f.read }
6 голосов
/ 06 декабря 2009

Подходящим способом получения содержимого сайта является модуль 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...