23589


RubyでMechanizeを使用しでスクレイピングを行いたいです。

[code]

    <div id="movie_photo">
     <a href="movie/83603/">
     <img alt="ポスター画像" src="画像のURL">
    
[/code]

という構成のWEBサイトから、画像のURLを取得したいです。  
問題が２つあります。  
１つめが

[code]

    require 'mechanize'
    
    agent= Mechanize.new
    page = agent.get("http://eiga.com/movie/83603/")
    elements = page.search('a img')
    
    elements.each do |ele|
      puts ele.get_attribute('src')
    end
    
[/code]

のように記述したら、そのWEBサイト内の他のa img src 構造の欲しくないURLの情報も取ってきてしまいました。

２つめが  
上記のコードでは１このWEBサイトから１このURLの情報も取って来るように記述しようとしていますが、`page =
agent.get("http://eiga.com/movie/83603/")`で指定したURLの連番の/83604/,  
/83605/,/83606/....の計２０個のa img src 構造の欲しいURL情報も取りたいということです。  
links=[]と記述するようですがどうコードを記述すればいいのかわかりません。

欲しいURL１個だけを取得して、連番のURLの２０個の欲しいURLも一遍に取得できるようなコードを書きたいです。

お願いいたします。


CC BY-SA 3.0
2016-03-28T13:03:00.340
23556
2016-03-29T05:59:29.987
2016-03-29T05:35:07.317
5793
14754
question
ruby mechanize
Ruby/Mechanizeでのスクレイピングで対象の要素を絞り込む方法と複数のURLを処理する方法


一つ目については`div#movie_phpto` (`<div
id="movie_photo"></div>`に対するCSSセレクタ)を`#search`の条件に追加すれば良いでしょう。Mechanize(が内部で使っているNokogiri)はXPATHかCSSセレクタを使って要素を検索しますので、詳しいことはそれらのドキュメントを参照してください。  
二つ目についてははURLが連番で増えていくことがわかっているのであればループを1段増やして数字を増やしていけばいいでしょう

[code]

    (0..19).each do |i|
      page = agent.get("http://eiga.com/movie/#{83603 + i}/")
      elements = page.search('div#movie_photo a img')
      elements.each do |ele|
          puts ele.get_attribute('src')
      end
    end
    
[/code]


CC BY-SA 3.0
2016-03-29T05:59:29.987
23589
2016-03-29T05:59:29.987
5793
23556
answer