Fish Shell:
Analyse Syntaxique du HTML
Comment faire :
Principalement, Fish shell n’est pas conçu pour analyser directement le HTML. Toutefois, il excelle à assembler des outils Unix tels que curl
, grep
, sed
, awk
, ou à utiliser des outils spécialisés comme pup
ou beautifulsoup
dans un script Python. Voici des exemples qui montrent comment tirer parti de ces outils depuis Fish shell pour analyser le HTML.
Utiliser curl
et grep
:
Récupérer du contenu HTML et extraire les lignes contenant des liens :
curl -s https://example.com | grep -oP '(?<=href=")[^"]*'
Sortie :
/page1.html
/page2.html
...
Utiliser pup
(un outil en ligne de commande pour analyser le HTML) :
Tout d’abord, assurez-vous que pup
soit installé. Ensuite, vous pouvez l’utiliser pour extraire des éléments par leurs tags, ids, classes, etc.
curl -s https://example.com | pup 'a attr{href}'
La sortie, similaire à l’exemple de grep
, listerait les attributs href des balises <a>
.
Avec un script Python et beautifulsoup
:
Bien que Fish lui-même ne puisse pas analyser nativement le HTML, il s’intègre de manière transparente avec les scripts Python. Voici un exemple concis qui utilise Python avec BeautifulSoup
pour analyser et extraire des titres à partir de HTML. Assurez-vous d’avoir beautifulsoup4
et requests
installés dans votre environnement Python.
parse_html.fish
function parse_html -a url
python -c "
import sys
import requests
from bs4 import BeautifulSoup
response = requests.get(sys.argv[1])
soup = BeautifulSoup(response.text, 'html.parser')
titles = soup.find_all('title')
for title in titles:
print(title.get_text())
" $url
end
Utilisation :
parse_html 'https://example.com'
Sortie :
Domaine Exemple
Chacune de ces méthodes sert des cas d’usage et des échelles de complexité différentes, allant de la simple manipulation de texte en ligne de commande à la pleine puissance d’analyse de beautifulsoup
dans les scripts Python. Selon vos besoins et la complexité de la structure HTML, vous pouvez choisir une approche de pipeline Unix simple ou une approche de scriptage plus puissante.