Как мне получить данные страницы другого веб-сайта где-нибудь в Интернете с помощью ruby on rails?
Вы можете использовать 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
Используйте Net/HTTP (например, прочитайте этот код ):
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
Net :: HTTP поставляется в стандартной библиотеке, это плюс, но есть классные библиотеки более высокого уровня, на которые вы можете взглянуть, например rest-client :
RestClient.get('http://example.com/resource', params: {x: "1", y: "2"})
Мне самому нравится OpenURI, если просто получить контент без суеты.
Просто добавьте require 'open-uri' в среду и затем выполните open('http://domain.tld/document.html').read.
require 'open-uri'
open('http://domain.tld/document.html').read