2010-11-29 2 views
3

Я работаю, чтобы сделать обход, но прежде чем я сканирую весь веб-сайт, я бы хотел отстрелить тест от таких страниц. Так я думал что-то вроде ниже будет работать, но я постоянно получаю nomethoderror ....anemone Ruby with focus_crawl

Anemone.crawl(self.url) do |anemone| 
     anemone.focus_crawl do |crawled_page| 
     crawled_page.links.slice(0..10) 
     page = pages.find_or_create_by_url(crawled_page.url) 
     logger.debug(page.inspect) 
     page.check_for_term(self.term, crawled_page.body) 
     end 
    end 

NoMethodError (private method `select' called for true:TrueClass): 
    app/models/site.rb:14:in `crawl' 
    app/controllers/sites_controller.rb:96:in `block in crawl' 
    app/controllers/sites_controller.rb:95:in `crawl' 

В основном я хочу, чтобы иметь путь к первому зоба только 10 страниц, но я, кажется, не понимая основы Вот. Кто-нибудь может мне помочь? Спасибо!

ответ

0

Итак, я нашел параметр depth_limit, и это будет нормально, но я бы предпочел ограничить его ссылками.

0

Я нашел ваш вопрос, пока я искал для себя анекдот.

У меня была та же проблема. И с Anemone, что я сделал, было:

Как только я дойду до предела URL, который хочу, я создаю исключение. Весь блок анемона находится внутри блока начала/спасения.

В вашем конкретном случае я бы взял другой подход. Я бы загрузил страницу, которую вы хотите проанализировать, и привяжите ее к fakeweb. Я написал запись в блоге об этом, давным-давно, может быть, это было бы полезно: http://blog.bigrails.com/scraper-guide.html

1

Добавить этот обезьян-патч в сканирующий файл.

module Anemone 
    class Core 
     def kill_threads 
      @tentacles.each { |thread| 
       Thread.kill(thread) if thread.alive? 
      } 
     end 
    end 
end 

Вот пример того, как использовать его после того, как вы добавили его в ползет file.Then в файл, который вы работаете свой добавить это в ваш метод anemone.on_every_page

@counter = 0 
Anemone.crawl(http://stackoverflow.com, :obey_robots => true) do |anemone| 
    anemone.on_every_page do |page| 
     @counter+= 1 
     if @counter > 10 
      anemone.kill_threads 
     end 
    end 
end 

Источник: https://github.com/chriskite/anemone/issues/24