1 votos

Quiero extraer el enlace de una página HTML para descargar mis imágenes, y tengo varios miles de estos archivos HTML. ¿Cómo hago para esto?

así que tengo los archivos HTML que tiene una porción específica de la que me gustaría extraer. Estas HTML las direcciones en un archivo de texto. Un ejemplo de página HTML, tomado de este archivo de texto se vería como esto, y me gustaría conseguir parte 009514HB.JPG que es diferente para cada archivo HTML.

Mi .archivo txt sería algo como esto -

    https://www.dermquest.com/image-library/image/5044bfd0c97267166cd653c8
https://www.dermquest.com/image-library/image/5044bfcfc97267166cd61ff4
https://www.dermquest.com/image-library/image/5044bfd0c97267166cd6310a
https://www.dermquest.com/image-library/image/5044bfd0c97267166cd6310b
https://www.dermquest.com/image-library/image/5044bfcfc97267166cd61ff5
https://www.dermquest.com/image-library/image/5044bfd0c97267166cd64278
https://www.dermquest.com/image-library/image/5044bfcfc97267166cd61ff6
https://www.dermquest.com/image-library/image/5044bfcfc97267166cd61ff7
https://www.dermquest.com/image-library/image/5044bfd0c97267166cd63c1b
https://www.dermquest.com/image-library/image/5044bfcfc97267166cd619b1
https://www.dermquest.com/image-library/image/5044bfcfc97267166cd619b4
https://www.dermquest.com/image-library/image/5044bfcfc97267166cd625a3
https://www.dermquest.com/image-library/image/5044bfd0c97267166cd64844
https://www.dermquest.com/image-library/image/5044bfcfc97267166cd619ba
https://www.dermquest.com/image-library/image/5044bfd0c97267166cd63ce3
https://www.dermquest.com/image-library/image/5044bfd0c97267166cd64437
https://www.dermquest.com/image-library/image/5044bfd1c97267166cd67203

y si hago clic en abrir una de esas páginas html con un editor de texto puedo encontrar la información que necesito..

   *** some code here***
<figure>
         <a href="askubuntu.com/imagelibrary/large/009514HB.JPG" target="_blank" class="preview-image"><img src="/imagelibrary/medium/009514HB.JPG" alt="acne keloidalis nuchae"/></a>
</figure>
...

Ahora me gustaría obtener estos números de varios archivos HTML y, a continuación, anexar estos números a https://www.dermquest.com/imagelibrary/large. Por ejemplo, me gustaría que mi final txt archivo de direcciones url que son como este, [ligeramente NSFW] https://www.dermquest.com/imagelibrary/large/009514HB.JPG Esta línea sería más fácil para mí wget las imágenes! No sé mucho acerca de la SED o AWK para cualquier tipo de asesoramiento/ayuda sería genial.

Gracias!

tl;dr: El enlace apunta a una página web no es una imagen, así que cuando me wget estoy descargando las páginas html en lugar de imágenes que desee. Esto es lo que yo pienso que yo podría hacerlo, pero alguna solución mejor sería útil también!

1voto

Mike Puntos 1

Dependiendo de la complejidad de los archivos de entrada me sugieren no tratar de analizar HTML con awk, grep y tal, pero el uso de un analizador de HTML. Para tareas similares puedo usar lynx, el modo de texto del navegador. Para instalar un simple sudo apt install lynx es suficiente. Entonces:

for file in *.html; do
    lynx -dump -listonly -nonumbers $file >> links.txt
done

Para el ejemplo fragmento de código crea el siguiente resultado:

file:///imagelibrary/large/009514HB.JPG

Cuando se realiza, la file:// parte necesita ser reemplazada con una adecuada base de URL:

sed -i 's|file://|https://www.dermquest.com|' links.txt

Resultado:

https://www.dermquest.com/imagelibrary/large/009514HB.JPG

0voto

waltinator Puntos 7011

Romper hacia abajo en pasos, usted desea:

  1. Proceso de un montón de archivos (nombre *.html?).
  2. Extracto de líneas como <a href="http://askubuntu.com/imagelibrary/large/009514HB.JPG" ....
  3. Extraer el nombre del archivo de la parte ("009514HB.JPG").
  4. Producir un texto utilizando el nombre de archivo de la parte.

    find . -type f -name '*.html' -print0 | \
        xargs -0 -r grep --no-filename "a href=" | \
        grep -E -o '[0-9A-Z]+\.JPG'
    

Luego, mediante un ajuste de las anteriores dentro de un for $() construir, obtenemos:

for i in $( find . -type f -name '*.html' -print0 | \
    xargs -0 -r grep --no-filename "a href=" | \
    grep -E -o '[0-9A-Z]+\.JPG'
          ) ; do
    echo "https://www.dermquest.com/imagelibrary/large/$i"
done

Por supuesto, leer man find, man xargs, man grep.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: