¿Cómo puedo poner todos los comandos de sarga juntos en una sola pieza de código en un archivo .py?

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

  •  30-09-2019
  •  | 
  •  

Pregunta

Me acaban de comenzar a explorar TWILL .

Sarga es un lenguaje de script increíble para navegación por Internet y que hace todo lo que quiero !!!

Hasta ahora he estado usando sarga de un terminal de Python ( IDLE (Python GUI) para ser exactos) y hago las cosas que hay en el camino de la ejecución de comandos uno por uno (me refiero, escribo un comando, ejecutarlo, a continuación, escriba la siguiente orden): texto alternativo ??
(fuente: narod.ru )

texto alternativo ??
(fuente: narod.ru )

texto alternativo ??
(fuente: narod.ru )

texto alternativo ??
(fuente: narod.ru )

texto alternativo ??
(fuente: narod.ru )

texto alternativo ??
(fuente: narod.ru )

texto alternativo ??
(fuente: narod.ru )

Pero no sé cómo poner todos estos comandos juntos en un archivo .py, por lo que todos ellos serían ejecutados uno por uno automáticamente.

Parece que no existe tal posibilidad en sarga. Este ejemplo de la página de documentación de sarga (se puede ver en AQUÍ ) nos muestra una pieza de código que consta de varios comandos: texto alternativo ??
(fuente: narod.ru )

Por lo tanto, mi pregunta es: ¿Cómo puedo poner todos los comandos juntos en sarga?


Actualización 1:

(esta actualización es mi respuesta a S.Mark)

Hola, S.Mark !!! Lo siento por la respuesta tardía. En primer lugar, algo de información acerca de la ubicación de mi sarga y carpetas relacionados con Python:

La ruta donde está instalado python2.5 en mi equipo: C: \ Python25

El camino a mi sarga-0.9 en mi equipo ahora: E: \ tmp \ sarga-0.9

Vamos a decir que quiero los siguientes comandos para llevar a cabo de forma automática:

go http://www.yahoo.com

save_html result.html

Este código debe mirar en la página Yahoo y luego guardar su código HTML en el archivo result.html. Por lo tanto, tratando de seguir sus instrucciones, que en primer lugar, crea el archivo “test.txt” que contiene el código que consta de sólo 2 líneas y se guarda el archivo como “test.twill” en la carpeta de sarga-0.9, lo que significa tsombrero de la ruta completa al archivo que ahora era E: \ tmp \ sarga-0,9 \ test.twill

A continuación, traté de pasar el nombre de archivo como parámetro para sarga-sh comando de muchas maneras diferentes, pero nunca funcionó (Debo de haber estado haciendo algo mal): texto alternativo ??
(fuente: narod.ru )

texto alternativo ??
(fuente: narod.ru )

Pero sabes qué, decidí experimentar un poco y creé un archivo test.py que también contenía únicamente los dos comandos. Este archivo también lo coloca en la carpeta de sarga-0.9 (E: \ tmp \ sarga-0,9 \ test.py) y luego decidí intentar ejecutarlo desde la tela cruzada de la cáscara con el comando runfile de sarga, y, sorprendentemente, funcionó! : texto alternativo ??
(fuente: narod.ru )

Después de ejecutarlo, busqué mi C: \ Python25 carpeta y encontré el archivo result.html recién creado no

Bueno, lo que he hecho aquí es simplemente ejecutando un archivo de la cáscara de la tela cruzada mediante un comando de sarga. Mientras que en el momento en que es exactamente lo que necesito, otros partidarios (como se puede ver abajo) sugieren que debería hacer todas las cosas a partir de cáscara de pitón, no de sarga de concha, y eso es algo que yo todavía no sé cómo hacerlo.

Mi próximo paso será intentar ejecutar un código similar a “Google App Engine”, pero no, por lo que yo sé, sólo se registran Python, no sarga, lo que significa que si sólo sé cómo hacer las cosas en de la tela cruzada, pero no en pitón, no voy a ser capaz de tener “Google App Engine” ejecutar mis órdenes.


Actualización 2:

(Viernes 23, de abril de 2010, 03:48:15 am (GMT + 0.00))

(Esta actualización es mi segunda respuesta a S.Mark)

Parece que ejecutarlo desde símbolo del sistema no tiene éxito, ya sea: texto alternativo ??
(fuente: narod.ru )

¿Fue útil?

Solución

Ponga sus comandos de sarga en un archivo, por ejemplo test.twill

setlocal query "twill Python"

go http://google.com/

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

show

Y a continuación, sólo tiene que pasar nombre de archivo como parámetro para sarga-sh comando, como

python twill-sh test.twill

Y es posible que desee comprobar los códigos de ejemplo en la carpeta .twill tests de sarga de fuente

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

Otros consejos

Aquí está en acción (cambiado un poquito):

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

Yo uso Ubuntu así que utilizo lo siguiente para instalar BeautifulSoup y sarga:

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

¿Cómo esto ayuda

A

creo que en lugar de utilizar la cáscara de la tela cruzada, en su lugar debe llamar directamente a las funciones utilizando la pitón 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)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top