Cómo migrar el contenido de un sitio web HTML a formato Markdown

Escrito por picodotdev el .
planeta-codigo web
Enlace permanente Comentarios

HTML

Markdown

Wordpress es una opción muy pupular por su facilidad de uso para crear sitios web y blogs. Sin embargo, tiene algunos puntos débiles como necesitar una base de datos para guardar el contenido lo que hace que su instalación, mantenimiento, actualizción o presente problemas de seguridad por necesitar de un procesamiento en este caso PHP para generar las páginas HTML a partir del contenido guardado en la base de datos y sus plugins instalados.

Por estos motivos los generadores de sitios web estáticos al ser mucho más simples son una alternativa, el resultado final es simplemente contenido HTML, hojas de estilo CSS, imágenes, JavaScript y los recursos adicionales que necesite. Todo este contenido estático simplemente necesita de un servidor web no necesita ninguna base de datos lo que lo hace más sencillo instalar en un servidor ni ningún programa que genere el contenido HTML. Además, los generadores de sitios web estáticos permiten editar el contenido en el ordenador local con cuales quiera herramientas instaladas, como Visual Studio Code, entre otras cosas para buscar y reemplazar u aplicar otros comandos de GNU/Linux para transformar el contenidode forma masiva.

Muchos de los generadores estáticos de sitios web como Hugo usan como formato de contenido [Markdown][markdonw]. Markdown utiliza una sintaxis que procesada se convierte con posterioridad a HTML, en los archivos Markdown también puede incluirse trozos de HTML que es emitido sin ningún cambio.

Migrar un sitio web web HTML generador por Wordpress u otro a un generador estático es posible, requiere las siguientes tareas:

  • Recuperar todo el contenido del sitio web original. El contenido complete de un sitio web se puede descargar con un comando de wget.
  • Extraer la parte de contenido propio de la página o del artículo. En Java con la librería jsoup, no es complicado utilizando un selector similar a los empleados por jQuery.
  • Convertir el contenido HTML a Markdown, en Java ofrecen esta funcionalidad las librerías remark y MarkdownJ.
1
$ wget -r -l0 https://picodotdev.github.io/blog-bitix/
wget.sh

