gpt4 book ai didi

ruby-on-rails - 从外部网页到 db 中存储的 HTML

转载 作者:数据小太阳 更新时间:2023-10-29 08:57:32 25 4
gpt4 key购买 nike

我需要读取一个网站的内容,并保存该页面的一部分的 HTML。

例如,假设我只想获取此页面上运动员的描述:https://www.olympic.org/usain-bolt : section.text-content 元素。

我如何在 Rails 中将该 HTML 存储在我的数据库中,以便稍后能够通过 API 提供它?

有人知道这件事吗?

最佳答案

您可以轻松地打开 url、解析 html 并访问您指向的元素,例如:

require 'nokogiri'
require 'open-uri'

url = 'https://www.olympic.org/usain-bolt'
doc = Nokogiri.HTML(open(url))
puts doc.css('section.text-content').text

因为您已经有了数据,所以您需要一个模型来存储,您可以创建一个新的模型,就像名为 Athlete 的示例一样,使用 rails generate 命令并迁移,例如

$ rails g model Athlete description:text
$ rails db:migrate

描述是一个文本数据类型属性,允许您存储大文本作为描述。

然后你需要插入它,或者更新它。您可以创建新记录,然后更新它。在 Rails 控制台中,只需:

Athlete.create

这将创建一个没有描述的新运动员,但需要通过其 ID 获取它。之后就可以创建任务了,在lib/tasks文件夹下,创建一个.rake扩展名的文件,添加自己的代码,使用创建任务的方式,比如:

require 'nokogiri'
require 'open-uri'

namespace :feed do
desc 'Gets the athlete description and insert it in database.'
task athlete_description: :environment do
url = 'https://www.olympic.org/usain-bolt'
doc = Nokogiri.HTML(open(url))
description = doc.css('section.text-content').text
Athlete.find(1).update description: description
end
end

您拥有库、获取数据并使用 ActiveRecord 更新记录,您可以轻松运行:

rails feed:athlete_description
# or
rake feed:athlete_description

关于ruby-on-rails - 从外部网页到 db 中存储的 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47198042/

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