Как развернуть эту комбинацию «Python + твил + механизация» в «Google App Engine»? - PullRequest
0 голосов
/ 08 сентября 2010

Я пытался передать свой логин и пароль от Python скрипта на страницу входа eBay .Позже я хочу, чтобы этот скрипт запускался из " Google App Engine "

. Мне предложили использовать " mechanize ".К сожалению, у меня это не сработало:


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

Раньше я пытался использовать Python и twill - не получилосьлибо работать до тех пор, пока один из сторонников не предложит загрузить последнюю версию mechanize и затем выполнить следующие действия:

  1. Найдите следующую папку на моем компьютере: " C: \ Python25 \ Lib \ site-packages \ twill \ other_packages \ _mechanize_dist "

  2. Измените ее имя на" _mechanize_dist_backup " (таким образом, полный путь должен быть " C: \ Python25 \ Lib \ site-packages \ twill \ other_packages \ _mechanize_dist_backup ")

  3. Скопируйте папку " mechanize " (которая находится в " mechanize-0.2.2 " - папке, которую я скачал и разархивировал из "механизировать" официальный сайт ) и вставить его в " C: \ Python25 \ Lib \ site-packages \ twill \ other_packages " (полный путь, таким образом, будет " C: \ Python25 \ Lib \ site-packages \ twill \ other_packages \ mechanize")

  4. Измените его имя на" _mechanize_dist"(полный путь: " C: \ Python25 \ Lib \ site-packages \ twill \ other_packages_mechanize_dist ")

  5. Копировать файл " ClientForm "из " _mechanize_dist_backup " и вставьте его в " _mechanize_dist " (на самом деле я обнаружил там два файла с именем " ClientForm ": один является файлом Python, другойодин представляет собой скомпилированный файл Python - я скопировал и вставил их оба).

После того, как я выполнил все эти шаги, я попытался войти в мой eBay аккаунт из twill shell в Python и все заработало !!!Я мог бы даже таким же образом войти в свой почтовый ящик Yahoo и проверить свою почту!

Но теперь у меня возникла дилемма: я не знаю, как я могу развернуть свой сценарий вMsgstr " Google App Engine ".

Ранее Мне сообщили , что если я хочу использовать сторонние библиотеки в App Engine проектах, я просто должен включить ихс моим приложением при его развертывании - например, в случае twill мне просто нужно скопировать папку twill в папку моего приложения и развернуть ее.

Но теперь у меня есть не только эта папка twill в качестве сторонней библиотеки, но и все эти изменения, выполненные в " C: \ Python25 "(если быть точным, в" C: \ Python25 \ Lib \ site-packages \ twill \ other_packages"), в то время как папка моего приложения - та, в которой у меня есть сценарий (" my_script .py "file) - находится на диске" E".

Может кто-нибудь, пожалуйста, дать мне несколько советов здесь?

Ответы [ 2 ]

2 голосов
/ 09 сентября 2010

Что касается проблемы развертывания GAE, @brilliant, похоже, что весь код, который вы имеете в виду, - это чистый python 2.5 (единственная проблема с блокировкой будет, если не - двоичные расширения не допускаютсянет кода, требующего Python 2.6 или более поздней версии, и это так же, как в настоящее время в GAE).

Таким образом, при этом предположении единственная проблема с развертыванием кода в App Engine заключается в том, что всекод, NOT в site-packages (из которого, конечно, GAE's dev_appserver.py абсолютно ничего не развертывает, nada, zilch), а скорее в каталоге вашего проекта GAE (я предлагаю рекурсивный почтовый индекс всех .pyтолько файлы - удалите все файлы .pyc, в частности, перед тем, как zip -r it; -).

В общем, это всего лишь вопрос нескольких подходящих команд оболочки: cp -Rзатем zip -r (возможно, сложнее с не-юниксовыми оболочками, но, эй, даже на Windows вы можете сделать это с помощью bash от cygwin ... в любом случае, это вряд ли проблема "разработки", согласнокак таковые, -.)

2 голосов
/ 08 сентября 2010

Сообщение об ошибке указывает на то, что mechanize подчиняется файлу robots.txt сайта.

Вам следует использовать API eBay, если вы хотите получить автоматический доступ к их сайту.Если вы этого не сделаете и создадите свое собственное решение, которое игнорирует robots.txt, не удивляйтесь, когда вас блокируют, и жалуйтесь в Google на автоматические запросы, поступающие из App Engine из вашего приложения.

...