RubyとMechanizeを使用して特定のdivの下にあるすべての画像を取得する必要があります。MechanizeとRubyで特定のDivで画像を取得する
<div id="item_img">
<a href="JavaScript:imageview('000000018693.jpg')">
<img src="/shop/doubleimages/0000000186932.jpg" border="0" width="500" height="500" alt="関係ないコメント z1808">
</a>
<img src="/shop/doubleimages/000000018693_1.jpg"><br><br>
<img src="/shop/doubleimages/000000018693_2.jpg"><br><br>
<img src="/shop/doubleimages/000000018693_3.jpg"><br><br>
</div>
だから、私が最初に行うことによって、新しいエージェントをスピンアップした後、すべての画像を得た:次のように関連するDOM構造がある
agent = Mechanize.new
agent.user_agent_alias = 'Mac Safari'
page = agent.get ('http://double14.com/shopdetail/000000018693/')
puts page.images
これは良かったが、それページ上のすべての画像(それはすべきである)、それ以上のdiv IDを取り除いて、どこから来るのかを決めることが不可能になっているようだ。その結果、私はページ上のすべてのイメージを持っていました(ブエノはありません)。
私はこれにそれを降り:
残念ながらagent = Mechanize.new
agent.user_agent_alias = 'Mac Safari'
page = agent.get ('http://double14.com/shopdetail/000000018693/')
node = page.search "#item_img img"
node.each do |n|
puts n.attributes['src']
end
、以下を出力する -
/shop/doubleimages/0000000186932.jpg
/shop/doubleimages/000000018693_1.jpg
/shop/doubleimages/000000018693_2.jpg
/shop/doubleimages/000000018693_3.jpg
は、完全なURLを取り、代わりにそれを使用する方法はありますか?最終的には、これらのイメージをデータベースに保存したいと思いますが、後でアップロードするためにディスクにシリアル化するには完全なURLが必要です。
「http:// double14.com/shop/doubleimages/0000000186932.jpg」のようにホストを追加できますか? –
私は、サイトから完全なパス名を取る方法があると考えて、相対パス名を完全に避けることができました。これがあれば、それは有効な解決策のように聞こえる。ありがとうございました。 – JapanRob