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

o0lyfsai  于 2023-01-16  发布在  Ruby
关注(0)|答案(8)|浏览(131)
    • 此问题在此处已有答案**:

Equivalent of cURL for Ruby?(12个答案)
七年前就关门了。
在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
ruyhziif

ruyhziif1#

使用Net::HTTP

require 'net/http'

source = Net::HTTP.get('stackoverflow.com', '/index.html')
kfgdxczn

kfgdxczn2#

require "open-uri"
source = open(url){ |f| f.read }

UPD:Ruby〉=1.9允许语法

require "open-uri"
source = open(url, &:read)

UPD:Ruby〉=3.0需要语法

require "open-uri"
source = URI(url).open(&:read)
bgtovc5b

bgtovc5b3#

require 'open-uri'
source = open(url).read

简短,简单,甜美。

7uzetpgm

7uzetpgm4#

是的,就像这样:

require 'open-uri'

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

f87krz0w5#

require 'mechanize'

agent = Mechanize.new
page = agent.get('http://google.com/')

puts page.body

然后你也可以用mechanize做很多其他很酷的事情。

ep6jt1vc

ep6jt1vc6#

您可以使用内置的Net::HTTP

>> require 'net/http'
>> Net::HTTP.get 'stackoverflow.com', '/'

或者“Equivalent of cURL for Ruby?“中建议的几个库之一。

yduiuuwa

yduiuuwa7#

另一个你可能会感兴趣的是Nokogiri。它是一个HTML、XML等解析器,非常容易使用。他们的首页有一些示例代码,应该可以让你开始,看看它是否适合你的需要。

dgtucam1

dgtucam18#

如果安装了cURL,您只需:

url = 'http://stackoverflow.com'
html = `curl #{url}`

如果你想使用纯Ruby,请查看Net::HTTP库:

require 'net/http'
stack = Net::HTTP.new 'stackoverflow.com'
# ...later...
page = '/questions/4217223/how-to-get-the-html-source-of-a-webpage-in-ruby'
html = stack.get(page).body

相关问题