Python学习笔记20:Python Web编程

1、介绍
(1)Web应用:客户端/服务器计算
Web客户端是浏览器
HTTP(超文本传输协议)HTTP协议属于无状态协议。
(2)因特网
ISP(因特网供应商)
telnet(允许用户在因特网上登录到远程主机)
FTP/SMTP/NNTP(新闻对新闻传输协议)
Gopher(Web搜索引擎的雏形)

2、使用Python进行Web应用
(1)基础知识

  • 统一资源定位符(URI)(Identifier)
  • 统一资源定位器(URL)(Locator)
  • 统一资源名称(URN)(Name)

URL使用这种格式:prot_sch://net_loc/path;params?query#frag

  • prot_sch 网络协议
  • net_loc 服务器位置
  • path 路径
  • params 可选参数
  • query 连接符()连接键值对
  • frag 拆分文档中的特殊锚

net_loc使用这种格式:user:password@host:port

  • user 登录名
  • password 密码
  • host 主机
  • port 端口号(默认80)

(2)urlparse模块
①urlparse.urlparse()
将urlstr解析成一个6元组(prot_sch,net_loc,path,params,query,frag)。

urlparse.urlparse(urlstr,defProtSch=None,allowFrag=None)

②urlparse.urlunparse(urltup)
与urlparse相反,它拼合一个6元组,生成url。

urlunparse(urlparse(urlstr))≡urlstr

③urlparse.urljoin()
urljoin取得baseurl,并将其基路径(net_loc附加一个完整的路径,但是不包括终端的文件)与newurl连接起来。

urlparse.urljoin(baseurl,newurl,allowFrag=None)

(3)urllib模块
urllib提供了一个高级的Web交流库,支持Web协议、HTTP、FTP和Gopher协议,也支持对本地文件的访问。而httplib、ftplib、gopherlib等模块提供了更加低层的支持。
①urllib.open()
打开urlstr所指向的URL。若使用POST方法,请求的字符串(编码的)应该放到postQueryData变量中。urlopen()返回一个文件类型对象f,支持f.read(),f.readline(),f.readlines(),f.close(),f.fileno()。此外,f.info()方法可以返回MIME(多目标因特网邮件扩展)头文件,这个头文件通知浏览器返回的文件类型可以用哪类应用程序打开。f.geturl()方法返回f所打开的真正的URL。

urllib.open(urlstr,postQueryData=None)

②urllib.urlretrieve()
从urlstr中读取内容,该方法还可以将urlstr定位到的整个HTML文件下载到你本地的硬盘上,保存为一个本地文件或临时文件。downloadStatusHook这个函数将会在每块数据下载或传输完成后被调用。调用时使用3个参数:目前读入的块数、块的字节数和文件的总字节数。urlretrieve方法返回一个2元组(filename,mime_hdrs)filename包含下载数据的本地文件名,mime_hdrs表示对Web服务器响应后返回的一系列MIME文件头。

urllib.urlretrieve(urlstr,localfile=None,downloadStatusHook=None)

③urllib.e()/urllib.e_plus()
e*()函数获取url数据,并将其编码,从而适用于URL字符串中。
e(urldata,safe=’/’)将urldata的无效的URL字符编码;在safe列的则不必编码。逗号、下划线、句号、斜线和字母数字这类符号是不需要转化的。safe中包含一系列不能被转换的字符。默认为斜线(/)。
e_plus()和e()很像,它还可以将空格编码成(+)号。

final='http://www/~foo/cgi-bin/s.py?name=joe mamanum=6'
urllib.e(final)
'http%3awww/%7efoo/cgi-bin/s.py%3fname%3djoe%20mama%26num%3d6'

④urllib.urlencode()
接受字典的键-值对,并将其编译成CGI请求的URL字符串的一部分。
安全套接字层支持:urllib/httplib/imaplib/poplib/smtplib等模块都含有ssl。
(4)urllib2模块
可以处理更复杂的URL的打开问题。
有基本认证需求的Web站点:建立基础认证处理器、安全域、域、基本URL;在浏览器提示输入用户名和密码。

3、CGI:帮助Web服务器处理客户端数据
(1)CGI
CGI(标准网关接口,Common Gateway Interface)CGI为能够处理用户表单、生成并返回动态HTML页的应用程序和Web服务器间的交互。
CGI程序=CGI=Web服务器=客户端
CGI应用程序与典型的应用程序不同

  • 输入:从Web客户端获取数据
  • 输出:输出到Web客户端
  • 交互:交互发生在客户端、服务器和CGI应用程序间

(2)cgi模块
主要类有FieldStorage类,完成所有的工作。

4、建立CGI应用程序
(1)建立Web服务器
安装Web服务器,将其配置成可以处理PythonCGI请求的模式。
然后让你的Web服务器服务CGI脚本。
使用Python自带的Web服务器(或者Apache)

$ python -m CGIHTTPServer

在当前机器的当前目录下建立一个端口为8000的Web服务器,然后可以在启动这个服务器的目录下建立一个Cgi-bin,将Python CGI脚本放在那里。
(2)建立表单页、生成结果页

5、高级CGI
(1)cookie的使用
(2)CGI字段的多重值
(3)用multipart表单实现文件上传
CGI特别指出只允许两种表单编码:application/x-www-form-urlencoded(默认)和 multipart/form-data。
目前上传的文件仅能表现为multipart编码。

最新回复(0)
/jishuDhkI4lE4GMx9krpfWz6RrkC_2BfsHVUrssa0V0dvHwbDc_3D4858682
8 简首页