Comment récupérer du texte en direct à partir d’une URL ?
-
12-09-2019 - |
Question
J'essaie de récupérer toutes les données (texte) provenant d'une URL qui envoie constamment du texte, j'ai essayé d'utiliser PHP mais cela signifierait que le script s'exécute tout le temps, ce pour quoi il n'est pas vraiment fait (je pense).J'ai donc fini par utiliser un script BASH.
Pour le moment, j'utilise wget (je n'ai pas réussi à faire en sorte que CURL affiche le texte dans un fichier)
wget --tries=0 --retry-connrefused http://URL/ --output-document=./output.txt
Donc wget semble fonctionner plutôt bien, à part une chose, chaque fois que je redémarre le script, wget effacera le fichier output.txt et recommencera à le remplir, ce qui n'est pas ce que je veux. Existe-t-il un moyen de dire à wget d'ajouter au fichier txt ?
Est-ce également le meilleur moyen de capturer le flux de données en direct ?Dois-je utiliser un autre langage comme Python ou… ?
La solution
Tu peux faire wget --tries=0 --retry-connrefused $URL -O - >> output.txt
.
Explication:Les paramètres -O
est l'abréviation de --output-document
, et un tiret -
moyens sortie standard.
La ligne command > file
signifie écrire "écrire la sortie de command
à file
", et command >> file
moyens "ajouter sortie de command
à file
" c'est ce que tu veux.
Autres conseils
Curl ne suit pas les redirections par défaut et ne génère rien s'il y a une redirection.Je précise toujours le --location
option juste au cas où.Si vous souhaitez utiliser curl
, essayer:
curl http://example.com --location --silent >> output.txt
Le --silent
L’option désactive l’indicateur de progression.
Tu pourrais essayer ceci :
bien que vrai
faire
wget -q -O - http://exemple.com >> nom de fichier # -O - sorties à l'écran
dormir 2 # dormir 2 sec
fait
boucle http://URL/ >> sortie.txt
le >> redirige la sortie de curl vers output.txt, en l'ajoutant à toutes les données déjà présentes.(Si c'était juste > output.txt - cela écraserait le contenu de output.txt à chaque fois que vous l'exécuteriez).