2010-09-18 18 views

Respuesta

133

Puede utilizar wget comando para descargar la página y leer en una variable como:

content=$(wget google.com -q -O -) 
echo $content 

Utilizamos la opción de wget-O, que nos permite especificar el nombre del archivo en el que wget vuelca el contenido de la página Especificamos - para obtener el volcado en la salida estándar y lo recogemos en la variable content. Puede agregar la opción silenciosa -q para desactivar la salida de wget.

Usted puede utilizar el comando curl para este aswell como:

content=$(curl -L google.com) 
echo $content 

Tenemos que utilizar la opción -L que la página que estamos solicitando que podría haber movido. En ese caso, necesitamos obtener la página de la nueva ubicación. La opción -L o --location nos ayuda con esto.

+2

Le expliqué, y su pregunta ha sido editada desde entonces, por lo que mi downvote ya no significa nada ... (En realidad se convirtió en un voto popular). –

+0

Este es un truco muy bueno. Invoco un script de shell a través de un script php en un servidor proxy. Cuando se le preguntó, el servidor proxy enciende servidores caros que se apagan después de 2 horas. Necesito la salida de wget para la salida estándar para retroalimentar el registro de la consola de Jenkins. – Dennis

+0

todavía estoy por obtener esto ... ¿alguien puede demostrar cómo, por ejemplo. obtener una etiqueta img en una variable para este enlace http://www2.watchop.io/manga2/read/one-piece/1/4 ?? – juggernaut1996

2
content=`wget -O - $url` 
+2

'$ (...)' es preferible a '' ... '', ver http://mywiki.wooledge.org/BashFAQ/082 – Giacomo

+2

Supongo que estoy mostrando mi edad. De vuelta en el día, todos _sue_ habíamos sido backticks ... ¡y nos gustó! ¡Ahora sal de mi césped! –

+0

@rjack: (Pero el artículo al que se vinculó hace un muy buen caso para la sintaxis de $ (...).) –

2

Puede utilizar curl o wget para recuperar los datos en bruto, o puede utilizar w3m -dump para tener una buena representación de texto de una página web.

$ foo=$(w3m -dump http://www.example.com/); echo $foo 
You have reached this web page by typing "example.com", "example.net","example.org" or "example.edu" into your web browser. These domain names are reserved for use in documentation and are not available for registration. See RFC 2606, Section 3. 
20

hay muchas maneras de obtener una página en la línea de comandos ... pero también depende de si desea que el código fuente o la propia página:

Si necesita el código fuente

con curl: curl $url

con wget: wget -O - $url

pero si wa nt para conseguir lo que se puede ver con un navegador, el lince puede ser útil: lynx -dump $url

creo que se puede encontrar tantas soluciones para este pequeño problema, tal vez debería leer toda la página hombre de dichos comandos.Y no se olvide de reemplazar $ url por su URL :)

Buena suerte :)

2

Si tiene LWP instalado, se proporciona un binario llamado simplemente "GET".

 
$ GET http://example.com 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<HTML> 
<HEAD> 
    <META http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    <TITLE>Example Web Page</TITLE> 
</HEAD> 
<body> 
<p>You have reached this web page by typing &quot;example.com&quot;, 
&quot;example.net&quot;,&quot;example.org&quot 
    or &quot;example.edu&quot; into your web browser.</p> 
<p>These domain names are reserved for use in documentation and are not available 
    for registration. See <a href="http://www.rfc-editor.org/rfc/rfc2606.txt">RFC 
    2606</a>, Section 3.</p> 
</BODY> 
</HTML> 

wget -O-, curl y lynx -source comportan de manera similar.

Cuestiones relacionadas