¿Cómo capturar texto en vivo desde una URL?
-
12-09-2019 - |
Pregunta
Estoy tratando de capturar todos los datos (texto) provenientes de una URL que envía texto constantemente. Intenté usar PHP, pero eso significaría tener el script ejecutándose todo el tiempo, para lo cual no está hecho (creo).Entonces terminé usando un script BASH.
Por el momento uso wget (no pude hacer que CURL envíe el texto a un archivo)
wget --tries=0 --retry-connrefused http://URL/ --output-document=./output.txt
Así que wget parece estar funcionando bastante bien, aparte de una cosa, cada vez que reinicio el script, wget borrará el archivo output.txt y comenzará a llenarlo nuevamente, que no es lo que quiero. ¿Hay alguna manera de decirle a wget que agregue al archivo txt?
Además, ¿es esta la mejor manera de capturar el flujo de datos en vivo?¿Debería usar un lenguaje diferente como Python o…?
Solución
Puede hacer wget --tries=0 --retry-connrefused $URL -O - >> output.txt
.
Explicación: los parámetros -O
es la abreviatura de --output-document
, y un medio tablero -
salida estándar .
La línea de command > file
significa escribir "escribir la salida de command
a file
", y los medios command >> file
" append salida del command
a file
", que es lo que desea.
Otros consejos
Curl no sigue las redirecciones por defecto y da salida a nada si no es una redirección. Siempre especifica la opción --location
por si acaso. Si desea utilizar curl
, trate de:
curl http://example.com --location --silent >> output.txt
La opción --silent
se apaga el indicador de progreso.
Usted podría intentar esto:
mientras que la verdadera
hacer
wget -q -O - http://example.com >> nombre de fichero # -O - salidas a la pantalla
el sueño del sueño 2 # 2 seg
hecho
http: // URL / >> salida.txt
el >> redirige la salida de rizo a Output.txt, añadiendo a los datos que ya existen. . (Si fuera sólo> salida.txt - eso sería sobrescribir el contenido de salida.txt cada vez que se ejecutó)