Comment combiner sergé et python dans un code qui pourrait être exécuté sur « Google App Engine »?

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

Question

J'ai installé twill sur mon ordinateur (après avoir Python 2.5 précédemment installé) et ont été récemment l'utiliser.

Python est installé sur le disque C sur mon ordinateur: C: \ Python25

Et le dossier sergé ( « sergé 0.9 ») se trouve ici: E: \ tmp \ twill-0.9

Voici un code que je l'ai utilisé en twill:

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

Ce code me permet de vous connecter à un site Web, où je compte, notez le code HTML d'une autre page de ce site (que je peux accéder seulement après connexion), et le stocker dans un fichier nommé « result.txt » (bien sûr, avant d'utiliser ce code, je dois tout d'abord de remplacer « mon login » avec ma connexion réelle, « mon mot de passe » avec mon vrai mot de passe, « signe dans l'URL de la page d'un certain site Web » et « URL de certains les autres pages de ce site Web » avec de vraies URL de ce site Web, et le numéro 2 avec le numéro du formulaire sur ce site qui est utilisé comme un signe en forme sur le journal en page de ce site)

Ce code je stocke dans le fichier « test.twill » qui se trouve dans mon dossier « sergé 0.9 »: E: \ tmp \ twill 0,9 \ test.twill Je lance ce fichier de mon invite de commande: twill-sh python test.twill

Maintenant, je aussi ai installé « Google App Engine SDK » de « Google App Engine » et ont également été l'utiliser pendant un certain temps.

Par exemple, je suis en utilisant ce code:

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

Ce code me permet de transformer l'expression « Personne n'inspecte la répétition spammish » dans md5 Digest.

Maintenant, comment puis-je mettre ces deux morceaux de code en un seul script python que je pouvais courir sur « Google App Engine »?

Le mot Let, je veux que mon code pour se connecter à un site Web de « Google App Engine », passez à une autre page sur ce site, enregistrer son code HTML (c'est ce que mon code twill fait) et que transformer ce code HTML dans son empreinte MD5 (c'est ce que fait mon second code). Alors, comment puis-je combiner ces deux codes en un seul code python?

Je suppose que, cela devrait être fait en quelque sorte en twill l'importation, mais comment peut-il être fait? un code python peut - celui qui est en cours d'exécution par « Google App Engine » - twill importation de quelque part sur Internet? Ou, peut-être, sergé est déjà installé sur « Google App Engine »?


Mise à jour 1:

(cette mise à jour est ma réponse à la réponse de Wooble)

Voici la liste de tous les dossiers (dans mon dossier « sergé 0,9 ») qui contiennent des fichiers __init__.py. (Certains dossiers sur cette liste sont situés à l'intérieur d'autres dossiers, qui sont également mentionnés dans cette liste):

E: \ twill-0,9 \ build \ lib \ twill \ extensions \ match_parse

E: \ twill-0,9 \ build \ lib \ twill \ extensions

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

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

E: \ twill-0,9 \ build \ lib \ sergé

E: \ twill-0,9 \ twill \ extensions \ match_parse

E: \ twill-0,9 \ twill \ extensions

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

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

E: \ twill-0,9 \ sergé

Était-ce utile?

La solution

Pour utiliser les bibliothèques tiers dans les projets App Engine, il vous suffit de les inclure dans votre application lors du déploiement. Copiez le dossier twill (celui contenant __init__.py) dans le dossier de votre application et la déployer.

En regardant le twill projet Google Code, il semble que twill comprend ses dépendances (pyparsing, Mécaniser, etc.) dans l'emballage, de sorte que vous ne pouvez pas besoin d'inclure quoi que ce soit d'autre.

Autres conseils

ici est un exemple d'utilisation sergé pour lancer une recherche Google si cela aide. Il montre en utilisant twill et beautifulsoup ensemble pour analyser les pages web:

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

Aucune idée de ce que twill fait (bien, googlé), mais des offres AppEngine fonction fetch() qui peut être utilisé pour récupérer des pages Web. Il supporte également la méthode POST par exemple pour les connexions.

(je doute twill œuvres dans AppEngine, parce que AppEngine a des bibliothèques Python limitées pour des raisons de sécurité. Juste une supposition, cependant.)

Je crois que vous êtes à la recherche d'un moyen d'importer le module twill dans App-Engine. Vous devez comprendre soit où les fichiers python sergé sont ou comment obtenir un paquet source d'entre eux pour empaqueter avec votre site web, mais il semble que l'importation des modules 3ème partie peut se faire à quelques exceptions près, voir ci-dessous.

zipimport suivant les instructions sur le site de Google ici et ici .

de la page tierce partie Bibliothèque de Google:

  

App Engine utilise une version personnalisée de la fonction zipimport au lieu de la mise en œuvre standard. Il fonctionne généralement de la manière habituelle: ajouter l'archive Zip à sys.path, puis importer comme d'habitude. Avec ces exceptions:   zipimport ne peut modules importation stockés dans l'archive sous forme de fichiers source py. Il ne peut pas les modules importation stockés sous forme de fichiers .pyc ou .pyo.   zipimport est mis en oeuvre dans le python pur, et ne pas utiliser du code natif pour la décompression (code C).

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