Migrar un sitio web HTML con Wordpress sería una tarea que requeriría mucho tiempo, más si tiene muchos artículos, si se hace manualmente copiando y pegando el texto de cada artículo, imágenes, … Creando un script la mayor parte de la tarea se automatiza, seguramente hay que hacer algunas acciones manuales pero con _wget, _jsoup, remark y un script que no tiene por que ser muy largo en líneas de código la tarea es realizable con una inversión de tiempo razonable.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<!DOCTYPE html>
<html lang="es">
<head>
  <meta name="base" href="/blog-bitix/">
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="author" content="picodotdev">
  <meta name="keywords" content="java, programacion, software, hardware, tapestry, software libre, gnu, linux, gnu/linux, unix, arch, arch linux, html, css, javascript">
  <meta name="description" content="Para utilizar de forma efectiva y eficiente una distribución GNU/Linux es necesario conocer las tareas básicas que hay que realizar en todo sistema. Estas son actualizar los paquetes instalados del sistema a nuevas versiones con correcciones de seguridad, correcciones de errores y mejoras, instalar y desinstalar nuevos paquetes y programas. Conocer el uso básico de la terminal permite automatizar y realizar de forma masiva algunas tareas además de también permitir actualizar el sistema e instalar y desinstalar programas. &hellip;">

  <title>Tareas básicas de administración y uso después de instalar una distribución GNU/Linux</title>
  ...
  <article>
    <h1>Tareas básicas de administración y uso después de instalar una distribución GNU/Linux</h1>
    <p class="information">
        Escrito por <span>picodotdev</span> el <time>09/02/2020</time>.      
        <br>
        <a href="/blog-bitix/tags/gnu-linux/">gnu-linux</a>
        <a href="/blog-bitix/tags/planeta-codigo/">planeta-codigo</a>      
        <br>
        <a href="/blog-bitix/2020/02/tareas-basicas-de-administracion-y-uso-despues-de-instalar-una-distribucion-gnu-linux/">Enlace permanente</a>      
        <a href="/blog-bitix/2020/02/tareas-basicas-de-administracion-y-uso-despues-de-instalar-una-distribucion-gnu-linux/#comments">Comentarios</a>
    </p>
    <p class="summary">Para utilizar de forma efectiva y eficiente una distribución GNU/Linux es necesario conocer las tareas básicas que hay que realizar en todo sistema. Estas son actualizar los paquetes instalados del sistema a nuevas versiones con correcciones de seguridad, correcciones de errores y mejoras, instalar y desinstalar nuevos paquetes y programas. Conocer el uso básico de la terminal permite automatizar y realizar de forma masiva algunas tareas además de también permitir actualizar el sistema e instalar y desinstalar programas.</p>
    ...
    <p>Si has instalado recientemente o piensas instalar una distribución <a href="https://www.gnu.org/">GNU</a>/<a href="https://www.linux.com/">Linux</a> después de <a href="https://picodotdev.github.io/blog-bitix/2016/10/elegir-una-distribucion-gnu-linux-segun-el-usuario-uso-o-equipo/">elegir la distribución GNU/Linux</a> que más se adapte a tus preferecias y de seguir los pasos para <a href="https://picodotdev.github.io/blog-bitix/2017/05/descargar-e-instalar-la-distribucion-ubuntu-de-gnu-linux-paso-a-paso-desde-cero/">instalar una como Ubuntu</a>, después es necesario conocer unas pocas <a href="https://picodotdev.github.io/blog-bitix/2020/02/tareas-basicas-de-administracion-y-uso-despues-de-instalar-una-distribucion-gnu-linux/">tareas de administración del sistema</a>, <a href="https://picodotdev.github.io/blog-bitix/2020/02/las-aplicaciones-integradas-del-entorno-de-escritorio-gnome/">las aplicaciones del entorno de escritorio de GNOME</a> y un <em>listado de programas básicos según categoría en GNU/Linux</em>. En cada distribución varía ligeramente pero en todas hay que realizar unas tareas básicas de mantenimiento.</p>
    <p>Estas tareas básicas de mantenimiento son:</p>
    <ul>
    <li><strong>Actualizar los paquetes instalados del sistema</strong>. Los paquetes actualizados incluyen correcciones de seguridad por lo que es importante actualizar el sistema de forma regular. También, pueden incluir nuevas versiones de los paquetes con nuevas funcionalidades y correcciones de errores. Una programa que es necesario mantener actualizado es el navegador web, también el núcleo o <em>kernel</em> de Linux.</li>
    <li><strong>Instalar y desinstalar nuevos paquetes y programas</strong>. Dependiendo de las tareas que se deseen realizar hay que instalar los programas que permitan realizarlas. Para editar documentos ofimáticos, un navegador web, retocar imágenes, correo electrónico, descarga de <em>torrents</em>, reproductor de vídeo, reproductor de música, captura de imágenes, captura vídeo del escritorio, programas para el desarrollo y programación, virtualización, &hellip; Cada programa tienen su paquete en la ditribución que es necesario instalar para usarlo y desinstalar cuando el programa ya no se va a usar más. Es dificil que no encuentres un programa que realice lo que se desea.</li>
    <li><strong>Uso básico de la terminal</strong>. Hay programas con interfaz gráfica pero para algunas tareas es más rápido hacerlas desde la línea de comandos con la ventaja que con un <em>script</em> es posible automatizar en caso de ser repetitiva. Desde la línea de comandos hay numerosos programas útiles que además se pueden combinar de forma que la salida de uno sea la entrada de otro.</li>
    </ul>
    <p>Dependiendo de la distribución cada una de estas tareas puede variar el comando en concreto pero en general en todas se realizan de forma similar. A continuación comento como realizar las tareas en dos de las distribuciones más populares como son <a href="https://www.ubuntu.com/">Ubuntu</a> y <a href="https://www.archlinux.org/">Arch Linux</a> pero en <a href="https://fedoraproject.org/">Fedora</a>, <a href="https://www.debian.org/">Debian</a>, <a href="https://elementary.io/es/">elementary OS</a> se realizan de forma similar.</p>
    ...
page.html

Descargado el sitio web la tarea del script es por cada artículo del sitio web aplicar un selector de jsoup extraer el contenido y convertirlo a Markdown con remark, también sería tarea del script mover los recursos a la ubicación que requiera el generador de sitios web estáticos del artículo como las imágenes, que el comando wget también descarga.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package io.github.picodotdev.blogbitix.sitemconverter;

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import com.overzealous.remark.Remark;
import com.overzealous.remark.Options;

public class Main {

    public static void main(String[] args) throws Exception {
        Stream<Path> files = Files.walk(Paths.get("../picodotdev.github.io/"), 5);
        files.filter(path -> path.getFileName().toFile().getName().endsWith(".html") && path.getFileName()).forEach(path -> {
            try {
                System.out.println(path.toString());

                // Obtener el HTML de una página
                String html = Files.readString(path);

                // Contenido HTML
                System.out.println(html);

                // Parsear el contenido HTML con jsoup
                Document document = Jsoup.parse(html);

                // Obtener los elementos de contenido de la página con selectores
                Elements article = document.select("article");

                // Opciones para convertir a markdown
                Options options = Options.markdown();
                options.preserveRelativeLinks = true;
                options.inlineLinks = true;
                String baseUri = "https://picodotdev.github.io/blog-bitix/";

                // Convertir a markdown
                String markdown = new Remark(options).convertFragment(article.html(), baseUri);

                // Contenido markdown
                System.out.println(markdown);
            } catch (Exception e) {
                e.printStackTrace();
            }
        });
    }
}
Main.java

