在Firefox或Safari等浏览器中,如果网站处于打开状态,我可以右键单击该页面,然后选择“查看页面源”或“查看源”等内容。这显示了页面的HTML源代码。
在Ruby中,是否有一个函数(可能是一个库)允许我将这个HTML源存储为变量?像这样:
source = view_source(http://stackoverflow.com)
源将是此文本:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Stack Overflow</title>
etc
答案 0 :(得分:27)
使用Net::HTTP:
require 'net/http'
source = Net::HTTP.get('stackoverflow.com', '/index.html')
答案 1 :(得分:16)
require 'open-uri'
source = open(url){|f|f.read}
UPD:更现代的语法
require 'open-uri'
source = open(url, &:read)
答案 2 :(得分:13)
require 'open-uri'
source = open(url).read
简短,简单,甜蜜。
答案 3 :(得分:7)
是的,就像这样:
require 'open-uri'
open('http://stackoverflow.com') do |file|
#use the source Eric
#e.g. file.each_line { |line| puts line }
end
答案 4 :(得分:3)
您可以使用内置Net::HTTP:
>> require 'net/http'
>> Net::HTTP.get 'stackoverflow.com', '/'
或“Equivalent of cURL for Ruby?”中建议的几个库中的一个。
答案 5 :(得分:3)
您可能感兴趣的另一件事是Nokogiri。它是一个非常容易使用的HTML,XML等解析器。他们的头版有一些示例代码,可以帮助您入门,看看它是否适合您的需求。
答案 6 :(得分:3)
require 'mechanize'
agent = Mechanize.new
page = agent.get('http://google.com/')
puts page.body
然后你可以用机械化做很多其他很酷的东西。
答案 7 :(得分:1)