Question

Je veux créer un script de ligne de commande pour Cygwin / Bash qui ouvre une session sur un site, accède à une page spécifique et la compare avec les résultats de la dernière course. Jusqu'à présent, je l'ai travailler avec Lynx comme ceci:

----snpipped, just setting variables----
echo "# Command logfile created by Lynx 2.8.5rel.5 (29 Oct 2005)
----snipped the recorded keystrokes-------
key Right Arrow
key p
key Right Arrow
key ^U" >> $tmp1 #p, right arrow initiate the page saving

#"type" the filename inside the "where to save" dialog
for i in $(seq 0 $((${#tmp2} - 1)))
do
    echo "key ${tmp2:$i:1}" >> $tmp1
done

#hit enter and quit
echo "key ^J
key y
key q
key y
" >> $tmp1

lynx -accept_all_cookies -cmd_script=$tmp1 https://thewebpage.com/login

diff $tmp2 $oldComp
mv $tmp2 $oldComp

Il ne se sent pas vraiment « droit »: le cmd_script consiste en des actions de l'utilisateur par rapport au lieu de spécifier les noms de lien exact et actions. Donc, si quoi que ce soit sur le site ne change jamais, change de place, ou un nouveau lien est ajouté - je vais devoir recréer les actions.

En outre, je ne peux pas vérifier toutes les erreurs, donc je ne peux pas abandonner le script si quelque chose se passe mal (échec de la connexion, etc.)

Une autre alternative que je cherchais à Mechanize est avec Ruby. (Comme une note - J'ai 0 expérience avec Ruby)

Quelle serait la meilleure façon d'améliorer ou de réécrire cela?

Était-ce utile?

La solution

Je pense que le lynx est un excellent outil pour des tâches simples d'automatisation web, mais bien sûr, il a ses limites. Si vous avez besoin de vérifier erreur, vous devez utiliser l'un des modules de Mécaniser pour Perl, Python ou Ruby (si vous ne savez pas de ces langues Python peut être celui d'apprendre le plus facile).

Pour rendre votre script lynx un peu plus robuste, vous pouvez utiliser la fonction de recherche pour sélectionner des liens. Sur certaines pages en utilisant la liste de liens (l) peut aider.

A la fin j'ajouter certains contrôles pour voir si les fichiers téléchargés est vraiment celui que vous voulez.

Autres conseils

Peut-wget être utile ici?

Il est http, https et DFT utilitaire de ligne de commande de téléchargement. Il est un logiciel libre (GNU). Il a de nombreuses options telles que l'authentification et Horodatage (uniquement télécharger un fichier si elle a changé depuis la dernière fois).

http://www.gnu.org/software/wget/

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top