前提・実現したいこと
プログラミング初心者です。質問も的を得ていなかったり、至らないところばかりだと思いますが、よろしくお願いします。
Ruby on RailsのMechanizeで複数のぺージにまたがるサイトの情報をスクレイピングしデーターベースに保存したく、ネット上にあった情報(下のコード)を基に、サイトのurlや、searchメソッドの要素を変更してみたのですが、うまくいきません。
恐らく、スクレイピングしようとしているサイトのaタグの扱いがうまくいっていないのだと思います。サイト1ページ目のaタグを含む一行は
<a href="javascript:void(0)" data-page-num="1" id="nextPage">次へ</a>
です。
2ページ目以降はサイトのURLは変わらず、aタグ内のdata-page-num=""内の数字が、2、3と増えていく形です。
該当のソースコード
Ruby
1require 'mechanize' 2 3class Scraping 4 def self.fuga_urls 5 agent = Mechanize.new 6 links = [] 7 next_url = "" 8 9 while true 10 current_page = agent.get("https://hoge.com/fuga/" + next_url) 11 elements = current_page.search('.fuga-title a') 12 elements.each do |ele| 13 links << ele.get_attribute('href') 14 end 15 16 next_link = current_page.at('.pagination .next a') 17 break unless next_link 18 next_url = next_link.get_attribute('href') 19 end 20 21 links.each do |link| 22 get_book('https://hoge.com/fuga' + link) 23 end 24 end 25 26 def self.get_book(link) 27 agent = Mechanize.new 28 page = agent.get(link) 29 30 title = page.at('.fuga-title').inner_text if page.at('.fuga-title') 31 32 book = Book.where(title: title).first_or_initialize 33 book.save 34 end 35end
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/13 04:09
2020/04/13 04:16