使用 Ruby,获取给定 URL 的内容类型的最有效方法是啥?

Posted

技术标签:

【中文标题】使用 Ruby,获取给定 URL 的内容类型的最有效方法是啥?【英文标题】:Using Ruby, what is the most efficient way to get the content type of a given URL?使用 Ruby,获取给定 URL 的内容类型的最有效方法是什么? 【发布时间】:2011-09-18 01:08:41 【问题描述】:

使用 Ruby 获取给定 URL 的内容类型的最有效方法是什么?

【问题讨论】:

【参考方案1】:

如果我想要简单的代码,我会这样做:

require 'open-uri'
str = open('http://example.com')
str.content_type #=> "text/html"

最大的优势是它遵循重定向。

如果您要检查一堆 URL,您可能需要在找到所需内容后调用句柄上的 close

【讨论】:

酷,不知道open-uri :) 结果找到了这篇博文。很方便:juretta.com/log/2006/08/13/ruby_net_http_and_open-uri Open-URI 是一个很棒的小工具,当您想要透明地处理 URL 时,无论它们是“file:”、“ftp:”还是“http:”。它也处理超时和重定向,所以它对我做的大多数事情都有好处,除非我需要对连接进行细粒度控制,然后我要么使用 Net::HTTP,要么使用 Typhoeus 或 Curb 之类的东西或其中之一宝石。 要跟踪重定向,您可能需要使用github.com/jaimeiniesta/open_uri_redirections 这为我节省了很多时间来处理端口 80 被拒绝的连接。谢谢! 缺点是您必须将整个目标下载为临时文件才能获取其类型。 ://【参考方案2】:

看看Net::HTTP 库。

require 'net/http'

response = nil
uri, path = 'google.com', '/'
Net::HTTP.start(uri, 80)  |http| response = http.head(path) 
p response['content-type']

【讨论】:

以上是关于使用 Ruby,获取给定 URL 的内容类型的最有效方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

ruby 使用Capybara w / Poltergeist(PhantomJS)从位于给定URL的HTML页面的主体中抓取文本内容。

如何将在从控制台获取的 URL 中找到的特定字符串替换为在 Ruby 文本文件中写入的每一行中找到的文件内容?

无法获取给定 url 的内容 - Heroku 上的 Django CKEditor

从 Google Apps 脚本上的 URL 获取文件 ID 的最简单方法

如何在 Ruby 中给定 URL 以 base64 编码媒体

在 Ruby 中,获取数组中最大值的索引的最简洁方法是啥?