Resultado en formato markdown.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
# Tareas básicas de administración y uso después de instalar una distribución GNU/Linux #

Escrito por picodotdev el 09/02/2020.
[gnu-linux](/blog-bitix/tags/gnu-linux/) [planeta-codigo](/blog-bitix/tags/planeta-codigo/)  
[Enlace permanente](/blog-bitix/2020/02/tareas-basicas-de-administracion-y-uso-despues-de-instalar-una-distribucion-gnu-linux/) [Comentarios](/blog-bitix/2020/02/tareas-basicas-de-administracion-y-uso-despues-de-instalar-una-distribucion-gnu-linux/#comments)

Para utilizar de forma efectiva y eficiente una distribución GNU/Linux es necesario conocer las tareas básicas que hay que realizar en todo sistema. Estas son actualizar los paquetes instalados del sistema a nuevas versiones con correcciones de seguridad, correcciones de errores y mejoras, instalar y desinstalar nuevos paquetes y programas. Conocer el uso básico de la terminal permite automatizar y realizar de forma masiva algunas tareas además de también permitir actualizar el sistema e instalar y desinstalar programas.

![GNU]()

![Linux]()

Si has instalado recientemente o piensas instalar una distribución [GNU](https://www.gnu.org/)/[Linux](https://www.linux.com/) después de [elegir la distribución GNU/Linux](https://picodotdev.github.io/blog-bitix/2016/10/elegir-una-distribucion-gnu-linux-segun-el-usuario-uso-o-equipo/) que más se adapte a tus preferecias y de seguir los pasos para [instalar una como Ubuntu](https://picodotdev.github.io/blog-bitix/2017/05/descargar-e-instalar-la-distribucion-ubuntu-de-gnu-linux-paso-a-paso-desde-cero/), después es necesario conocer unas pocas [tareas de administración del sistema](https://picodotdev.github.io/blog-bitix/2020/02/tareas-basicas-de-administracion-y-uso-despues-de-instalar-una-distribucion-gnu-linux/), [las aplicaciones del entorno de escritorio de GNOME](https://picodotdev.github.io/blog-bitix/2020/02/las-aplicaciones-integradas-del-entorno-de-escritorio-gnome/) y un *listado de programas básicos según categoría en GNU/Linux*. En cada distribución varía ligeramente pero en todas hay que realizar unas tareas básicas de mantenimiento.

Estas tareas básicas de mantenimiento son:

* **Actualizar los paquetes instalados del sistema**. Los paquetes actualizados incluyen correcciones de seguridad por lo que es importante actualizar el sistema de forma regular. También, pueden incluir nuevas versiones de los paquetes con nuevas funcionalidades y correcciones de errores. Una programa que es necesario mantener actualizado es el navegador web, también el núcleo o *kernel* de Linux.
* **Instalar y desinstalar nuevos paquetes y programas**. Dependiendo de las tareas que se deseen realizar hay que instalar los programas que permitan realizarlas. Para editar documentos ofimáticos, un navegador web, retocar imágenes, correo electrónico, descarga de *torrents*, reproductor de vídeo, reproductor de música, captura de imágenes, captura vídeo del escritorio, programas para el desarrollo y programación, virtualización, … Cada programa tienen su paquete en la ditribución que es necesario instalar para usarlo y desinstalar cuando el programa ya no se va a usar más. Es dificil que no encuentres un programa que realice lo que se desea.
* **Uso básico de la terminal**. Hay programas con interfaz gráfica pero para algunas tareas es más rápido hacerlas desde la línea de comandos con la ventaja que con un *script* es posible automatizar en caso de ser repetitiva. Desde la línea de comandos hay numerosos programas útiles que además se pueden combinar de forma que la salida de uno sea la entrada de otro.

Dependiendo de la distribución cada una de estas tareas puede variar el comando en concreto pero en general en todas se realizan de forma similar. A continuación comento como realizar las tareas en dos de las distribuciones más populares como son [Ubuntu](https://www.ubuntu.com/) y [Arch Linux](https://www.archlinux.org/) pero en [Fedora](https://fedoraproject.org/), [Debian](https://www.debian.org/), [elementary OS](https://elementary.io/es/) se realizan de forma similar.
...
index.markdown
Comparte el artículo: