WEB开发网
开发学院软件开发Python 我的第一个基于 Web的过滤代理 阅读

我的第一个基于 Web的过滤代理

 2007-03-29 11:58:53 来源:WEB开发网   
核心提示: 使用 Python [cgi] 模块import cgi, syscfg_dict = {'target':'<STDOUT>'}sys.stderr = sys.stdoutform = cgi.FieldStorage()if form.ha

使用 Python [cgi] 模块     import
     cgi, sys
  cfg_dict = {
    'target':
    '<STDOUT>'}
  sys.stderr = sys.stdout
  form = cgi.FieldStorage()
    
     if
     form.has_key(
    'source'):
   cfg_dict[
    'source'] = form[
    'source'].value 

在以上几行中,要注意几处细节。我们所使用的一个技巧是设置 sys.stderr = sys.stdout。如果我们的脚本遇到了一个未捕获的错误,通过这个操作,追溯就显示回到客户机浏览器。这可以节省许多调试 CGI 应用程序的时间。但您也许不想让用户看到这些(或者如果它们可能向您报告问题详细信息,您也许会向用户显示这些内容)。接着,我们将 HTML 表单值读取到类似于字典的 form 实例中。表单有一个 .has_key() 方法,这与真正的 Python 字典非常相似。但是,与 Python 字典不同,要真正获取键中的值,我们必须查看键的 .value 属性。

至此,HTML 表单中的所有东西都成了纯 Python 变量,而且我们可以在其它任何 Python 程序中处理它们。

使用 urllib 模块

就像大多数 Python 模块一样,urllib 以直观且简单的方法处理许多复杂事物。urllib 中的 urlopen() 函数可以处理任何远程资源 -- 无论是 http:、ftp: 还是 gopher: --就将它当作是本地文件。如果使用 urlopen() 抓取了一个远程(伪)文件对象,可以将它当作本地(只读)文件的文件对象来进行处理:

使用 Python [urllib] 模块     from
     urllib
     import
     urlopen
    
     import
     string
  source = cfg_dict[
    'source']
    
     if
     source ==
    '<STDIN>':
   fhin = sys.stdin
    
     else
    :
    
     try
    :
   fhin = urlopen(source)
    
     except
    :
   ErrReport(source+
    ' could not be opened!', cfg_dict)
    
     return
     doc =
    ''
    
     for
     line
     in
     fhin.readlines():
    # Need to normalize line endings!
   doc = doc+string.rstrip(line)+
    '
'

上一页  1 2 3 4 5 6  下一页

Tags:一个 基于 Web

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接