#1 Le 13/11/2025, à 21:12
- sputnick

[Tuto] Récupérer le texte d'une page web sans le bruit + écouter
Salut,
de mon coté, étant en veille très très active sur les LLM/embedding/RAG/agents, le besoin se fait sentir d'afficher une page web avec juste le texte, sans les menus, les entêtes (headers) le pied de page (footer) et autres bruits.
Du coup, c'est super intéressant, car on comprend comment les LLM font pour ne pas être pollués par ce bruit.
C'est finalement plus simple que je pensais,
trafilatura -u https://gnu.org --output-format txt
What is GNU?
GNU is an operating system that is free software—that is, it respects users' freedom. The GNU operating system consists of GNU packages (programs specifically released by the GNU Project) as well as free software released by third parties. The development of GNU made it possible to use a computer without software that would trample your freedom.
We recommend installable versions of GNU (more precisely, GNU/Linux distributions) which are entirely free software. More about GNU below.Nécessite l'installation de paquet pip install trafilatura
Version code, fichier fetcher.py:
#!/usr/bin/env python3
import sys, re, trafilatura
def fetch_text(url: str) -> str:
html = trafilatura.fetch_url(url)
if not html:
raise RuntimeError("Fetch failed")
txt = trafilatura.extract(html, output_format="txt") # texte propre
if not txt:
raise RuntimeError("Extraction failed")
# petit ménage: compacter les espaces/lignes
txt = re.sub(r"\n{3,}", "\n\n", txt).strip()
return txt
if __name__ == "__main__":
for u in sys.argv[1:]:
print(fetch_text(u))Dernière modification par sputnick (Le 17/11/2025, à 10:58)
Qui veut faire quelque chose trouve un moyen, qui ne veut rien faire trouve une excuse. Proverbe arabe
https://sputnick.fr
Hors ligne
#2 Le 14/11/2025, à 19:06
- k3c
Re : [Tuto] Récupérer le texte d'une page web sans le bruit + écouter
Sympa
En plus on a whisper qui sort un texte honorable d’un audio ou vidéo
Ou ffmpeg 8.0
Debian 12 sur Thinkpad reconditionné
Hors ligne
#3 Le 14/11/2025, à 19:19
- krodelabestiole

Re : [Tuto] Récupérer le texte d'une page web sans le bruit + écouter
on comprend comment les LLM font pour ne pas être pollués par ce bruit.
le html est censé être sémantique (sur un site bien conçu en tout cas), donc justement facile à parser, avec les éléments d'importance qui ressortent, et devraient effectivement être simples à extraire (différents niveaux de titres, paragraphes, etc.).
le "bruit" ça peut être du javascript, des metas, du CSS...
tout ce dont on peut aussi se débarasser en travaillant sur le DOM.
pour python : https://docs.python.org/fr/3/library/xml.dom.html
peut-être aussi : https://www.crummy.com/software/BeautifulSoup/ (plus haut niveau)
nouveau forum ubuntu-fr on en parle là : refonte du site / nouveau design
profil - sujets récurrents - sources du site
Hors ligne
#4 Le 14/11/2025, à 19:41
- sputnick

