質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

解決済

1回答

276閲覧

スクレイピングしたデータの一部がデータベースに反映しない

hokosugi

総合スコア63

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

0クリップ

投稿2018/08/26 23:28

前提・実現したいこと

スクレイピングしたデータをデータベースに取得したい。

発生している問題

コンソール上にはimageパスがあり取得できていることはわかるのだけど、データベースのimageカラムはnullになる。実は画像アップロード用のgem、carrierwaveをインストールする前は正常に動いていたのですが、インストール後におかしくなったと思われる。

AND shoes.image = 'https://item-shopping.c.yimg.jp/i/g/e-minerva_9902010186'

イメージ説明

該当のソースコード

ruby

1def self.get_content() 2 thisurl = "http://kakaku.com" 3 page_url = "/search_results/%8CC%81E%83V%83%85%81%5B%83Y/" 4 for page in 1..2 do 5 url = thisurl + page_url 6 charset = nil 7 html = open(url) do |f| 8 charset = f.charset # 文字種別を取得 9 f.read # htmlを読み込んで変数htmlに渡す 10 end 11 doc = Nokogiri::HTML.parse(html.toutf8, nil, 'utf-8') 12 13 for i in 1..30 do 14 str_num = i.to_s 15 fixed_num = "%02d" % str_num 16 all_name = doc.css('.item'+fixed_num) 17 explanation = all_name.css('li.searchitem').inner_text 18 19 name = get_name(all_name) 20 image = get_image(all_name) 21 size = get_size(all_name, explanation) 22 type = get_type(all_name, explanation) 23 24 shoe = Shoe.where(name: name, image: image, size_id: size, type_id: type).first_or_initialize 25 shoe.save 26 27 end 28 next_html = doc.css('.pagenation > ul > li.nextPage a') 29 # unless next_html 30 page_url = next_html.attribute('href') 31 32 end 33 end 34 35def self.get_image(all_name) 36 # 画像を取得 37 category_image = all_name.css('.itemphoto a img') 38 image = category_image.attribute('data-original').value 39 return image 40end

やってみたこと

shoe = Shoe.where(name: name, image: image, size_id: size, type_id: type).first_or_initialize
image: imageをimage: nameに変えてみる → nullに変化なし(データベース側の問題?)
そこで
imageカラムの削除・再設定 → 変化なし
この作業以前にしていたcarrierwaveのインストールに伴うおまじないで不必要なものを削除

補足情報

開発環境:could9
ruby: 2.3.1p112
rails: 4.2.6

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

理由は定かではありませんが解決いたしました。
やってみたこと:
imageカラムを削除・pictureカラムとして追加
これでも同じ現象が出たので
pictureカラムを削除・picカラムを追加
これでデータベースに反映されました。

もしかするとphpmyadminから直接削除追加する場合と
コンソールからRemovexxxFromZZZの形でする場合で
相違があるのかもしれません。

投稿2018/08/29 08:03

hokosugi

総合スコア63

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問