Comment puis-je mettre toutes les commandes de sergé en un seul morceau de code dans un fichier .py?

StackOverflow https://stackoverflow.com/questions/2688408

  •  30-09-2019
  •  | 
  •  

Question

Je viens de commencer à explorer SERGÉ .

Twill est un langage de script pour la navigation Web étonnante et il fait tout ce que je veux !!!

Jusqu'à présent, je me sers d'un sergé shell Python ( IDLE (GUI Python) pour être précis) et je fais des choses là-bas de la manière d'exécuter les commandes un par un (je veux dire, Je tape une commande, exécuter, puis tapez la commande suivante):
(source: narod.ru )


(source: narod.ru )


(source: narod.ru )


(source: narod.ru )


(source: narod.ru )


(source: narod.ru )


(source: narod.ru )

Mais je ne sais pas comment mettre toutes ces commandes dans un seul fichier .py, de sorte qu'ils seraient tous exécutés automatiquement un par un.

Il semble qu'il y ait une telle possibilité en twill. Cet exemple de la page de documentation sergé (vous pouvez le voir ICI ) nous montre une pièce de code composé de plusieurs commandes: text alt
(source: narod.ru )

Alors, ma question est: Comment puis-je mettre toutes les commandes ensemble en twill?


Mise à jour 1:

(cette mise à jour est ma réponse à St Marc)

Bonjour, St Marc !!! Je suis désolé pour la réponse tardive. Tout d'abord, quelques informations sur l'emplacement de mon sergé et les dossiers liés à python:

Le chemin où python2.5 est installé sur mon ordinateur: C: \ Python25

Le chemin de mon sergé 0.9 maintenant sur mon ordinateur: E: \ tmp \ twill-0.9

LET dire de Je veux que les commandes suivantes à effectuer automatiquement:

go http://www.yahoo.com

save_html result.html

Ce code devrait se pencher sur la page Yahoo et puis enregistrez le code HTML dans le fichier result.html. Donc, en essayant de suivre vos instructions, je tout d'abord créé le fichier « test.txt » contenant ce code composé de seulement 2 lignes et ce fichier comme sauvé « test.twill » dans le dossier twill-0,9, ce qui signifie tchapeau le chemin complet vers ce fichier maintenant était E: \ tmp \ twill 0,9 \ test.twill

Alors j'ai essayé de passer le nom du fichier en tant que paramètre de commande twill-sh de plusieurs façons différentes, mais il n'a jamais travaillé (je faisais mal dois avez quelque chose): text alt
(source: narod.ru )


(source: narod.ru )

Mais vous savez quoi, j'ai décidé d'expérimenter un peu et créé un fichier test.py qui contenait également que ces deux commandes. Ce fichier J'ai également placé dans le dossier twill-0.9 (E: \ tmp \ twill 0,9 \ test.py) puis j'ai décidé d'essayer de l'exécuter serge shell en utilisant la commande runfile de twill, et, de façon surprenante, cela a fonctionné! : text alt
(source: narod.ru )

Après l'exécution, je regardais mon C: dossier \ Python25 et trouvé le fichier result.html nouvellement créé il y a

Eh bien, ce que je l'ai fait ici est tout simplement un fichier en cours d'exécution à partir du shell sergé en utilisant une commande sergé. Alors que pour le moment il est exactement ce que je dois, d'autres partisans (comme vous pouvez le voir ci-dessous) suggère que je dois faire toutes les choses de shell python, pas de twill shell, et c'est quelque chose que je ne sais pas encore comment faire.

La prochaine étape consistera à essayer d'exécuter un code similaire sur « Google App Engine », mais, pour autant que je sache, que Python est reconnu, pas twill, ce qui signifie que si je ne sais comment faire les choses sergé, mais pas en python, je ne serai pas en mesure d'avoir « Google App Engine » exécuter mes ordres.


Mise à jour 2:

(vendredi 23, Avril 2010, 03:48:15 (GMT + 0,00))

(Cette mise à jour est ma deuxième réponse à St Marc)

Il semble que l'exécuter à partir invite de commande ne réussit pas non plus: text alt
(source: narod.ru )

Était-ce utile?

La solution

Mettez vos commandes sergé dans un fichier, par exemple test.twill

setlocal query "twill Python"

go http://google.com/

fv 1 q $query
submit btnI     # use the "I'm feeling lucky" button

show

Et puis juste passer le nom de fichier en tant que paramètre de commande twill-sh, comme

python twill-sh test.twill

Et vous pouvez vérifier les codes .twill échantillons dans le dossier tests de twill source

test-back.twill
test-basic.twill
test-dns.twill
test-equiv-refresh.twill
test-find.twill
test-form.twill
test-formfill.twill
test-global-form.twill
test-go-exit.twill
....

Autres conseils

Ici, il est dans l'action (un peu changé wee):

