【问题标题】:How to deploy this "Python+twill+mechanize" combination to "Google App Engine"?如何将这种“Python+twill+mechanize”组合部署到“Google App Engine”?
【发布时间】:2010-09-08 18:14:39
【问题描述】:

我一直在尝试将我的登录名和密码从 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
>>> 

之前我尝试使用 Pythontwill - 直到我下载了最新版本的 one supporter suggested 机械化,然后执行以下步骤:

  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” - 我从@987654322 下载并解压缩的文件夹@) 并将其粘贴到“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. 从“_mechanize_dist_backup”复制“ClientForm”文件并粘贴到“_mechanize_dist”中(其实我在那里找到两个名为“ClientForm”的文件:一个是 python 文件,另一个是编译后的 python 文件 - 我复制并粘贴了这两个文件。

完成所有这些步骤后,我尝试从 Python 中的 twill shell 登录到我的 eBay 帐户,并且成功了!!!我什至可以用同样的方式登录我的 Yahoo 邮箱并查看我的邮件!

但现在我有一个难题:我不知道如何将我的脚本部署到“Google App Engine”。

之前的 I had been advised,如果我想在 App Engine 项目中使用第三方库,我只需在部署应用程序时将它们包含在我的应用程序中 -例如,如果使用 twill,我只需将 twill 文件夹复制到我的应用程序的文件夹中并部署它。

但现在我不仅将这个 twill 文件夹作为要包含的第三方库,而且所有这些更改都在“C:\Python25”中执行(准确地说,在“C:\Python25\Lib\site-packages\twill\other_packages”中)而我的应用程序文件夹 - 我的脚本所在的文件夹(“my_script.py" 文件) - 位于 "E" 磁盘上。

有人可以在这里给我一些建议吗?

【问题讨论】:

    标签: python google-app-engine deployment mechanize twill


    【解决方案1】:

    至于 GAE 部署问题,@brilliant,看起来你正在处理的代码都是纯 python 2.5(唯一真正阻塞的问题是如果它不是——没有二进制扩展允许,不允许使用需要 Python 2.6 或更高版本的代码,而这正是 GAE 目前的方式)。

    因此,在这种假设下,在 App Engine 上部署代码的唯一问题是在 site-packages 中拥有所有代码,NOT(当然,GAE 的 dev_appserver.py 完全没有部署任何代码, nada, zilch),而是在您的 GAE 项目目录中(我建议对所有 .py 文件进行递归 zip,仅 - 删除所有 .pyc 文件,尤其是在您之前 zip -r it;-)。

    总而言之,这只是几个适当的 shell 命令的问题:cp -R 然后zip -r(在非 unixy shell 上可能更难,但是,嘿,即使在 Windows 上你也可以 使用 cygwin 中的 bash 来完成...无论如何,它本身几乎不是一个“开发”问题;-)。

    【讨论】:

    • 谢谢你,Alex,这个答案。我现在正在尝试。
    • 你好,亚历克斯!!!很抱歉这么久没有回复。所以像“cp-R”和“zip -r”这样的所有命令都只与Unix有关,对吧?而Winows上的那些人,像我一样,不能使用它们,对吧?我不知道“来自 cygwin 的 bash”是什么意思。你能想象吗!我刚刚卸载了 Python,然后安装了 Python,然后是斜纹布,然后是机械化,然后执行了所有这 5 个步骤(如上所述),然后......唉!我再也无法登录 Yahoo 或 eBay!我只是想从头开始重复所有内容,以确保我记住了每一个细节,并且显然删除了一些非常重要的(↙)
    • 文件,或者,也许,甚至忘记了一些非常重要的步骤。所以现在我正在审查我最近的所有帖子,并试图恢复对我来说是一种成功。我不敢相信我做了这么愚蠢的事——我不应该卸载 Python!
    • @brilliant,要在 Windows 中使用大多数 unix-y shell 命令,请安装名为 cygwin 的免费第三方包 --- 请参阅 cygwin.com
    • 我明白了,亚历克斯。感谢您提供此链接。你已经帮了我很多了!!!我非常感谢你。目前,我仍在努力恢复我所取得的成就。
    【解决方案2】:

    错误消息表明 mechanize 正在为您遵守网站的 robots.txt 文件。

    如果您想以自动方式访问他们的网站,您应该使用 eBay 的 API。如果您不这样做,并构建您自己的忽略 robots.txt 的解决方案,当他们阻止您时不要感到惊讶,并向 Google 投诉来自 App Engine 的来自您的应用的自动查询。

    【讨论】:

    • 你好,伍布尔!!!但是我在这里很困惑——为什么在第二种情况下机械化“不服从”?顺便说一句,如果您查看 eBay robot.txt (signin.ebay.com/robots.txt) 的内容,您会发现它们确实允许在一定范围内自动访问:“eBay 可能允许自动访问某些 eBay 页面,但仅限于以下目的:包括公开可用的搜索引擎中的内容”——我不打算超越这些限制。
    猜你喜欢
    • 1970-01-01
    • 2016-09-20
    • 1970-01-01
    • 2015-02-19
    • 2016-09-15
    • 1970-01-01
    • 2017-09-29
    • 1970-01-01
    • 2022-12-14
    相关资源
    最近更新 更多