2014-10-03 4 views
0

У меня есть фрагмент, который может быстро очистить изображения в URL-адресе. Дело в том, что я хочу собирать множество изображений с разных сайтов, и я не могу каждый раз вводить URL-адрес вручную ,Скребок всех URL-адресов страницы

Поскольку я новичок в выскабливании, как вы, ребята, сталкиваетесь с этим? Каков наилучший способ очистить каждый URL? Нужно ли иметь URLS в CSV или что-то в этом роде? Автоматически?

Мой сценарий

URL = 'http://www.sitasde.com' 

    require 'rubygems' 
    require 'nokogiri' 
    require 'open-uri' 
    require 'uri' 

    def make_absolute(href, root) 
    URI.parse(root).merge(URI.parse(href)).to_s 
    end 

    Nokogiri::HTML(open(URL)).xpath("//img/@src").each do |src| 
    uri = make_absolute(src,URL) 
    File.open(File.basename(uri),'wb'){ |f| f.write(open(uri).read) } 
    end 

ответ

0

Вы должны указать шаблон.

Один из способов (например, как работает Google), вы также можете обнаружить все привязные ссылки() и добавить эти ссылки в очередь (например, в массиве). После того, как вы закончите соскабливать изображения на текущей странице, удалите их из массива, перейдите к следующей странице в массиве, повторите тот же процесс (найдите все ссылки, нажмите на массив, сохраните изображения по текущей ссылке, удалите текущую ссылку из массива). Повторяйте это до тех пор, пока массив не будет иметь длину> 0.

Но может возникнуть проблема, например, проблема с памятью в случае крупных сайтов. Таким образом, вы также можете установить ограничение по времени и ограничение памяти. Или поставьте предел в свой код. Как ограничить его на том же веб-сайте и установить максимальный предел в массиве, чтобы сказать 100. Если вы делаете по частям, продолжайте записывать эти URL-адреса, чтобы в будущем их не очистить.

Я бы рекомендовал использовать базу данных для отслеживания URL-адресов.

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