>>> import twill.commands
>>> import BeautifulSoup
>>> 
>>> class browser:
...    def __init__(self, url="http://www.google.com",log = None):
...       self.a=twill.commands
...       self.a.config("readonly_controls_writeable", 1)
...       self.b = self.a.get_browser()
...       self.b.set_agent_string("Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14")
...       self.log = log
...       self.b.clear_cookies()
...       self.url=url
...    def googleQuery(self, query="python code"):
...       self.b.go(self.url)
...       #self.b.showforms()
...       f = self.b.get_form("f")
...       #print "form is %s" % f
...       f["q"] = query
...       self.b.clicked(f, "btnG")
...       self.b.submit()
...       pageContent = self.b.get_html()
...       soup=BeautifulSoup.BeautifulSoup(pageContent)
...       ths = soup.findAll(attrs={"class" : "l"})
...       for a in ths:
...          print a
... 
>>> t=browser()
>>> t.googleQuery("twill queries")
==> at http://www.google.ie/
Note: submit is using submit button: name="btnG", value="Google Search"

<a href="http://pyparsing.wikispaces.com/WhosUsingPyparsing" class="l" onmousedown="return clk(this.href,'','','res','1','','0CBMQFjAA')">pyparsing - WhosUsingPyparsing</a>
<a href="http://www.mail-archive.com/twill@lists.idyll.org/msg00048.html" class="l" onmousedown="return clk(this.href,'','','res','2','','0CBcQFjAB')">Re: [<em>twill</em>] <em>query</em>: docs, and web site.</a>
<a href="http://www.mail-archive.com/twill@lists.idyll.org/msg00050.html" class="l" onmousedown="return clk(this.href,'','','res','3','','0CBkQFjAC')">Re: [<em>twill</em>] <em>query</em>: docs, and web site.</a>
<a href="http://www.genealogytoday.com/surname/finder.mv?Surname=Twill" class="l" onmousedown="return clk(this.href,'','','res','4','','0CB4QFjAD')"><em>Twill</em> Genealogy and Family Tree Resources - Surname Finder</a>
<a href="http://a706cheap-apparel.hobby-site.com/ladies-cotton-faded-twill-le-chameau-breeks-42" class="l" onmousedown="return clk(this.href,'','','res','5','','0CCEQFjAE')">Ladies Cotton Faded <em>Twill</em> Le Chameau Breeks 42</a>
<a href="http://twill.idyll.org/examples.html" class="l" onmousedown="return clk(this.href,'','','res','6','','0CCMQFjAF')"><em>twill</em> Examples</a>
<a href="http://panjiva.com/Sri-Lankan-Manufacturers-Of/twill+capri" class="l" onmousedown="return clk(this.href,'','','res','7','','0CCcQFjAG')">Sri-Lankan <em>Twill</em> Capri Manufacturers | Sri-Lankan Suppliers of <b>...</b></a>
<a href="http://c586cheap-apparel.dyndns.ws/twill-beige-blazer" class="l" onmousedown="return clk(this.href,'','','res','8','','0CCoQFjAH')"><em>Twill</em> beige blazer</a>
<a href="http://stackoverflow.com/questions/2267537/how-do-you-use-relative-paths-for-twill-tests" class="l" onmousedown="return clk(this.href,'','','res','9','','0CCwQFjAI')">How do you use Relative Paths for <em>Twill</em> tests? - Stack Overflow</a>
<a href="http://mytextilenotes.blogspot.com/2010/01/introduction-to-twill-weave.html" class="l" onmousedown="return clk(this.href,'','','res','10','','0CC8QFjAJ')">My Textile Notes: Introduction to <em>Twill</em> Weave</a>
>>>  

J'utilise ubuntu donc j'utiliser ce qui suit pour installer BeautifulSoup et twill:

sudo apt-get install BeautifulSoup*  
sudo apt-get install python-twill*

Comment cela aide

Je pense qu'au lieu d'utiliser la sergé, vous devriez plutôt appeler directement les fonctions utilisant le twill python api href="http://twill.idyll.org/python-api.html" rel="nofollow noreferrer"> http://twill.idyll.org/python-api.html .

import string, re, sys, os
import twill.commands

class browser:
   def __init__(self, url="www.google.com", query="python code", log = None):
      self.a=twill.commands
      self.a.config("readonly_controls_writeable", 1)
      self.b = self.a.get_browser()
      self.b.set_agent_string("Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14")
      self.log = log
      self.b.clear_cookies()
      self.url=url
      self.b.go(self.url)
      f = self.b.get_form("1")
#      self.log.debug("form is %s" % f)
      f["q"] = query
      self.b.submit()
      self.log.debug( "Links\n%s" % self.b.showlinks())
      self.log.debug( "Forms\n%s" % self.b.showforms())
      pageContent = self.b.get_html()
      self.log.debug("html is <<%s>>" % pageContent)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top