前提・実現したいこと
mechanizeを使ってニュースサイトの情報をスクレイピングしています。
1つのサイトは下記のコードで問題なく必要な情報を抽出できていますが、
このサイトとは別のサイトから新たに情報を取ってきた場合のコードの書き方がわからず、
悩んでいます。
該当のソースコード
model
1require 'mechanize' 2 3class Scraping < ApplicationRecord 4 5 def self.fuga_urls 6 links = [] 7 agent = Mechanize.new 8 9 current_page = agent.get("https://https://xxxxxxxx/xxxxxxxx/xxxxxxxx/") 10 elements = current_page.search('.ranking-list .item a') 11 sleep 2 12 elements.each do |ele| 13 links << ele.get_attribute('href') 14 end 15 16 links.each do |link| 17 get_scraping('https://xxxxxxxx/' + link) 18 end 19 20 end 21 22 def self.get_scraping(link) 23 agent = agent = Mechanize.new 24 page = agent.get(link) 25 26 title = page.at('.arti-header .head').inner_text 27 sleep 2 28 image_url = page.at('.figure-area img')[:src] if page.at('.figure-area img') 29 sleep 2 30 detail = page.at('.arti-summary').inner_text 31 sleep 2 32 page = link 33 sleep 2 34 category = "hoge" 35 36 scraping = Scraping.new(title: title, image_url: image_url, detail: detail, page: page, category: category) 37 scraping.save 38 end 39end
試したこと
モデルを新しく作ればとってこれると思うのですが、10個くらいのサイトでスクレイピング
を試したいと考えているので断念しました。
またグノシーなどニュースサイトのまとめアプリはいくつかありますがそれらのサービスがいくつもモデルをつくっているとは思えません。
理想は1つのモデルで完結させることですが「こっちのほうが良い!」など別の案も是非教えてほしいです。
新たに変数をつくることも考えたのですがこちらもコードがとても長くなりそうなので、
いったんこちらで質問してみました。
変数current_pageを繰り返し処理で入れ替えるなどはできるでしょうか。
良い案がございましたら是非ご助言いただけると嬉しいです!
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。