2015-05-30 4 views
-1

Я пытаюсь сделать WebCrawler, который находит ссылки с домашней страницы и снова и снова посещает найденные ссылки .. Теперь я написал код w9 с парсером, который показывает мне найденные ссылки и печатает там статистику некоторых тегов этой страницы но я не понимаю, как посещать новые ссылки в цикле и печатать там статистику тоже.Ruby - WebCrawler, как посетить ссылки найденных ссылок?

*

@visit = {} 
@src = Net::HTTP.start(@url.host, @url.port) do |http| 
       http.get(@url.path) 
@content = @src.body 

*

def govisit 
     if @content =~ @commentTag 
     end 

     cnt = @content.scan(@aTag) 
     cnt.each do |link| 
      @visit[link] = [] 
     end 

     puts "Links on this site: " 
     @visit.each do |links| 
      puts links 
     end 

     if @visit.size >= 500 
      exit 0 
     end 

     printStatistics 
    end 

ответ

0

Прежде всего, вам нужна функция, которая принимает ссылку и возвращает результат тела. Затем проанализируйте все ссылки из тела и сохраните список ссылок. Проверьте этот список, если вы еще не посетили ссылку. Удалите те посещенные ссылки из списка новых ссылок и снова вызовите одну и ту же функцию и сделайте все это.

Чтобы остановить искатель в определенный момент, вам нужно построить условие цикла while.

на основе кода:

@visited_links = [] 
@new_links = [] 

def get_body(link) 
    @visited_links << link 
    @src = Net::HTTP.start(@url.host, @url.port) { |http| http.get(@url.path) } 
    @src.body 
end 

def get_links(body) 
    # parse the links from your body 
    # check if the content does not have the same link 
end 

start_link_body = get_body("http://www.test.com") 

get_links(start_link_body) 

while @visited_links < 500 do 
    body = get_body(@new_links.shift) 
    get_links(body) 
end 

 Смежные вопросы

  • Нет связанных вопросов^_^