Re : [Tuto] Récupérer le texte d'une page web sans le bruit + écouter
Il faut aller voir le github du projet, c'est hyper bien foutu: https://github.com/adbar/trafilatura?tab=readme-ov-file
Extrait traduit: Ce travail a commencé comme un projet de doctorat au croisement de la linguistique et du NLP, cette expertise a été déterminante pour façonner Trafilatura au fil des ans. Initialement lancé pour créer des bases de données textuelles à des fins de recherche à l'Académie des sciences de Berlin-Brandebourg (unités DWDS et ZDL), ce paquetage continue d'être maintenu mais son avenir dépend du soutien de la communauté..
On est pas sur un Jean-Kevin qui bricole dans sa chambre
(Je n'ai rien contre les Jean-Kevin hein ^^)
Donc, pas besoin de réinventer la roue, puisque trafilatura fait déjà tout le taf de façon brillante, rapide et efficace.
C'est le vainqueur des benchmarks, catégorie Open Source des spiders pour LLM: https://github.com/scrapinghub/article- … -benchmark.
Qui veut faire quelque chose trouve un moyen, qui ne veut rien faire trouve une excuse. Proverbe arabe
https://sputnick.fr
Hors ligne
#5 Le 16/11/2025, à 11:55
- sputnick

Re : [Tuto] Récupérer le texte d'une page web sans le bruit + écouter
Sympa
En plus on a whisper qui sort un texte honorable d’un audio ou vidéo
Ou ffmpeg 8.0
Salut @k3c,
merci pour cette piste.
En cherchant, ça m'a permis de découvrir que whisper ne fait pas de TTS: Text To Speach, mais STS: Speach To Text
Pour faire du TTS moderne, j'ai trouvé piper qui est vraiment bon, même sur une config sans GPU et pas un foudre de guerre.
En Anglais US, la voix Bryce est la plus claire, posée, audible.
Il y a 5 ans, avoir une telle qualité était encore de la science fiction!
Pour installer:
mkdir piper_TTS
cd piper_TTS
sudo apt install python3-virtualenv python3-pip
virtualenv .
bin/pip install piper-tts
wget https://huggingface.co/rhasspy/piper-voices/resolve/main/en/en_US/bryce/medium/en_US-bryce-medium.onnx
wget https://huggingface.co/rhasspy/piper-voices/resolve/main/en/en_US/bryce/medium/en_US-bryce-medium.onnx.jsonVoici comment écouter une page web avec trafilatura et piper
bin/python3 -m piper -m en_US-bryce-medium --raw -- "$(trafilatura -u https://gnu.org --output-format txt | head -n3)" | mplayer /dev/stdinPour plutôt générer un .wav:
bin/python3 -m piper -m en_US-bryce-medium-f GNU.wav -- "$(trafilatura -u https://gnu.org --output-format txt | head -n3)"Retirer | head -n3 quand vous voulez aller plus loin que de tester.
Pour choisir d'autre voix, on peut les tester: https://rhasspy.github.io/piper-samples
Avec ça, non seulement on fait de la veille, mais en plus on améliore son Anglais oral ![]()
Dernière modification par sputnick (Le 16/11/2025, à 18:09)
Qui veut faire quelque chose trouve un moyen, qui ne veut rien faire trouve une excuse. Proverbe arabe
https://sputnick.fr
Hors ligne
#6 Le 16/11/2025, à 16:26
- k3c
Re : [Tuto] Récupérer le texte d'une page web sans le bruit + écouter
excellent ton idée !
sinon je viens de réaliser qu'il est possible de lire une page web sans plein de pub au milieu, exemple
trafilatura -u https://www.torquenews.com/17995/teslas-model-c-dilemma-peoples-car-or-porsche-914-mistake --output-format txt]si tu vas direct sur le site web c'est quasi illisible
oui je sais, il y a les bloqueurs de pub... qui sont souvent de moins en moins efficaces
il y a aussi NoScript, je sais, mais pour Mme Michu, bof
Debian 12 sur Thinkpad reconditionné
Hors ligne
#7 Le 16/11/2025, à 16:34
- k3c
Re : [Tuto] Récupérer le texte d'une page web sans le bruit + écouter
il faut modifier une config de mplayer ?
j'ai
$ bin/python3 -m piper -m en_US-bryce-medium --raw -- "$(trafilatura -u https://gnu.org --output-format txt | head -n3)" | mplayer /dev/stdin
Creating config file: /home/gg/.mplayer/config
MPlayer 1.5+svn38674-2 (Debian)do_connect: could not connect to socket
connect: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.
Playing /dev/stdin.
libavformat version 61.7.100 (external)
bash: bin/python3: Aucun fichier ou dossier de ce nom
Exiting... (End of file)Debian 12 sur Thinkpad reconditionné
Hors ligne
#8 Le 16/11/2025, à 17:26
- sputnick

Re : [Tuto] Récupérer le texte d'une page web sans le bruit + écouter
On dirait que ta config contient quelque chose qui empêche le pipe de fonctionner dans /home/gg/.mplayer/config.
Tu peux contourner via:
bin/python3 -m piper -m en_US-bryce-medium -f GNU.wav -- "$(trafilatura -u https://gnu.org --output-format txt | head -n3)"
mplayer GNU.wavCeux qui le veulent peuvent aussi traduire via l'API Deepl.com et faire le TTS en Français ![]()
Qui veut faire quelque chose trouve un moyen, qui ne veut rien faire trouve une excuse. Proverbe arabe
https://sputnick.fr
Hors ligne
#9 Le 16/11/2025, à 17:51
- k3c
Re : [Tuto] Récupérer le texte d'une page web sans le bruit + écouter
c'est étrange, je n'y arrive pas
$ bin/python3 -m piper -m en_US-bryce-medium -f GNU.wav -- "$(trafilatura -u https://gnu.org --output-format txt | head -n3)"
bash: bin/python3: Aucun fichier ou dossier de ce nom
$ python3 -m piper -m en_US-bryce-medium -f GNU.wav -- "$(trafilatura -u https://gnu.org --output-format txt | head -n3)"
/usr/bin/python3: No module named pipersinon comme tu peux le voir le fichier de config de mplayer a été créé lors de ma commande précédente, vu que j'avais installé mplayer juste avant (j'utilise mpv)
Perso j'ai un script qui télécharge des vidéos Youtube qui m'intéressent, et range dans le répertoire de l'auteur le texte des vidéos
vu que je lis beaucoup plus vite que j'écoute, et que je saute le baratin sans intérêt
#!/bin/bash
# Paramètres par défaut
lang="${2:-fr}"
extract="${3:-api}"
api_key="abc123def456"
# Vérification du paramètre obligatoire
if [ -z "$1" ]; then
echo "Usage: $0 URL [langue] [api|w]"
echo " - URL: l'URL de la vidéo à télécharger"
echo " - langue: code de langue (défaut: fr)"
echo " - mode: api pour LemonFox ou w pour Whisper (défaut: api)"
exit 1
fi
# Téléchargement audio avec capture directe du nom de fichier
echo "Téléchargement audio en cours..."
outfile=$(yt-dlp --restrict-filenames -o "%(channel)s-%(title)s.%(ext)s" -x --audio-format mp3 "$1" |
grep -Po '(?<=ExtractAudio] Destination: ).*(?=\.mp3)')".mp3"
# Vérification que le téléchargement a fonctionné
if [ ! -f "$outfile" ]; then
echo "Erreur: Le téléchargement a échoué ou le fichier n'a pas été trouvé."
exit 1
fi
# Création du répertoire de sortie basé sur le canal
download_dir="${outfile%%-*}"
output="${outfile%.mp3}.txt"
output_path="${download_dir}/$(basename "$output")"
# Création du répertoire s'il n'existe pas
if [ ! -d "${download_dir}" ]; then
mkdir "${download_dir}"
fi
echo "Fichier téléchargé: $outfile"
echo "Dossier de sortie: $download_dir"
echo "Fichier de transcription: $output_path"
# Transcription du fichier audio
echo "Transcription en cours via ${extract}..."
if [ "$extract" = "w" ]; then
# Utiliser Whisper localement
whisper "$outfile" > "$output_path" || {
echo "Erreur lors de la transcription avec Whisper"
exit 1
}
else
# Utiliser l'API LemonFox
curl -s https://api.lemonfox.ai/v1/audio/transcriptions \
-H "Authorization: $api_key" \
-F "file=@$outfile" \
-F "language=$lang" \
-F "response_format=json" > "$output_path" || {
echo "Erreur lors de la transcription avec l'API LemonFox"
exit 1
}
fi
# Vérification de la transcription
if [ ! -s "$output_path" ]; then
echo "Attention: Le fichier de transcription semble vide."
else
echo "Transcription terminée avec succès."
fi
# Nettoyage
rm -v "$outfile"
echo "Traitement terminé. Transcription enregistrée dans: $output_path"j'utilise plus l'API payante de lemonfox, mais ça a son intérêt
genre 5 s chez eux
20 à 30 minutes chez moi sur mon vieux PC qui est au max de CPU pendant tout ce temps
Debian 12 sur Thinkpad reconditionné
Hors ligne
#10 Le 16/11/2025, à 18:10
- sputnick

