如何在Ruby中获取网页的HTML源代码

Eri*_*ric 22 html ruby

在Firefox或Safari等浏览器中,如果网站处于打开状态,我可以右键单击该页面,然后选择"查看页面源"或"查看源"等内容.这显示了页面的HTML源代码.

在Ruby中,是否有一个函数(可能是一个库)允许我将这个HTML源存储为变量?像这样的东西:

source = view_source(http://stackoverflow.com)
Run Code Online (Sandbox Code Playgroud)

源将是这个文本:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Stack Overflow</title>
etc
Run Code Online (Sandbox Code Playgroud)

rob*_*rit 27

使用Net :: HTTP:

require 'net/http'

source = Net::HTTP.get('stackoverflow.com', '/index.html')
Run Code Online (Sandbox Code Playgroud)


Nak*_*lon 17

require 'open-uri'
source = open(url){|f|f.read}
Run Code Online (Sandbox Code Playgroud)

UPD:更现代的语法

require 'open-uri'
source = open(url, &:read)
Run Code Online (Sandbox Code Playgroud)

  • 更短:`source = open(url).read` (2认同)
  • @Mark托马斯,它不会关闭连接. (2认同)
  • 这两个都会关闭连接吗? (2认同)

Mat*_*ose 13

require 'open-uri'
source = open(url).read
Run Code Online (Sandbox Code Playgroud)

简短,简单,甜美.

  • 不会关闭连接. (6认同)

Ski*_*ick 7

是的,像这样:

require 'open-uri'

open('http://stackoverflow.com') do |file|
    #use the source Eric
    #e.g. file.each_line { |line| puts line }
end
Run Code Online (Sandbox Code Playgroud)