python urllib urllib2 模块

Posted on Posted in python

python urllib urllib2 模块 简单说明

  1. #!/usr/bin/env python  
  2. # coding:utf-8  
  3. import urllib  
  4.   
  5. # 语法 urlopen(url, data=None, proxies=None)  
  6. # url 表示远程数据的路径  
  7. # data 表示get或post  
  8. # proxies 表示代理  
  9. baidu = urllib.urlopen('https://www.baidu.com')  
  10. print 'http header:\n', baidu.info() # 头信息  
  11. print 'http status:\n', baidu.getcode() # 状态吗  
  12. print 'url:', baidu.geturl() # 返回请求的url  
  13. for line in baidu: # 和操作文件一样  
  14.     #print line  
  15.     pass  
  16. baidu.close()  
  17.   
  18. # urllib.urlopen('网址')  
  19. # 网址遵循协议,http://  
  20. # 如果是本地文件,要使用file关键字,比如urllib.urlopen('file:F:\test.py')  
  21. # ftp,urllib.urlopen(url='ftp://用户名:密码@ftp地址/')  
  22.   
  23. # 代理  
  24.   
  25.   
  26. import urllib  
  27. proxies = {'http':'http://1.2.3.4:1984'}  
  28. filehandle = urllib.urlopen('http://www.需要代理才能访问的网站.com/',proxies = proxies)  
  29. a = filehandle.read()  
  30. print a  
  31.   
  32. # urlretrieve() , urlretrieve(url, filename=None, reporthook=None, data=None)  
  33. # finename 指定了保存本地路径  
  34. # reporthook 是一个回调函数,当连接上服务器、以及相应的数据块传输完毕时会触发该回调,我们可以利用这个回调函数来显示当前的下载进度  
  35. # 参数 data 指 post 到服务器的数据,该方法返回一个包含两个元素的(filename, headers)元组,filename 表示保存到本地的路径,header 表示服务器的响应头  
  36.   
  37. import urllib  
  38. def cbk(a, b, c):    
  39.     '''回调函数  
  40.     @a: 已经下载的数据块  
  41.     @b: 数据块的大小  
  42.     @c: 远程文件的大小  
  43.     '''    
  44.     per = 100.0 * a * b / c    
  45.     if per > 100:    
  46.         per = 100    
  47.     print '%.2f%%' % per  
  48.     
  49. url = 'https://www.baidu.com'  
  50. local = 'd://baidu.html'  
  51. urllib.urlretrieve(url, local, cbk)  
  52.   
  53.   
  54. # urlretrieve下载文件实例  
  55. import urllib  
  56. import os  
  57. def Schedule(a,b,c):  
  58.     ''''' 
  59.     a:已经下载的数据块 
  60.     b:数据块的大小 
  61.     c:远程文件的大小 
  62.    '''  
  63.     per = 100.0 * a * b / c  
  64.     if per > 100 :  
  65.      &nbs
    p;  per = 100  
  66.     print '%.2f%%' % per  
  67. url = 'http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tar.bz2'  
  68. local = os.path.join('d://','Python-2.7.5.tar.bz2')  
  69. urllib.urlretrieve(url,local,Schedule)  
  70.   
  71.   
  72. # urllib.quote(string[, safe]):对字符串进行编码。参数 safe 指定了不需要编码的字符;  
  73. # urllib.unquote(string) :对字符串进行解码;  
  74. # urllib.quote_plus(string [ , safe ] ) :与 urllib.quote 类似,但这个方法用'+'来替换' ',而 quote 用'%20'来代替' '  
  75. # urllib.unquote_plus(string ) :对字符串进行解码;  
  76. # urllib.urlencode(query[, doseq]):将dict或者包含两个元素的元组列表转换成url参数。例如 字典{'name': 'dark-bull', 'age': 200}将被转换为"name=dark-bull&age=200"  
  77. # urllib.pathname2url(path):将本地路径转换成 url 路径;  
  78. # urllib.url2pathname(path):将url路径转换成本地路径;  
  79.   
  80. data = 'name = ~liuhonghe+5'  
  81.     
  82. data1 = urllib.quote(data)  
  83. print data1 # result: name%20%3D%20%7Eliuhonghe%2B5  
  84. print urllib.unquote(data1) # name = ~liuhonghe+5  
  85.     
  86. data2 = urllib.quote_plus(data)  
  87. print data2 # result: name+%3D+%7Eliuhonghe%2B5  
  88. print urllib.unquote_plus(data2)    # name = ~liuhonghe+5  
  89.     
  90. data3 = urllib.urlencode({ 'name': 'liuhonghe-oooooo', 'age': 200 })  
  91. print data3 # result: age=200&name=liuhonghe-oooooo  
  92.     
  93. data4 = urllib.pathname2url(r'd:/a/b/c/23.php')  
  94. print data4 # result: ///D://a/b/c/23.php  
  95. print urllib.url2pathname(data4)    # result: D:/a/b/c/23.php  
  96.   
  97. # urllib 和 urllib2 区别  
  98. # urllib2可以接受一个Request类的实例来设置URL请求的headers,urllib仅可以接受URL。这意味着,你不可以伪装你的User Agent字符串等。  
  99. # urllib提供urlencode方法用来GET查询字符串的产生,而urllib2没有。这是为何urllib常和urllib2一起使用的原因。  
» 转载请注明来源:若我若鱼 » python urllib urllib2 模块

One thought on “python urllib urllib2 模块

  1. Internet Explorer 11.0 Internet Explorer 11.0 Windows 7 x64 Edition Windows 7 x64 Edition
    Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko

    When someone writes an post he/she maintains the plan of
    a user in his/her mind that how a user can be aware of it.
    Thus that’s why this article is perfect. Thanks!

Leave a Reply

Your email address will not be published. Required fields are marked *

16 + 1 =