Con un navegador web (IE o Chrome) puedo guardar una página web (.html) con Ctl-S, inspeccionarla con cualquier editor de texto y ver los datos en formato de tabla. Quiero extraer uno de esos números, pero para muchas, muchas páginas web, demasiadas para hacerlo manualmente. Así que me gustaría usar WGET para obtener esas páginas web una tras otra, y escribir otro programa para analizar el .html y recuperar el número que quiero. Pero el archivo .html guardado por WGET cuando usa la misma URL que el navegador no contiene la tabla de datos. Por qué no? Es como si el servidor detectara que la solicitud proviene de WGET y no de un navegador web, y proporciona una página web esqueleto, que carece de la tabla de datos. ¿Cómo puedo obtener exactamente la misma página web con WGET? - ¡Gracias!
MÁS INFORMACIÓN:
Un ejemplo de la URL que estoy tratando a buscar es: http://performance.morningstar.com/fund/performance-return.action?t=ICENX®ion=usa&culture=en-US donde el ICENX cadena es un símbolo de fondos de inversión , que estaré cambiar a cualquiera de un número de diferentes símbolos de cotización. Esta descarga una tabla de datos cuando se ve en un navegador, pero la tabla de datos no se encuentra si descabellada con WGET.
Respuestas:
Como notó roadmr , la tabla en esta página es generada por javascript. wget no es compatible con javascript, simplemente voltea la página tal como la recibió del servidor (es decir, antes de que se ejecute ningún código javascript) y, por lo tanto, falta la tabla.
Necesita un navegador sin cabeza que admita JavaScript como phantomjs :
con save_page.js:
Entonces, si solo desea extraer algo de texto, lo más fácil podría ser renderizar la página con w3m:
y / o modifique el script phantomjs para volcar lo que le interesa.
fuente
Puede descargar un sitio web completo usando
wget --mirror
Ejemplo:
La línea de comando anterior que desea ejecutar cuando desea descargar un sitio web completo y está disponible para su visualización local.
Opciones:
--mirror
activa las opciones adecuadas para duplicar.-p
descarga todos los archivos que son necesarios para mostrar correctamente una página HTML determinada.--convert-links
después de la descarga, convierta los enlaces en el documento para su visualización local.-P ./LOCAL-DIR
guarda todos los archivos y directorios en el directorio especificado.Para obtener más información sobre las opciones de Wget, lea más este artículo: Descripción general sobre todos los comandos de wget con ejemplos , o consulte la página de manual de Wget .
fuente
En lugar de
--recursive
, que simplemente continuará y "arañará" cada enlace en su URL, use--page-requisites
. Debería comportarse exactamente como las opciones que describe en los navegadores gráficos.Para obtener más información,
man wget
busque y busque la--page-requisites
opción (use "/" para buscar mientras lee una página de manual).fuente
Si la respuesta del servidor difiere dependiendo de una fuente que pregunta, se debe principalmente a la variable HTTP_USER_AGENT (solo una cadena de texto) que se proporciona con una solicitud de la fuente que pregunta, informando al servidor sobre la tecnología.
Puede consultar su agente de navegador aquí -> http://whatsmyuseragent.com
Según el manual de WGET, este parámetro debería hacer el trabajo
--user-agent=AGENT
.Si esto no ayuda, es decir, puede ser necesario el procesamiento de JavaScript para obtener la misma página que un navegador, o tal vez una solicitud apropiada con parámetros GET para que el servidor prepare una respuesta que no requiera JavaScript para llenar la página.
fuente