Получить HTML с сайта с рубином на рельсах - PullRequest
5 голосов
/ 04 сентября 2010

Как мне получить данные страницы другого веб-сайта где-нибудь в Интернете с помощью ruby ​​on rails?

Ответы [ 4 ]

7 голосов
/ 04 сентября 2010

Вы можете использовать httparty , чтобы просто получить данные

Пример кода (из пример ):

require File.join(dir, 'httparty')
require 'pp'

class Google
  include HTTParty
  format :html
end

# google.com redirects to www.google.com so this is live test for redirection
pp Google.get('http://google.com')

puts '', '*'*70, ''

# check that ssl is requesting right
pp Google.get('https://www.google.com')

Nokogiri действительно превосходен при разборе этих данных. Вот пример кода из Railscast :

url = "http://www.walmart.com/search/search-ng.do?search_constraint=0&ic=48_0&search_query=batman&Find.x=0&Find.y=0&Find=Find"
doc = Nokogiri::HTML(open(url))
puts doc.at_css("title").text
doc.css(".item").each do |item|
  title = item.at_css(".prodLink").text
  price = item.at_css(".PriceCompare .BodyS, .PriceXLBold").text[/\$[0-9\.]+/]
  puts "#{title} - #{price}"
  puts item.at_css(".prodLink")[:href]
end
5 голосов
/ 04 сентября 2010

Используйте Net/HTTP (например, прочитайте этот код ):

require "net/https"

http = Net::HTTP.new "google.com", 80
request = Net::HTTP::Get.new "/"
response = http.request request

puts response.code
puts response.body
4 голосов
/ 04 сентября 2010

Net :: HTTP поставляется в стандартной библиотеке, это плюс, но есть классные библиотеки более высокого уровня, на которые вы можете взглянуть, например rest-client :

RestClient.get('http://example.com/resource', params: {x: "1", y: "2"})
3 голосов
/ 04 сентября 2010

Мне самому нравится OpenURI, если просто получить контент без суеты.

Просто добавьте require 'open-uri' в среду и затем выполните open('http://domain.tld/document.html').read.

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