Webページを解析し、値を収集してデータベースに格納しようとしています。ここで関連するデータを解析してデータベースに値を格納する方法
はコメントアウトされたデータベース・コードと私のコードです:ここでは
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
に対応するデータベースに保存するにはどうすればよい
hex_code #EEEFF4
color_name White Orchid Pearl
hex_code #ACABB0
color_name Modern Steel Metallic
hex_code #220909
color_name Golden Brown Metallic
?ここで
したがって、各色の名前をスパンの背景色に関連付ける必要がありますか?例えば。ホワイトオーキッドパール#EEEFF4? – radubogdan
2つのネストされたforループがあり、基本的には各色の各color_nameを実行していることに気づきます。 – radubogdan
@radubogdanはい、あなたは正しいです、私は各色の名前をspanからのbkg-colorに関連づけたいと思います。 –