2010-09-18 15 views

Répondre

133

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

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 Libère le contenu de la page. Nous spécifions - pour obtenir le vidage sur la sortie standard et collecter cela dans la variable content. Vous pouvez ajouter l'option -q quiet pour désactiver la sortie wget.

Vous pouvez utiliser la commande curl pour cette aswell comme:

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

Nous devons utiliser l'option -L comme la page que nous demandons peut-être changé. Dans ce cas, nous devons obtenir la page du nouvel emplacement. L'option -L ou --location nous aide avec ceci.

+2

J'ai expliqué, et votre question a été éditée depuis, donc mon downvote ne veut plus rien dire ... (Il s'est en fait transformé en un upvote). –

+0

C'est un truc vraiment sympa. J'appelle un script shell via un script php sur un serveur proxy. Lorsqu'on lui demande, le serveur proxy allume les serveurs coûteux qui se ferment après 2 heures. J'ai besoin de la sortie de wget pour la sortie standard pour revenir à l'enregistrement de la console Jenkins. – Dennis

+0

je suis encore à obtenir ceci ... quelqu'un peut démontrer comment, par exemple. obtenir un tag img dans une variable pour ce lien http://www2.watchop.io/manga2/read/one-piece/1/4 ?? – juggernaut1996

9

Il existe la commande wget ou curl.

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


Ressources:

2
content=`wget -O - $url` 
+2

'$ (...)' est préféré à '' ... '', voir http://mywiki.wooledge.org/BashFAQ/082 – Giacomo

+2

Je suppose que je montre mon âge. De retour dans la journée, tout ce que nous avions étaient des backticks ... et nous l'aimions! Maintenant sortez de ma pelouse! –

+0

@rjack: (Mais l'article que vous avez lié à fait un très bon cas pour la syntaxe $ (...).) –

2

Vous pouvez utiliser curl ou wget pour récupérer les données brutes, ou vous pouvez utiliser w3m -dump pour avoir une belle représentation textuelle 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. 
20

il y a plusieurs façons de faire une page en ligne de commande ... mais cela dépend aussi si vous voulez que la source de code ou la page elle-même:

Si vous avez besoin de code source

avec boucle: curl $url

avec wget: wget -O - $url

mais si vous wa nt pour obtenir ce que vous pouvez voir avec un navigateur, le lynx peut être utile: lynx -dump $url

Je pense que vous pouvez trouver tant de solutions pour ce petit problème, peut-être vous devriez lire toutes les pages de manuel pour les commandes.Et ne pas oublier de remplacer $ url par votre url :)

Bonne chance :)

2

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//EN"> 
<HTML> 
<HEAD> 
    <META http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    <TITLE>Example Web Page</TITLE> 
</HEAD> 
<body> 
<p>You have reached this web page by typing &quot;example.com&quot;, 
&quot;example.net&quot;,&quot;example.org&quot 
    or &quot;example.edu&quot; into your web browser.</p> 
<p>These domain names are reserved for use in documentation and are not available 
    for registration. See <a href="http://www.rfc-editor.org/rfc/rfc2606.txt">RFC 
    2606</a>, Section 3.</p> 
</BODY> 
</HTML> 

wget -O-, curl et lynx -source comportent de manière similaire.