¿Cómo obtener el texto de una página usando wget sin html?

17

Si intento wget en una página web, obtengo la página como html. ¿Es posible recuperar solo el texto de un archivo sin html asociado? (Esto es necesario para mí, ya que algunas de las páginas HTML que contiene el programa c se están descargando con etiquetas html. Tengo que abrirlo en el navegador y copiar manualmente el texto para crear un archivo .c).

Hongos lunares
fuente
1
En realidad es posible, pero debe escribir alguna función que analice el código de la página y lo guarde como .c. No es difícil, pero depende de la estructura de la página. Si proporciona un enlace, alguien lo ayudará con el código exacto. De lo contrario sedo perlson tus amigos.
prisa el

Respuestas:

26

wgetsolo recuperará el documento. Si el documento está en HTML, lo que desea es el resultado de analizar el documento.

Podría, por ejemplo, usar lynx -dump -nolist, si tiene lince alrededor.

lynxes un navegador web simple y liviano, que tiene la -dumpfunción, utilizada para generar el resultado del proceso de análisis. -nolistevita la lista de enlaces al final, que aparecerá si la página tiene hipervínculos.

Como mencionó @Thor, también elinksse puede usar para esto, ya que también tiene una -dumpopción (y tiene -no-referencesque omitir la lista de enlaces). Puede ser especialmente útil si camina por algún sitio usando -sigh- frames (MTFBWY).

Además, tenga en cuenta que, a menos que la página sea realmente solo un código C con etiquetas HTML, deberá verificar el resultado, solo para asegurarse de que no haya nada más que código C allí.

njsg
fuente
5

Si no tiene estas otras herramientas instaladas, solo wget, y la página no tiene formato, solo texto y enlaces, por ejemplo, código fuente o una lista de archivos, puede eliminar el HTML usando sed de esta manera:

wget -qO- http://address/of/page/you/want/to/view/ | sed -e 's/<[^>]*>//g'

Esto usa wget para volcar la fuente de la página en STDOUT y sed para quitar cualquier par <> y cualquier cosa entre ellos.

Luego puede redirigir la salida del comando sed al archivo que desea crear usando>:

wget -qO- http://.../ | sed -e 's/<[^>]*>//g' > downloaded_file.txt

NB: es posible que tenga espacios en blanco adicionales en el archivo que no desea (por ejemplo, las líneas tienen sangría en algunas columnas)

Puede ser más fácil usar su editor de texto para ordenar el archivo (o un formateador fuente mientras descarga el código fuente C).

Si necesita hacer lo mismo en cada línea del archivo, puede incluir un comando para hacerlo en el comando sed (aquí eliminando un espacio inicial):

wget -qO- http://.../ | sed -e 's/<[^>]*>//g;s/^ //g' > downloaded_stripped_file.txt
JohnGH
fuente
3

solo para agregar otra herramienta. Prefiero w3m, que es lynxcomo un navegador de consola. Es posible que desee ver lo que ya está disponible en su sistema.

w3m -dump website.html
McPeppr
fuente