You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
11 months ago | |
---|---|---|
parte1 | 11 months ago | |
parte2 | 11 months ago | |
parte3 | 11 months ago | |
README.md | 11 months ago |
README.md
title | tags |
---|---|
Descarga automatizada de La Villa de Colima de la Nueva España, siglo XVI | ruweb, programación literaria, wiki, descarga, colima, siglo xvi |
Descarga automatizada de la Villa de Colima de la Nueva España, siglo XVI
Esta receta descarga el fondo documental del siglo XVI del Archivo de la Villa de Colima. Este comprende tres sitios hechos con la misma plataforma:
- Cajas 1--11:
http://casadelarchivo.colima.gob.mx/sigloxvi/index.php?buscador
- Cajas 12--20:
http://casadelarchivo.colima.gob.mx/sigloxvi_2/inicio.php?buscador
- Cajas 21--30:
http://casadelarchivo.colima.gob.mx/sigloxvi_3/inicio.php?buscador
:::warning Aún no están disponibles las cajas 31--35, que son las últimas de este fondo. :::
Requisitos
Los siguientes elementos son necesarios:
- Sistema operativo basados en Unix como GNU/Linux
- Ruby >= 2.5.1
- Gema RuWEB
- Gema HTTParty
- Gema Nokogiri
- Gema HtmlBeautifier
- Iconv
- Pandoc
Procedimiento
Directorio destino:
colima-siglo_xvi
Gemas a utilizar en Ruby:
require 'httparty'
require 'nokogiri'
require 'htmlbeautifier'
Aviso de inicio de descarga:
puts "\n--- Descargando ---"
Variables a utilizar en este ejercicio:
dir = %Q{_dir}
urls = %W{_parte1 _parte2 _parte3}
Llamado al _método mkdir
.
Generación de directorio:
mkdir(dir)
Iteración de cada fondo:
urls.each_with_index do |url, i|
puts "\nURL: #{url}\nParte: #{i+1}"
part = "#{dir}/parte#{i+1}/"
site = HTTParty.get(url)
html = Nokogiri::HTML(site.body)
vals = html.search('option[value]')
mkdir(part)
_beautify
_progress_bar
_ids
_download
end
Obtención de id de los expedientes:
case i
when 0
vals = vals.map{|e| e['value']}.reject{|e| e.length != 36}
when 1
vals = Array.new(381) {|i| (i+1).to_s }
when 2
vals = Array.new(407) {|i| (i+1).to_s }
end
Descarga de cada expediente:
vals.each_with_index do |record, j|
puts "#{status(vals.length, j+1)} Expediente #{record}"
record_url = "#{url}&show=#{record}"
site = HTTParty.get(record_url)
content = HtmlBeautifier.beautify(site.body)
record = beautify(vals.length, j+1) if i > 0
File.write("#{part}#{record}.html", content)
end
Embellece número:
def beautify(total, current)
zeros = total.to_s.length - current.to_s.length
"#{'0'*zeros}#{current}"
end
Muestra la barra de progreso:
def status(total, current)
"[#{beautify(total, current)}/#{total}]"
end
Arregla la codificación de los documentos:
printf "\n--- Arreglando codificación ---\n"
for file in _dir/**/*.html
do
iconv -f ISO-8859-1 -t utf-8 $file -o $file.new
mv $file.new $file
done
Convierte a texto plano:
printf "\n--- Convirtiendo a texto plano ---\n"
for file in _dir/**/*.html
do
pandoc -f html -t plain --wrap=none $file -o $file.txt
done