Обзор сбора файлов / достойного кода и запрос на более эффективный пример - PullRequest
0 голосов
/ 11 октября 2011

У меня есть структура из источника данных, которая не предоставляет источник ftp (то есть я не могу просто так легко просматривать структуры папок, как при использовании net / ftp), поэтому мне приходится анализировать каждый список http-файлов(по умолчанию папка, сгенерированная Apache, просмотрите html), затем опускайтесь, ополаскивайте и повторяйте до тех пор, пока не достигнете уровня пола, содержащего файлы, которые нужно собрать в более подходящую файловую иерархию.

Мне кажется, что я мог бы использовать mechanize вместе с nokogiri сделать что-то гораздо более эффективное. Не могли бы вы предоставить и пример того, что будет работать лучше в этом сценарии?

В настоящее время я делаю что-то вроде:

doc = Nokogiri::HTML(open("some_base_url"))

link_list = []

doc.xpath('//a').each do |node|
  unless node.text =~ /Name|Last modified|Size|Description|Parent Directory/
    link_list.push(url + node.text)
  end  
end


link_list.each do |sub_folder_url|
  doc = Nokogiri::HTML(open(sub_folder_url))
  # ... rinse and repeat until at the bottom level with files, then we have all file urls to pull
end

output_path = []

url_list.each do |url|
  filepath_elements = url.split('/')

  filename_elements = filepath_elements.last.split('_.')

  date = filename_elements[0]
  time = filename_elements[1]
  detail = filename_elements[2]
  data_type_and_filetype = filename_elements[3].split('.')
  data_type = data_type_and_filetype[0]
  file_type = data_type_and_filetype[1]

  output_path = [date, time, resoution, lense_type] * '_' + '.' + file_type
end

   # pull in all final_urls_to_retrieve to it's respective new output_path[location_in_final_urls_to_retrieve]
...