¿Cómo combinar sarga y Python en un código que se puede ejecutar en “Google App Engine”?

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

Pregunta

He instalado en mi equipo sarga (habiendo instalado previamente Python 2.5) y han estado usando recientemente.

Python se instala en el disco C en mi equipo: C: \ Python25

Y la carpeta de la tela cruzada ( “Tela-0,9”) se encuentra aquí: E: \ tmp \ sarga-0.9

Aquí hay un código que he estado usando en sarga:

go “some website’s sign-in page URL”
formvalue 2 userid “my login”
formvalue 2 pass “my password”
submit
go “URL of some other page from that website”
save_html result.txt

Este código me ayuda a conectarse a un sitio web, en el que tengo una cuenta, registrar el código HTML de alguna otra página de ese sitio web (que puedo acceder sólo después de iniciar sesión), y almacenarlo en un archivo llamado “Result.txt” (por supuesto, antes de utilizar este código en primer lugar necesito reemplazar “mi nombre de usuario” con mi verdadero inicio de sesión, “contraseña” con mi contraseña real “de inicio de sesión de un sitio web URL de la página” y “URL de algunos otra página de ese sitio web”con la URL real de la página web, y el número 2 con el número de la forma en que el sitio web que se utiliza como una señal en forma de registro en la página de dicho sitio web)

Esto me tienda de código en “test.twill” archivo que se encuentra en mi carpeta “Tela-0.9”: E: \ tmp \ sarga-0,9 \ test.twill Corro este archivo de mi símbolo del sistema: Pitón de sarga-sh test.twill

Ahora, también he instalado “Google App Engine SDK” de “Google App Engine” y también han estado usando durante un tiempo.

Por ejemplo, he estado utilizando este código:

import hashlib
m = hashlib.md5()
m.update("Nobody inspects")
m.update(" the spammish repetition ")
print m.hexdigest()

Este código ayuda a transformar la frase “Nadie inspecciona la repetición spammish” en MD5.

Ahora, ¿cómo puedo poner estas dos piezas de código juntos en un script en Python que podía funcionar en “Google App Engine”?

digamos Vamos, quiero que mi código para iniciar sesión en un sitio web de “Google App Engine”, ir a otra página en ese sitio web, registrar su código HTML (que es lo que mi código de sarga hace) y de transformar este código HTML en su resumen md5 (que es lo que hace mi segundo código). Así que, ¿cómo puedo combinar esos dos códigos en un solo código Python?

supongo, debe hacerse alguna manera mediante la importación de sarga, pero ¿cómo puede ser hecho? ¿Puede un código Python - el que está siendo dirigido por “Google App Engine” - sarga de importación de algún sitio en el Internet? O, tal vez, tela cruzada ya está instalado en “Google App Engine”?


Actualización 1:

(esta actualización es mi respuesta a la respuesta de Wooble)

Esta es la lista de todas las carpetas (en mi carpeta “Tela-0,9”) que contienen archivos __init__.py. (Algunas carpetas en esta lista se encuentran dentro de otras carpetas, que también se mencionan en esta lista):

E: \ sarga-0,9 \ build \ lib \ sarga \ extensiones \ match_parse

E: \ sarga-0,9 \ build \ lib \ sarga \ extensiones

E: \ sarga-0,9 \ build \ lib \ sarga \ other_packages \ _mechanize_dist

E: \ sarga-0,9 \ build \ lib \ sarga \ other_packages

E: \ sarga-0,9 \ build \ lib \ sarga

E: \ sarga-0,9 \ sarga \ extensiones \ match_parse

E: \ sarga-0,9 \ sarga \ extensiones

E: \ sarga-0,9 \ sarga \ other_packages \ _mechanize_dist

E: \ sarga-0,9 \ sarga \ other_packages

E: \ sarga-0,9 \ sarga

¿Fue útil?

Solución

Para utilizar las bibliotecas de terceros en proyectos de App Engine, usted simplemente tiene que incluirlos con su aplicación al implementar. Copie la carpeta de la tela cruzada (la que contiene __init__.py) en la carpeta de su aplicación y desplegarla.

En cuanto al proyecto de Google Code sarga, parece que incluye la tela cruzada de sus dependencias (pyparsing, Mecanización, etc.) en el paquete, por lo que no puede necesitar incluir cualquier otra cosa.

Otros consejos

aquí es un ejemplo del uso de la tela cruzada para ejecutar una búsqueda en Google si esto ayuda. Muestra el uso de sarga y BeautifulSoup junto a las páginas web de análisis sintáctico:

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

Ni idea de lo que hace sarga (bueno, buscado en Google), pero las ofertas de AppEngine función fetch() que se puede utilizar a buscar páginas web. También es compatible con el método POST, por ejemplo, para inicios de sesión.

(dudo sarga obras en App Engine, porque AppEngine ha limitado bibliotecas pitón disponibles por razones de seguridad. Sólo una conjetura, sin embargo.)

Creo que usted está buscando una manera de importar el módulo de sarga en App-motor. Vas a tener que averiguar, ya sea en los archivos de la tela cruzada de pitón son o cómo conseguir un paquete fuente de ellos para empaquetar con su sitio web, pero parece que la importación de módulos de 3 ª parte se puede hacer con unas pocas excepciones, véase más adelante.

Trate zipimport siguiendo las instrucciones de la página de Google aquí y aquí .

de la página biblioteca de terceros de Google:

  

App Engine utiliza una versión personalizada de la función zipimport en lugar de la implementación estándar. Por lo general, funciona de la manera habitual: añadir el archivo Zip a sys.path, a continuación, importar como de costumbre. Con estas excepciones:   zipimport módulos sólo puede importación almacenada en el archivo como archivos de origen .py. Puede módulos de importación no se almacena como .pyc o .pyo archivos.   zipimport está implementado en Python puro, y no utiliza código nativo para la descompresión (código C).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top