我是一个新手,并制定了一个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; ?
提前感谢您提供任何帮助 - 也就我的问题对于经验丰富的程序员而言是多么愚蠢!
非常感激! 汤姆
答案 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;的逻辑网页增长,您可能希望开始将这些检查抽象为其他方法/类。