ruby mechanize获取具有特定单词的网站中的所有链接

时间:2016-08-31 19:58:03

标签: ruby web-crawler mechanize

我想抓取一个网站,但它只停留在我提供机械化的网址上,并且它不会进行递归抓取。所需信息在第3级。第一级有一个日历,每天都是一个链接。第二个级别是月份的日期,第三个级别是我需要的信息(正文) 链接是3级深度:

_日历页面(第1级)
    enter image description here

____月份(第2级)
   enter image description here

带信息/文字的

________页面(第3级)

我没有超过第1页/级别。

这是我的代码:

agent = Mechanize.new
page = agent.get('http://mywebsite.com/calendarPageWithLinks.htm')
puts page.title
page.links.each do |link|
    puts link.text
    puts link.href
end

更新
我能够访问不同的级别。这里使用的代码(它不是最优的)。

page.links.each do |link|
puts "--------------------------------- LEVEL 1 --------------------------------------------------"
puts link.text
puts link.href
if page2 = agent2.get(link.href)
puts "--------------------------------- LEVEL 2 --------------------------------------------------"

page2.links.each do |link2|
puts " ****** #{link2.text}"
puts " ****** #{link2.href}"
    if page3 = agent3.get(link2.href)
        puts "--------------------------------- LEVEL 3 --------------------------------------------------"
        page3.links.each do |link3|
            name = link3.href
        if name.to_s.include? 'mailto:'
            puts " --------- #{link3.text}"
            puts " --------- #{link3.href}"
        else
        puts " --------- #{link3.text}"
        puts " --------- #{link3.href}"
            if page4 = agent4.get(link3.href)
                puts "--------------------------------- LEVEL 4 --------------------------------------------------"
                page4.links.each do |link4|
                    puts " +++++++++ #{link4.text}"
                    puts " +++++++++ #{link4.href}"
                    name = link4.href
                    if name.to_s.include? 'www.somesite.com'    
                        puts " ///////////// GOT IT !!!! /////////// #{link4.href}"
                        counterInfo += 1
                    end
                end
                puts " -----------------PAGE4 "
            end
        end
        end
        puts " -----------------PAGE3 "
    end
    puts " ***********PAGE2  "
end
end

 puts " counterInfo =  #{counterInfo} "   
 end   

0 个答案:

没有答案