У меня есть структура из источника данных, которая не предоставляет источник 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]