ruby - 使用 mechanize 测试页面是否存在

标签 ruby mechanize

我想在下载之前测试一个网址是否存在 我通常这样做

agent=Mechanize.New
page=agent.get("www.some_url.com/atributes")

但我想在下载页面之前测试该页面是否归属于该网址

最佳答案

查看页面是否存在(以及您可以通过互联网访问该页面)的唯一方法是执行实际请求。您可以首先执行 HTTP HEAD 请求,该请求仅请求 header ,而不请求实际内容:

url = "www.some_url.com/atributes"

agent = Mechanize.New

begin
  agent.head(url)
  page_exists = true
rescue SocketError
  page_exists = false
end

if page_exists
  page = agent.get(url)
  # do something with page ...
end

但是话又说回来,您可以直接使用 GET 请求摆脱额外的请求并避免错误:

url = "www.some_url.com/atributes"

agent = Mechanize.New

begin
  page = agent.get(url)
  # do something with page ...
rescue SocketError
  puts "There is no such page."
end

关于ruby - 使用 mechanize 测试页面是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25075419/

相关文章:

python - 使用 mechanize 访问经过 HTTP Basic 身份验证的网页

ruby - 使用 Mechanize 获取第二个元素

Python Mechanize 向没有 ID 或名称的表单输入添加值

python - 在 HttpResponse() 调用后,Django View 没有得到完全处理

ruby-on-rails - has_many :through broke some code

ruby - 是否可以将 if 语句重构为 boolean 运算符,如 !=、==、&& 和 ||?

ruby - 将空格打印并显示为字符

Perl WWW::Mechanize foreach 循环跟踪链接并查看它们是否给出 401 响应

ruby-on-rails - 需要循环遍历rspec中的一个数组,测试不运行

ruby 套接字 : Error (EINVAL) while trying to bind a sending socket to a port