这允许我在我的计算机上使用python连接到一个网站:
from twill.commands import go, show, showforms, formclear, fv, submit
from bs4 import BeautifulSoup as bs
go('http://www.pge.com')
showforms()
这让我在谷歌应用引擎上打招呼世界,斜纹和美丽的汤进口工作:
import webapp2
import sys
sys.path.insert(0, 'libs')
from twill.commands import go, show, showforms, formclear, fv, submit
from bs4 import BeautifulSoup as bs
class MainPage(webapp2.RequestHandler):
def get(self):
self.response.headers['Content-Type'] = 'text/plain'
self.response.write('Hello, World! I love dog food.')
application = webapp2.WSGIApplication([
('/', MainPage),
], debug=True)
现在在此之后我尝试使用斜纹连接到网站并失败:
我可以在哪里调用go()来连接网站?
如果我在class MainPage(webapp2.RequestHandler):
之前添加它,它会挂起并且我没有进入hello world。
如果我在第一行的MainPage类中将其添加为getit = go('http://www.pge.com')
,或仅添加go('http://www.pge.com')
,它也会挂起并且我没有进入hello world。
如果我在def: get(self):
内添加,我会得到:
内部服务器错误
服务器出错或无法执行 要求的操作。 和一堆关于斜纹和mechanize.py的东西,然后是
File "..../twill/utils.py", line 275, in run_tidy
process = subprocess.Popen(_tidy_cmd, stdin=subprocess.PIPE,
AttributeError: 'module' object has no attribute 'Popen'
我在某种程度上错过了一些其他的依赖项,比如mechanize.py?或者我还需要做些什么吗?
答案 0 :(得分:0)
这有助于部分解决我的问题,但稍后会出现其他问题,特别是在填写表单,提交表单以及在网站中进一步迁移时。
import webapp2
import sys
sys.path.insert(0, 'libs')
from twill.commands import go, show, showforms, formclear, fv, submit, config
from twill.browser import *
from bs4 import BeautifulSoup as bs
class MainPage(webapp2.RequestHandler):
config('use_tidy', '0')
def get(self):
go('http://www.pge.com')
self.response.headers['Content-Type'] = 'text/plain'
self.response.write('Hello, World! I love dog food.')
self.response.write(show())
以这种方式禁用了整洁(整理与谷歌沙箱不一致),我可以通过self.response.write(show())
显示()网页。
作为旁注:在使用谷歌应用引擎时,请注意使用TextEdit编辑.py文件。我得到了各种奇怪的非ascii字符错误。我将# - - 编码:utf-8 - 添加到python文件的第一行,这有点帮助,并切换到使用pycharm的ide,这确实有帮助。
twill在谷歌应用引擎的沙盒中给了我各种各样的问题,我没有在我的系统上。我最终可以获得一个网页的html,但不能像我在我的系统上那样提交表单。 showforms()甚至没有显示表单,也许是因为我禁用整洁并且html没有被正确解析?
我认为在这里前进的一种方法是在斜纹里面工作。很明显,路障被打到了#34;在引擎盖下#34;它们很难让我看到。
似乎twill是一个高级抽象,现在在谷歌应用引擎上使用可能不是一个好主意。接下来我会尝试切换到mechanize.py,或者寻找另一个沙箱,也许是亚马逊?