web-dev-qa-db-fra.com

Comment obtenir le contenu d'une page Web dans une variable Shell?

Sous Linux, comment puis-je récupérer une URL et obtenir son contenu dans une variable du script Shell?

103
Aillyn

Vous pouvez utiliser la commande wget pour télécharger la page et la lire dans une variable sous la forme suivante:

content=$(wget google.com -q -O -)
echo $content

Nous utilisons l'option -O de wget qui nous permet de spécifier le nom du fichier dans lequel wget vide le contenu de la page. Nous spécifions - pour obtenir le dump sur la sortie standard et le rassembler dans la variable content. Vous pouvez ajouter l'option -q quiet pour désactiver la sortie wget.

Vous pouvez utiliser la commande curl pour cela aussi:

content=$(curl -L google.com)
echo $content

Nous devons utiliser l'option -L car la page que nous demandons a peut-être été déplacée. Dans ce cas, nous devons extraire la page du nouvel emplacement. L'option -L ou --location nous aide à cela.

174
codaddict

Il y a plusieurs façons d'obtenir une page à partir de la ligne de commande ... mais cela dépend également du code source ou de la page elle-même:

Si vous avez besoin du code source:

avec curl:

curl $url

avec wget:

wget -O - $url

mais si vous voulez obtenir ce que vous pouvez voir avec un navigateur, Lynx peut être utile:

lynx -dump $url

Je pense que vous pouvez trouver autant de solutions à ce petit problème que vous devriez peut-être lire toutes les pages de manuel de ces commandes. Et n'oubliez pas de remplacer $url par votre URL :)

Bonne chance :)

21
julianvdb

Il y a la commande wget ou le curl.

Vous pouvez maintenant utiliser le fichier que vous avez téléchargé avec wget. Ou vous pouvez gérer un flux avec curl.


Ressources:

9
Colin Hebert
content=`wget -O - $url`
3
Jim Lewis

Vous pouvez utiliser curl ou wget pour récupérer les données brutes ou vous pouvez utiliser w3m -dump pour obtenir une représentation Nice texte d'une page Web.

$ foo=$(w3m -dump http://www.example.com/); echo $foo
You have reached this web page by typing "example.com", "example.net","example.org" or "example.edu" into your web browser. These domain names are reserved for use in documentation and are not available for registration. See RFC 2606, Section 3.
2
Giacomo

Si vous avez LWP installé, il fournit un binaire simplement nommé " GET ".

 $ GET http://example.com 
 <! DOCTYPE HTML PUBLIC "- // W3C // DTD HTML 4.01 Transitional // FR"> 
 <HTML> 
 <HEAD> 
 <META http-equiv = "Contenu-Type" content = "text/html; charset = utf-8"> 
 <TITLE> Exemple de page Web </ TITLE > 
 </ HEAD> 
 <Body> 
 <P> Vous avez accédé à cette page Web en tapant "exemple.comquot;, 
" Exemple. netquot;, "exemple.orgquot 
 ou" exemple.eduquot; dans votre navigateur Web. </ p> 
 <p> Ces noms de domaine sont réservés à une utilisation dans la documentation et ne sont pas disponibles 
 pour l'enregistrement. Voir <a href="http://www.rfc-editor.org/rfc/rfc2606.txt"> RFC 
 2606 </a>, section 3. </ P> 
 < /BODY>
</HTML>

wget -O-, curl et lynx -source se comportent de la même manière.

2
ephemient