Come posso mettere tutti i comandi della saia insieme in un pezzo di codice in un file .py?

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

  •  30-09-2019
  •  | 
  •  

Domanda

Ho appena iniziato ad esplorare TWILL .

Twill è un linguaggio di scripting sorprendente per la navigazione Web e fa tutto quello che voglio !!!

Finora ho usato twill da una shell Python ( IDLE (Python GUI) per la precisione) e io ci faccio le cose nel modo di eseguire comandi uno per uno (voglio dire, digito un comando, eseguirlo, quindi digitare il comando successivo): alt text
(fonte: narod.ru )

alt text
(fonte: narod.ru )

alt text
(fonte: narod.ru )

alt text
(fonte: narod.ru )

alt text
(fonte: narod.ru )

alt text
(fonte: narod.ru )

alt text
(fonte: narod.ru )

Ma io non so come mettere tutti questi comandi insieme in un unico file .py, in modo che essi sarebbero stati tutti eseguiti uno per uno automaticamente.

Sembra che ci sia questa possibilità in twill. Questo esempio dalla pagina di documentazione saia (si può vedere qui ) ci mostra un pezzo di codice costituito da vari comandi: alt text
(fonte: narod.ru )

Quindi, la mia domanda è: Come posso mettere tutti i comandi insieme in twill?


Aggiornamento 1:

(questo aggiornamento è la mia risposta a S.Marco)

Ciao, S.Marco !!! Mi dispiace per il ritardo di risposta. Prima di tutto, alcune informazioni circa la posizione della mia twill e cartelle relative pitone:

Il percorso in cui Python2.5 è installato sul mio computer: C: \ Python25

Il percorso per il mio twill-0.9 sul mio computer ora: E: \ tmp \ twill-0.9

dire Let voglio i seguenti comandi da eseguire automaticamente:

go http://www.yahoo.com

save_html result.html

Il codice dovrebbe esaminare pagina Yahoo e quindi salvare il suo codice HTML in file di result.html. Così, cercando di seguire le vostre istruzioni, ho innanzitutto creato un file “test.txt” che contiene questo codice composto da soli 2 linee e salvato il file come “test.twill” nella cartella twill-0.9, il che significa che tcappello il percorso completo al file ora è stato di E: \ tmp \ Saia-0.9 \ test.twill

Poi ho cercato di passare il nome del file come parametro per Saia-sh comando in molti modi diversi, ma non ha mai funzionato (Devo aver fatto qualcosa di sbagliato): alt text
(fonte: narod.ru )

alt text
(fonte: narod.ru )

Ma sai cosa, ho deciso di sperimentare un po 'e ha creato un file test.py che conteneva anche solo quei due comandi. Questo file ho anche inserito nella cartella twill-0.9 (E: \ tmp \ Saia-0.9 \ test.py) e poi ho deciso di provare a eseguirlo da twill di shell utilizzando il comando RUNFILE di twill, e, a sorpresa, ha funzionato! : alt text
(fonte: narod.ru )

Dopo l'esecuzione di esso, ho guardato il mio C: \ Python25 cartella e ho trovato il file appena creato result.html ci

Bene, quello che ho fatto qui è semplicemente in esecuzione di un file dalla shell twill utilizzando un comando twill. Mentre al momento è esattamente quello che mi serve, altri sostenitori (come potete vedere qui sotto) suggerisco devo fare tutte le cose da shell Python, non dal twill di shell, e questo è qualcosa che io ancora non so come fare.

Il mio prossimo passo sarà quello di provare a eseguire un codice simile a “Google App Engine”, ma non c'è, per quanto ne so, solo Python viene riconosciuto, non è saia, il che significa che se so solo come fare le cose in twill, ma non in python, non sarò in grado di avere “Google App Engine” eseguire i miei comandi.


Aggiornamento 2:

(Venerdì 23 aprile 2010, 03:48:15 (GMT + 0.00))

(Questo aggiornamento è la mia seconda risposta a S.Marco)

Sembra che l'esecuzione da riga di comando non è riuscita neanche: alt text
(fonte: narod.ru )

È stato utile?

Soluzione

Mettere i comandi twill in un file, ad esempio test.twill

setlocal query "twill Python"

go http://google.com/

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

show

E poi basta passare il nome del file come parametro per Saia-sh di comando, come

python twill-sh test.twill

E si potrebbe desiderare di controllare i codici di esempio nella cartella .twill tests di twill fonte

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
....

Altri suggerimenti

Qui è in azione (cambiato un pochino):

>>> 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>
>>>  

io uso ubuntu in modo da uso il seguente installare BeautifulSoup e twill:

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

Come questo aiuta

A

Credo che invece di utilizzare la shell twill, si dovrebbe invece chiamare direttamente le funzioni utilizzando il 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)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top