varios portable para mac example descargar con archivos wget

portable - wget agrega la cadena de consulta al archivo resultante



wget ubuntu (5)

Estoy intentando recuperar páginas web que funcionan con wget y esto va bien para la mayoría de los sitios con el siguiente comando:

wget -p -k http://www.example.com

En estos casos, terminaré con index.html y el CSS / JS necesario, etc.

SIN EMBARGO, en ciertas situaciones, la url tendrá una cadena de consulta y en esos casos obtendré un index.html con la cadena de consulta adjunta.

Ejemplo

www.onlinetechvision.com/?p=566

Combinado con el comando wget anterior resultará en:

index.html?page=566

He intentado usar la opción --restrict-file-names = windows, pero eso solo me lleva a

index.html@page=566

¿Alguien puede explicar por qué se necesita esto y cómo puedo terminar con un archivo index.html regular?

ACTUALIZACIÓN: Estoy más o menos a punto de adoptar un enfoque diferente. Descubrí que puedo tomar el primer nombre de archivo que wget guarda al analizar la salida. Así que el nombre que aparece después de guardar en: es el que necesito.

Sin embargo, esto está envuelto por este extraño carácter, en lugar de simplemente eliminar el código duro, ¿de dónde viene esto?


La cadena de consulta es obligatoria debido al diseño del sitio web. Lo que el sitio está haciendo es usar el mismo index.html estándar para todo el contenido y luego usar la cadena de consulta para extraer el contenido de otra página, como la secuencia de comandos en el lado del servidor. (puede ser del lado del cliente si nos fijamos en el JavaScript).

¿Ha intentado usar --no-cookies? Podría estar almacenando esta información a través de una cookie y retirándola cuando llegue a la página. Además, esto podría deberse a la lógica de reescritura de URL, que tendrá poco control desde el lado del cliente.


Mi solución es hacer un rastreo recursivo fuera de wget:

  1. obtener estructura de directorios con wget (sin archivo)
  2. bucle para obtener el archivo de entrada principal (index.html) de cada directorio

Esto funciona bien con sitios de wordpress. Podría faltar algunas páginas aunque.

#!/bin/bash # # get directory structure # wget --spider -r --no-parent http://<site>/ # # loop through each dir # find . -mindepth 1 -maxdepth 10 -type d | cut -c 3- > ./dir_list.txt while read line;do wget --wait=5 --tries=20 --page-requisites --html-extension --convert-links --execute=robots=off --domain=<domain> --strict-comments http://${line}/ done < ./dir_list.txt


Para responder a su pregunta sobre por qué es necesario, recuerde que es probable que el servidor web devuelva resultados diferentes según los parámetros en la cadena de consulta. Si una consulta para index.html?page=52 devuelve resultados diferentes a index.html?page=53 , probablemente no querrá que ambas páginas se guarden en el mismo archivo.

Cada solicitud HTTP que utiliza un conjunto diferente de parámetros de consulta es, literalmente, una solicitud de un recurso distinto. wget no puede predecir cuál de estos cambios es o no va a ser significativo, por lo que está haciendo lo conservador y conservando las URL de los parámetros de consulta en el nombre de archivo del documento local.


Si lo intentas con el parámetro "--adjust-extension"

wget -p -k --adjust-extension www.onlinetechvision.com/?p=566

te acercas En la carpeta www.onlinetechvision.com, habrá un archivo con la extensión corregida: index.html@p=566.html o index.html?p=566.html en los sistemas * NiX. Ahora es sencillo cambiar ese archivo a index.html incluso con un script.

Si está en Microsoft OS, asegúrese de tener la última versión de wget; también está disponible aquí: https://eternallybored.org/misc/wget/