我試圖通過網頁解析,收集值並將它們存儲到數據庫中。如何解析相關數據並將值存儲到數據庫
這裏是我的代碼註釋的數據庫代碼:
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相關聯。 –