2011-11-21 75 views
0

我在使用Mechanize试图获得下面的结果的博客。将我的想法变成代码逻辑主要有困难。我假设我需要结合搜索子句并遍历html,并在找到匹配时打印出来。新的使用Rails和任何建议将会有所帮助。机械化使用2搜索刮?

期望的结果:

  • first_title
    • first_image_url
    • second_image_url
  • second_title
    • first_image_url
    • second_image_url

代码:

require 'rubygems' 
require 'mechanize' 

url = 'http://blog.something.com/' 
mech = Mechanize.new 
page = mech.get(url) 

page.search('h2').each do |h2| 
    puts h2.inner_text 
end 

imgs = page.search('img[src]').map{|src| src['src']} 
puts imgs 

课程的代码权生产:

  • first_title
  • second_title
  • third_title
  • ...
  • first_image_url
  • second_image_url
  • first_image_url
  • ...

回答

1

假设图像从H2的后裔,你可以这样做:

page.search('h2').each do |h2| 
    puts h2.inner_text 
    h2.css('img').each do |img| 
    puts img['src'] 
    end 
end 
+0

如果'img'不下降从'h2'结束?这是一个不同的div。我试过这个替换你的'h2.css''page.search('img')。each | img |放img ['src'] end' – TheRealDK

+0

在这种情况下,您将制作一些xpath表达式来获取图像。这取决于标记。 – pguardiario