第20章 Web编程(1)

20.1 介绍

20.1.1 Web应用:客户端/服务器计算

Web客户端和服务器端交互使用的“语言”,Web交互的标准协议是HTTP(超文本传输协议)。HTTP协议是TCP/IP协议的上层协议,这意味着HTTP协议依靠TCP/IP协议来进行底层的交流工作。它的职责不是路由或者传递消息(TCP/IP协议处理这些),而是通过发送、接收HTTP消息来处理客户端的请求。

HTTP协议属于无状态协议,它不跟踪从一个客户端到另一个客户端的请求信息。每个请求缺乏上下文背景。

20.1.2 因特网

因特网是由多种工作在一定顺序下(也许非连贯的)相互连接的网络组成的。
20.2 使用Python进行Web应用:创建一个简单的Web客户端

URL(统一资源定位器,Uniform Resource Locator)的Web地址。这个地址用来在Web上定位一个文档,或者调用一个CGI程序来为你的客户端产生一个文档。URL是大型标识符URI(统一资源标识, Uniform Resource Identifier)的一部分。

URL格式: prot_sch://net_loc/path;params?query#frag

20.2.2 urlparse模块

urlparse模块提供了操作URL字符串的基本功能。

>>> import urlparse
>>> urlparse.urlparse("http://www.renren.com/home?id=229741205")
ParseResult(scheme='http', netloc='www.renren.com', path='/home', params='', query='id=229741205', fragment='')
>>> 
urlparse()将urlstr解析成一个6元组。

urlunparse()拼合一个6元组为一个urlstr

urljoin()取得baseurl,并将其基路径与newurl连接起来

>>> urlparse.urljoin("http://user.qzone.qq.com", "/414719286/infocenter")
'http://user.qzone.qq.com/414719286/infocenter'
>>> 
20.2.3 urllib模块

Urllib模块提供了在给定的URL地址下载数据的功能,同时也可以通过字符串的编码、解码来确保它们是有效URL字符串的一部分。

1. urllib.urlopen()

>>> import urllib
>>> file = urllib.urlopen("http://www.renren.com/home")
>>> for linedata in file.readlines():
... 	print linedata
... 
urlopen()打开urlstr所指向的URL,以文件流的形式读取URL地址的内容。
GET和POST请求是向Web服务器上传数据的两种方法。

2. urllib.urlretrieve()

urlretrieve()可以方便地将urlstr定位到的整个HTML文件下载到你本地的硬盘上。你可以将下载后的数据存成一个本地文件或者一个临时文件。如果该文件已经被复制到本地或者已经是一个本地文件,后续的下载动作将不会发生。

>>> urllib.urlretrieve("http://www.renren.com/home", "C:\\Documents and Settings\\10170660\\Desktop\\123.txt")
('C:\\Documents and Settings\\10170660\\Desktop\\123.txt', <httplib.HTTPMessage instance at 0x015DBA08>)
>>> 
downloadStatusHook这个函数将会在每块数据下载或传输完成后被调用。调用时下边三个参数:目前读入的块数、块的字节数和文件的总字节数。

3. Urllib.quote()和urllib.quote-plus()

quote*()函数获取URL数据,并将其编码,从而适用于URL字符串中。尤其一些不能被打印的或者不被web服务器作为有效URL接收的特殊字符串必须被转换。

>>> mail = "xufei96@hotmail.com"
>>> url = urllib.quote("http://www.renren.com/home? mail = %s"%mail)
>>> url
'http%3A//www.renren.com/home%3F%20mail%20%3D%20xufei96%40hotmail.com'
>>> 
4. urllib.unquote()和urllib.unquote_plus()

unquote()函数将会把urldata中所有的URL-编码字母都解码,并返回字符串。

>>> mail = "xufei96@hotmail.com"
>>> url = urllib.quote("http://www.renren.com/home? mail = %s"%mail)
>>> url
'http%3A//www.renren.com/home%3F%20mail%20%3D%20xufei96%40hotmail.com'
>>> urllib.unquote(url)
'http://www.renren.com/home? mail = xufei96@hotmail.com'
>>> 
5. urllib.urlencode()

接收字典的键值对,并将其编译成CGI请求的URL字符串。

>>> aDict = {'name':'Anders', 'mail':'xufei96@hotmail.com'}
>>> urllib.urlencode(aDict)
'mail=xufei96%40hotmail.com&name=Anders'
>>> 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值