ruby - 基于时间戳有条件地重新下载网站数据

标签 ruby mechanize

如果我的本地副本是 ,我会以简单的形式从网站上的帐户重新下载文件。数据.csv 超过 1 小时:

# Mission: make sure data*.csv is most current whenever called
def updateData  
  return if File.exists?("data.csv") && (Time.now - File::Stat.new("data.csv").mtime) < 3600

  $agent = Mechanize.new
  $agent.pluggable_parser.default = Mechanize::Download  

  $page = $agent.get("http://website.com/login.jsp")
# login etc.
  $agent.get("/getdata!downLoad.action").save("data.csv")
end

但是他们提到我的数据更新每天只发布三次:16:45、18:45 和 22:45。

题:
仅当我的副本早于上次更新时间(包括昨天)时,如何使我的代码更智能地获取更新?

一些数组["16:45", "18:45", "22:45"]可以提供帮助,但我不确定 Ruby 的下一步是什么。

最佳答案

像这样的事情可以做到:

require 'time'

current = Time.now.strftime("%H%M")
past = File::Stat.new("data.csv").mtime.strftime("%H%M")
if (current > '2245' and past < '2245') or (current > '1845' and past < '1845') or (current > '1645' and past < '1645') or (File::Stat.new("data.csv").mtime.day != Time.now.day and current > '1645')
    #update
end

您还需要更改存储方式 mtime .它需要采用 hhmm 的形式.你会设置 mtime像这样mtime = Time.now.hour.to_s + Time.now.min.to_s创建 csv 时。

关于ruby - 基于时间戳有条件地重新下载网站数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11559026/

相关文章:

python - 能不能只获取网页的header信息,不获取body? ( Mechanize )

Selenium Webdriver 与 Mechanize

python - 网页抓取 Yelp,我如何检索每个单独评分的值?

ruby-on-rails - 使用简单形式的 gem f.association 为新操作提供 NoMethodError

ruby-on-rails - 带有 ruby​​ on rails 形式的正则表达式模式

ruby - 关于 ruby​​ 中重写 + 运算符的问题

ruby-on-rails - 为不使用 Mechanize/Ruby 表单的站点输入登录信息

c++ - ruby 中使用 C++ .so 库的未解析符号

ruby - 使用 Ruby SDK 从 SNS 接收消息时的 AWS SQS JSON 格式

html - 有没有办法用 Mechanize 处理动态加载的内容?