Re : [Tuto] Récupérer le texte d'une page web sans le bruit + écouter
La création du virtualenv a du échouer, j'ai mis à jour le tuto:
mkdir piper_TTS
cd piper_TTS
sudo apt install python3-virtualenv python3-pip
virtualenv .
bin/pip install piper-tts
wget https://huggingface.co/rhasspy/piper-voices/resolve/main/en/en_US/bryce/medium/en_US-bryce-medium.onnx
wget https://huggingface.co/rhasspy/piper-voices/resolve/main/en/en_US/bryce/medium/en_US-bryce-medium.onnx.jsonQui veut faire quelque chose trouve un moyen, qui ne veut rien faire trouve une excuse. Proverbe arabe
https://sputnick.fr
Hors ligne
#11 Le 16/11/2025, à 20:01
- k3c
Re : [Tuto] Récupérer le texte d'une page web sans le bruit + écouter
merci, ça marche impeccable
Debian 12 sur Thinkpad reconditionné
Hors ligne
#12 Le 17/11/2025, à 12:03
- sputnick

Re : [Tuto] Récupérer le texte d'une page web sans le bruit + écouter
Pour le français:
cd piper_TTS
wget https://huggingface.co/rhasspy/piper-voices/blob/main/fr/fr_FR/upmc/medium/fr_FR-upmc-medium.onnx
wget https://huggingface.co/rhasspy/piper-voices/blob/main/fr/fr_FR/upmc/medium/fr_FR-upmc-medium.onnx.jsonJe me suis fais des wrappers en bash pour appeller simplement:
#!/bin/bash
cd ~/sources/piper_TTS
. venv/bin/activate
if [[ $1 == http*://* ]]; then
arg="$(trafilatura -u "$1" --output-format txt)"
else
arg="$1"
fi
venv/bin/python -m piper -m fr_FR-upmc-medium -- "$arg" | mplayer -quiet /dev/stdinDans un fichier de prises de notes sur le sens de certains mots/expression Anglais-e-s, j'ai ce format:
wackadoodle: farfelu
Is it worth the hassle: est-ce que ca en vaut vraiment la peine?
rant: diatribe
Pull over to the right: rangez vous à droite
throw up: vomir
subtle: subtil
My hunch was right: mon intuition était bonne
The purpose of life: le but de la vie
hoochies: femmes attirantes mais vulgaires en argot américain
You'r so Cringe: vous êtes tellement bizarre
That's not likely: c'est peu probableDu coup, plutôt que de relire le texte et de ne pas forcement connaitre la prononciation et me lasser au bout de 3 secondes, j'apprends en m'amusant:
while IFS=: read -r en fr; do
echo "$en: $fr"
TTS_en_us "$en." &>/dev/null
TTS_fr "Ca veut dire: $fr..." &>/dev/null
done < <(shuf Anglais.txt)Dernière modification par sputnick (Le 17/11/2025, à 12:09)
Qui veut faire quelque chose trouve un moyen, qui ne veut rien faire trouve une excuse. Proverbe arabe
https://sputnick.fr
Hors ligne