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

>>>final='http://www/~foo/cgi-bin/s.py?name=joe mama&num=6'
>>>urllib.quote(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编码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值