Domanda

Ho cercato di passare il mio login e la password da Python script per il eBay pagina di accesso. Più tardi voglio questo script per essere eseguito da " Google App Engine "

mi è stato suggerito di usare " mechanize ". Purtroppo, non ha funzionato per me:


IDLE 1.2.4      
>>> import re
>>> import mechanize
>>> br = mechanize.Browser()
>>> br.open("https://signin.ebay.com")

Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    br.open("https://signin.ebay.com")
  File "build\bdist.win32\egg\mechanize\_mechanize.py", line 203, in open
    return self._mech_open(url, data, timeout=timeout)
  File "build\bdist.win32\egg\mechanize\_mechanize.py", line 255, in _mech_open
    raise response
httperror_seek_wrapper: HTTP Error 403: request disallowed by robots.txt
>>> 

All'inizio cercavo di utilizzo Python e twill - non ha funzionato neanche fino a un sostenitore suggerito che ho scaricato l'ultima versione di mechanize e quindi eseguire le seguenti operazioni:

  1. Individuare la seguente cartella sul computer: " C: \ Python25 \ lib \ site-packages \ twill \ other_packages \ _mechanize_dist "

  2. Cambia il suo nome a " _mechanize_dist_backup " (il percorso completo, quindi, dovrebbe essere " C: \ Python25 \ Lib \ site-packages \ twill \ other_packages \ _mechanize_dist_backup ")

  3. Copiare il " mechanize " cartella (che si trova in " mechanize-0.2.2 " - la cartella che avevo scaricato e decompresso da la "Mechanize" sito ufficiale ) e incollarlo in "< strong> C: \ Python25 \ lib \ site-packages \ twill \ other_packages "(il percorso completo, in tal modo, di essere" C: \ Python25 \ lib \ site-packages \ twill \ other_packages \ Mechanize ")

  4. Cambia il suo nome a " _mechanize_dist " (il percorso completo benessere " C: \ Python25 \ lib \ site-packages \ twill \ other_packages_mechanize_dist ")

  5. Copia " ClientForm " file " _mechanize_dist_backup " e incollarlo nella " _mechanize_dist " (in realtà, ho trovato lì due file denominati " ClientForm ":. uno è un file di pitone, un altro è un file python compilato - ho copiato e incollato entrambi)

Dopo aver eseguito tutti questi passaggi, ho cercato di accedere al mio eBay account dal twill della shell in Python e ha funzionato !!! Potrei anche accedere al mio Yahoo casella di posta elettronica nello stesso modo e verificare le mie mail!

Ma ora ho un dilemma: non so come avrei potuto distribuire il mio script per " Google App Engine ".

All'inizio di mi era stato consigliato che se voglio utilizzare librerie di terze parti in App Engine progetti, ho semplicemente dovuto includerli con la mia domanda quando schiero che - nel caso in cui con il twill , per esempio, ho solo bisogno di copiare il cartella twill nella cartella di mia applicazione e distribuirla.

Ma ora non solo ho questo cartella twill come una libreria di terze parti da includere, ma anche tutti questi cambiamenti eseguita in " C: \ Python25 " (in " C: \ Python25 \ Lib \ site-packages \ twill \ other_packages ", per essere precisi) mentre la mia cartella dell'applicazione - quella in cui ho il mio script ( " mio_script .py." file) - si trova su " E " disco

Può qualcuno, per favore, datemi qualche suggerimento qui?

È stato utile?

Soluzione

Per quanto riguarda il problema di distribuzione GAE, @brilliant, sembra che il codice si sta trattando è tutto puro Python 2.5 (la questione veramente solo il blocco sarebbe se non - estensioni binari permesso, nessun codice che richiede Python 2.6 o superiore permesso, e questo è solo il modo in cui è in GAE in questo momento).

Quindi, in tale ipotesi, l'unico problema w / distribuzione del codice su App Engine è avere tutto il codice, non in site-packages (da cui ovviamente dev_appserver.py di GAE distribuisce niente, nada, niente di niente ), ma piuttosto nella directory del progetto GAE (suggerisco una zip ricorsiva di tutti i file .py, solo - rimuovere tutti i file .pyc, in particolare, prima di zip -r esso; -).

Tutto sommato, è solo una questione di un paio di opportuni comandi di shell: cp -R poi zip -r (probabilmente più difficile sulla shell non Unixy, ma, ehi, anche su Windows è possono farlo con bash cygwin ... in ogni caso, non è certo un problema di "sviluppo", di per sé, -).

Altri suggerimenti

Il messaggio di errore indica che mechanize è obbedire file robots.txt del sito per voi.

Si dovrebbe usare API di eBay se si desidera accedere al proprio sito in modo automatizzato. Se non lo fai, e costruire la vostra soluzione che ignora robots.txt, non essere sorpreso quando si bloccano, e si lamentano a Google sulle query automatiche provenienti da App Engine dalla tua app.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top