我目前正在使用以下方法获取页面的源代码:
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/