Ruby - 检查特定页内结果

时间:2017-12-01 11:46:06

标签: ruby url rubygems

我是一个新手,并制定了一个ruby文件,允许检查网站是否有效或者是否返回404错误。它看起来像这样:

#!/usr/bin/env ruby
# encoding: utf-8

urls = %w(
https://www.nytimes.com/2017/11/30/world/americas/argeeentine-navy-gives-up-hope-of-finding-submarine-crew-alive.html
)

require "open-uri"
require "nokogiri"

missing = []
urls.each do |url|
  begin
    open(url).read.include?("Argentina")
  rescue OpenURI::HTTPError => e
    if e.message == "404 Not Found"
      missing << url
      puts "#{url} is missing!"
    end
  end
end

现在,我想更改脚本并检查一长串网站网址,这些网址不提供404消息,而是一个&#34;常规&#34;网站上写着&#34;此内容目前无法使用&#34;。

因此,我的问题是:我如何更改上面的代码,以便得到结果,表明列表中提供该消息的那些URL&#34;此内容目前不可用&#34; ?

提前感谢您提供任何帮助 - 也就我的问题对于经验丰富的程序员而言是多么愚蠢!

非常感激! 汤姆

1 个答案:

答案 0 :(得分:1)

这是一个快速而简单的实现:

library("raster")

tmp_dir = tempdir()
tmp     = tempfile(tmpdir = tmp_dir, fileext = ".zip")

download.file(
  "http://biogeo.ucdavis.edu/data/climate/cmip5/10m/cc26bi50.zip",
  destfile = tmp
)
unzip(tmp, exdir = tmp_dir)

f = list.files(tmp_dir, pattern = ".tif$", full.names = TRUE)
r = lapply(f, raster)

# Solution one
lapply(r, function(x) {
  writeRaster(x, filename = x@file@name, format = "ascii", overwrite = TRUE)
})

# solution two
library("purrr")
walk2(r, f, function(x, y) {
  writeRaster(x = x, filename = y, format = "ascii")
})

作为检测&#34;非解析&#34;的逻辑网页增长,您可能希望开始将这些检查抽象为其他方法/类。