我正在尝试创建一个简单的表单/脚本组合,允许有人用单独页面上以html格式输入的文本替换html文件中某个div的内容。
如果一切都是本地的,脚本工作正常:脚本是本地的,我将工作目录设置为我的html文件所在的位置,并且我在运行脚本时自己传递参数。但是,当我将所有内容加载到托管站点服务器时,它会给我500个错误。
我能够执行一个存储在我网站上的简单python脚本,而我的托管服务JustHost告诉我BeuatifulSoup已添加到我的服务器上。
这是脚本,参数“textcontent”来自html表单,工作正常。我的scirpt根植于public_html / cgi-bin /,我试图读写的html驻留在public_html的根目录下。我猜测无法找到html文件或者我的服务器上实际上没有找到beautifulsoup ...无论如何要测试它?
#!/usr/bin/python
#import beautifulsoup
from BeautifulSoup import BeautifulSoup
# Import modules for CGI handling
import cgi, cgitb, traceback
# Create instance of FieldStorage
try:
form = cgi.FieldStorage()
def text_replace(word):
f = open('/public_html/souptest2.html', 'r')
soup = BeautifulSoup(f.read())
f.close()
text = soup.find('div', attrs={'id': 'sampletext'}).string
text.replaceWith(word)
deploy_html = open('/public_html/souptest2.html', 'w')
deploy_html.write(str(soup))
deploy_html.close()
# Get data from fields
if form.getvalue('textcontent'):
text_content = form.getvalue('textcontent')
text_replace(text_content)
else:
text_content = "Not entered"
except:
deploy_html = open('../souptest2.html', 'w')
traceback.print_exc(deploy_html)
deploy_html.close()
我曾尝试将其作为脚本加载并从网址运行并仍然出现500错误,输出页面上没有输出以便使用回溯进行调试...
答案 0 :(得分:0)
您的主机上有一个shell帐号吗?如果是这样,请尝试以交互模式运行服务器的Python版本并键入:
>>> import BeautifulSoup
如果该模块不存在,您应该获得ImportError
。
或者,尝试将cgitb.enable()
紧跟在import cgi, cgitb
行之后。这个应为您提供所引发的任何异常的回溯。如果此仍然不起作用,则可能是您的网络服务器未找到该脚本。请与您的托管服务提供商仔细检查您的配置。
关于如何在Python的CGI文档中调试CGI脚本,有很多建议,找到了here。
编辑:已编辑为实际利用cgitb
模块,而不是尝试使用traceback
处理解决方案。
答案 1 :(得分:0)
测试做类似的事情:
try:
from BeautifulSoup import BeautifulSoup
except Exception, e:
print "An error occured importing soup", e
您需要修复输出,以便实际看到它,或者将某些内容写入文件。