十九、WEB设计

模块urlparse
  >>> urlparse.urlparse('http://www.baidu.com:8080/dcoc/123.php;aa=123?sdf#dff#dfr')
  ('http', 'www.baidu.com:8080', '/dcoc/123.php', 'aa=123', 'sdf', 'dff#dfr')

urlunparse组装被分割的表列。

urljoin是组装路径,如:  
  >>> urlparse.urljoin('http://www.baidu.com/doc/123.htm','/dfg/456.asp')
  'http://www.baidu.com/dfg/456.asp'
  >>> urlparse.urljoin('http://www.baidu.com/doc/123.htm','dfg/456.asp')
  'http://www.baidu.com/doc/dfg/456.asp'


  模块urllib
  urlopen(urlstr,postQueryData=None)可以读取网页内容或一个本地文件,返回一个文件句柄,通过这个文件句柄来读取数据。
  注意这个URL必须是带有协议的,比如www.baidu.com就会出现IOError的异常,http://www.baidu.com就正确了。
  后面的参数是提供给动态页面的post参数的。如果要加get参数,直接在网址后面写上就OK了。
  fp=urlopen('http://www.baidu.com');可以使用read,readline,readlines,close,fileno,info,geturl来进行操作。
  info提供一个MIME表头说明,提供给其他外部程序辨别。
  geturl获得路径,主要是防止重定向的,不过如果是省略具体文件名的,显示依然省略。如:fp.geturl()得到'http://www.baidu.com' 而没有具体的文件名。

urlretrieve(urlstr,localfile=None,dowloadStatusHook=None)将文件下载到本地。
  第一个参数是路径,第二个参数是存放位置,不填则在临时目录(temp)生成临时文件,第二个参数是个函数,每下载一个数据块就会调用。
  返回2个元素,一个是本地文件名,第二个是MIME表头。
最好在之前调用urlcleanup清除缓存。

quote转换特殊字符为%X形式,如 ~ : + ?等,不转换/
  quote_plus同上,转换/ 同时空格转换为+
  unquote unquote_plus功能相反。

书上提供了一个扒网页的例子,可以参考下。P464

用python实现的CGI程序在网页上和PHP等基本一致,略。
  用python建立web服务器,略。

与web相关的模块,P494

------------------------------------------------------------------------


第二十章 扩展

以前看书的时候就常看到说,python最强的地方是它被成为胶水语言,一直看到最后一章才看到胶水的实现,不过感觉不是传说中的那么方便。