gpt4 book ai didi

ruby-on-rails - 如何自动运行 Ruby 脚本?

转载 作者:数据小太阳 更新时间:2023-10-29 07:52:14 27 4
gpt4 key购买 nike

我写了一个 ruby​​ 脚本(下面的代码)从 Deliveroo.co.uk 抓取。

现在我通过转到终端并输入“ruby ....rb”来手动运行它。

如何实现自动化以便该脚本每小时自动运行一次?另外,如何在不覆盖之前的输出的情况下保存每次运行的输出?

代码如下。谢谢。

require 'open-uri'
require 'nokogiri'
require 'csv'

# Store URL to be scraped
url = "https://deliveroo.co.uk/restaurants/london/maida-vale?postcode=W92DE"

# Parse the page with Nokogiri
page = Nokogiri::HTML(open(url))

# Display output onto the screen
name =[]
page.css('span.list-item-title.restaurant-name').each do |line|
name << line.text.strip
end

category = []
page.css('span.restaurant-detail.detail-cat').each do |line|
category << line.text.strip
end

delivery_time = []
page.css('span.restaurant-detail.detail-time').each do |line|
delivery_time << line.text.strip
end

distance = []
page.css('span.restaurant-detail.detail-distance').each do |line|
distance << line.text.strip
end

status = []
page.css('li.restaurant--details').each do |line|
if line.attr("class").include? "unavailable"
sts = "closed"
else
sts = "open"
end
status << sts
end

# Write data to CSV file
CSV.open("deliveroo.csv", "w") do |file|
file << ["Name", "Category", "Delivery Time", "Distance", "Status"]
name.length.times do |i|
file << [name[i], category[i], delivery_time[i], distance[i], status[i]]
end
end

最佳答案

有两个问题,我将在下面尝试回答。

如何定期运行:您正在寻找的是一个 cronjob,有很多资源可以创建一个。

查看 cron 或像 whenever/clockwork 这样的 gem。

在多次运行之间保存输出:为了保存输出,您可以直接用 ruby​​ 写入一个文件,这与您现在正在做的非常相似。

您现在保存它的方式是:

CSV.open("deliveroo.csv", "w") do |file|

"w" 打开文件并覆盖其中的任何内容,请尝试使用 "a"(追加)。

CSV.open("deliveroo.csv", "a") do |file|

在这里阅读更多关于以不同模式打开文件的信息:File opening mode in Ruby

关于ruby-on-rails - 如何自动运行 Ruby 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32684642/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com