我试图通过网页解析,收集值并将它们存储到数据库中。如何解析相关数据并将值存储到数据库
这里是我的代码注释的数据库代码:
require 'nokogiri'
require 'open-uri'
doc = Nokogiri::HTML(open("https://example.com/colors"))
colors = doc.css(".colorCircle")
colors_name = doc.css(".zw-m-c-txt")
colors.each do |ele|
hex_code = ele.attr('style').split(";").first.split(":").last
colors_name.each do |name|
color_name = name.text
puts " ++++++ hex_code #{hex_code}"
puts " ++++++ color_name #{color_name}"
# color = colors.find_by(:hex_code => hex_code)
# if color.present?
# color.update_attributes(:name => color_name)
# else
# model.colors.create(:name => color_name, :hex_code => hex_code)
# end
end
end
下面是HTML源页面的细节:
<span class="colorCircle" style="background-color:#EEEFF4;"></span>
<p class="zw-m-c-txt"> <span class="fnt-14"> White Orchid Pearl </span></p>
<span class="colorCircle" style="background-color:#ACABB0;"></span>
<p class="zw-m-c-txt"> <span class="fnt-14"> Modern Steel Metallic </span></p>
<span class="colorCircle" style="background-color:#220909;"></span>
<p class="zw-m-c-txt"> <span class="fnt-14"> Golden Brown Metallic </span></p>
<span class="colorCircle" style="background-color:#43161b;"></span>
<p class="zw-m-c-txt"> <span class="fnt-14"> Carnelian Red Pearl </span></p>
<span class="colorCircle" style="background-color:#E8F1FA;"></span>
<p class="zw-m-c-txt"> <span class="fnt-14"> Alabaster Silver </span></p>
我无法遍历它依次存储到数据库。下面是电流输出:
++++++ color_name White Orchid Pearl
++++++ hex_code #EEEFF4
++++++ color_name White Orchid Pearl
++++++ hex_code #ACABB0
++++++ color_name White Orchid Pearl
++++++ hex_code #220909
++++++ color_name White Orchid Pearl
++++++ hex_code #43161b
++++++ color_name White Orchid Pearl
++++++ hex_code #E8F1FA
++++++ color_name Modern Steel Metallic
++++++ hex_code #EEEFF4
++++++ color_name Modern Steel Metallic
++++++ hex_code #ACABB0
++++++ color_name Modern Steel Metallic
++++++ hex_code #220909
++++++ color_name Modern Steel Metallic
++++++ hex_code #43161b
++++++ color_name Modern Steel Metallic
这是预期的输出:
hex_code #EEEFF4
color_name White Orchid Pearl
hex_code #ACABB0
color_name Modern Steel Metallic
hex_code #220909
color_name Golden Brown Metallic
如何获得预期的输出,并将其保存到颜色名称对应的hex_code
数据库?
所以你想要将每个颜色名称与跨度的背景颜色关联起来?例如。白色兰花珍珠#EEEFF4? – radubogdan
你意识到你有两个嵌套for循环,你基本上通过每个color_name运行每种颜色。 – radubogdan
@radubogdan是的你是正确的,我想将每个颜色名称与span的bkg-color相关联。 –