ruby - Net::HTTP 获取源代码和状态

标签 ruby

我目前正在使用以下方法获取页面的源代码:

Net::HTTP.get(URI.parse(page.url))

我还想获取 HTTP 状态,而无需发出第二个请求。

有没有办法用另一种方法做到这一点?我一直在查看文档,但似乎找不到我要找的东西。

最佳答案

在我看来,除非您需要一些真正的低级访问或控制,否则最好使用 Ruby 的内置 Open::URI模块:

require 'open-uri'
io = open('http://www.example.org/') #=> #<StringIO:0x0000010103e240>
body = io.read[0, 50] #=> "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Trans"
io.status #=> ["200", "OK"]
io.base_uri #=> #<URI::HTTP:0x00000100bf2ad8 URL:http://www.iana.org/domains/example/>

请注意 base_uri 的输出与我传入的 URL 不同。Open::URI 遵循重定向,而 Net::HTTP 不会这样做。如果您在代码中加入大量随机 URL 并且不想编写重定向处理程序,那么这会带来很大的返回。

关于ruby - Net::HTTP 获取源代码和状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6298281/

相关文章:

java - C 中的 Ruby block /Java 闭包

ruby - Sqlite+ Sinatra - 数据库文件未使用 DataMapper.setup 创建

javascript - 使用 Selenium 模拟将文件拖到上传元素上

swift - FaSTLane "nokogiri requires Ruby version >= 2.3.0."错误

Ruby 正则表达式似乎看不到 `dash`

ruby - 有哪些很好地使用 Cucumber 和 RSpec 的开源 Ruby 项目示例?

ruby - Chef : no implicit conversion of String into Integer TypeError

java - 用于 Java、Ruby、Python 的 HTML Agility Pack 或 HTML Screen Scraping 库?

ruby-on-rails - 错误 : Error installing rails on ubuntu

ruby - 通过 git bash 找不到 gem 命令