使用漂亮的汤执行存储在Web服务器上的python脚本

时间:2011-02-21 23:56:56

标签: python cgi beautifulsoup

我正在尝试创建一个简单的表单/脚本组合,允许有人用单独页面上以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错误,输出页面上没有输出以便使用回溯进行调试...

2 个答案:

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

您需要修复输出,以便实际看到它,或者将某些内容写入文件。