20.1.1 Web应用:客户端/服务器计算
Web应用遵循我们反复提到的客户端/服务器架构。这里,Web的客户端是浏览器,应用程序允许用户在万维网上查询文档.另外Web服务器端,进程运行在信息提供商的主机上。这些服务器等待客户和文档请求,进行相应的处理,返回相应的数据。
HTTP协议是TCP/IP协议的上层协议,这意味着HTTP协议依靠TCP/IP协议来进行低层的交流工作。它的职责不是路由或者传递消息,而是通过发送、接收HTTP消息来处理客户的请求。
HTTP协议属于无状态协议,它不跟踪从一个客户端到另一个客户端的请求消息,这点和我们现今使用的客户端/服务器端架构很像。服务器端持续运行,但是客户端的活动是按照这种结构独立进行的,一旦一个客户的请求完成后,活动将被中止。可以随时发送请的请求,但是他们会被处理成独立的服务请求。由于每个请求缺乏上下文背景,你可以注意到有些URL会有很长的变量和值作为请求的一部分,以便提供一些状态信息,另一个选线是‘cookie'保存在客户端的客户状态信息。
20.2 使用Python进行Web应用:创建一个简单的Web客户端
浏览器只是Web客户端中的一种。任何一个通过向服务器端发送请求来获得数据的应用程序被认为是“客户端”。
一个使用urllib模块下载或者访问Web上的信息的应用程序[使用urllib.urlopen()或者urllib.urlretrieve()]可以被认为是简单的Web客户端。
20.2.1统一资源定位符
简单的Web应用包括使用被称为URL(统一资源定位器)的Web地址。
20.2.2urparse模块
urlpasrse模块提供了操作符URL字符串的基本功能。这些功能包括urlparse().urlunparse()和urljoin()
urlparse.urlparse()将字符串拆分成如上所描述的一些主要部件,具体语法结构如下:
urlparse(urlstr,defProtSch=None,allowFrag=None)
urparse()将URL字符串解析成一个6元组(prot_sch、net_loc、path、params、query、frag)
urlunpase()的功能与urlpase()完全相反,它想拼合一个6元组
urljoin()将URL的基部件baseurl和newurl拼合成一个完整的URL
20.2.3 urllib模块
urllib模块提供了所有的功能,提供了一个高级的Web交流库,支持Web协议、HTTP协议、FTP协议和Gopher协议,同时也支持对本地文件的访问。urllib模块的特殊功能是利用上述协议下载数据(从因特网、局域网、主机上下载)
urllib模块提供了给定的URL地址下载数据的功能,同时也可以通过字符串的编码、解码来确保它们是有效URL字符串的一部分
1.urllib.urlopen()
打开一个给定的URL字符串与Web连接,并返回了文件类的对象。
2.urllib.urlretrieve()
urlretrieve(urlstr,localfile=None,downloadSta- tusHook=None)
除了向urlopen()这样从URL中读取内容,urlretrieve()可以方便的urlretrieve()可以方便的将urlstr定位到的整个HTML文件下载到你本地的硬盘中。
3.Urllib.quote()和urllib.quote-plus()
quote*()函数获取URL数据,并将其编码,从而适用于URL字符串中。
quote(urldata,safe='/')
逗号、下划线、句点、斜线和字母数 字这类符号是不需要转化的。其他则需要转换。另外,那些不被允许的字符前边会被加上百分号(%)同时转换成16进制。
quote_plus()与quote()很像,另外它还可以将空格编码成(+)号。
5.urllib.urlencode()
将字典建-值对编译成有效的CGI请求字符串,用quote_plus()对键和值字符串分别编码
看的有点累,换成廖雪峰的WEB开发看了