zoukankan      html  css  js  c++  java
  • [python]-urllib和urllib2模块

    转自:http://zeping.blog.51cto.com/6140112/1143722

    urllib 和urllib2都是接受URL请求的相关模块,但是提供了不同的功能。

    urllib提供urlencode方法用来GET查询字符串的产生,而urllib2没有。

    urllib:

    网页基础:

    1. import urllib 
    2. #打开51cto 
    3. cto = urllib.urlopen('http://www.51cto.com') 
    4. #打开本地文件:cto = urllib.urlopen(url='file:/root/python/ulib')
    5. #打开ftp:cto = = urllib.urlopen(url='ftp://用户名:密码@ftp地址/')
    6. #读取51cto首页的代码 
    7. print cto.read() 
    8. #获取远程服务器返回的头信息,跟curl -I www,51cto.com差不多 
    9. print cto.info() 
    10. #返回http状态码,200表示成功,404表示网址未找到 
    11. print cto.getcode() 
    12. #返回请求的URL 
    13. print cto.geturl() 
    14. #运行结果 
    15. [root@localhost python]#python ctourl 
    16. 。。。。。。。省略cto.read()函数,输出太多啦。。。。。 
    17. Server: Tengine  #cto.info()返回信息 
    18. Date: Wed, 27 Feb 2013 15:05:46 GMT 
    19. Content-Type: text/html 
    20. Connection: close 
    21. Vary: Accept-Encoding 
    22. Load-Balancing: web48 
    23.  
    24. 200              #cto.getcode()返回信息 
    25. http://www.51cto.com   #cto.geturl()返回信息 
    26. #urlopen返回的是一个类文件对象,而这个对象的使用方法和文件对象的 
    27. #使用方法完全一样。 

     字符的编码和解码:

    1. import urllib,os 
    2. #对字符串进行编码 
    3. stra = urllib.quote('this is python') 
    4. print stra 
    5. #对字符串进行解码 
    6. print urllib.unquote(stra) 
    7. #这个方法用‘+’代替了%20 和urllib.quote类似, 
    8. strb = urllib.quote_plus('this is python') 
    9. print strb 
    10. #解码 
    11. print urllib.unquote_plus(strb) 
    12.  
    13. dicta = {'name':'zeping','passwd':'123456'} 
    14. #urlencode将字典转换成url参数 
    15. print urllib.urlencode(dicta) 
    16.  
    17. #将本地路径转换成url路径 
    18. filename = urllib.pathname2url('/python/test.py') 
    19. print filename 
    20. #将url路径转换成本地路径 
    21. print urllib.url2pathname(filename) 
    22.  
    23. ##########运行结果########## 
    24. [root@localhost python]# python quote 
    25. this%20is%20python 
    26. this is python 
    27. this+is+python 
    28. this is python 
    29. passwd=123456&name=zeping 
    30. /python/test.py 
    31. /python/test.py 

    urllib.urlretrieve():下载

    1. import urllib 
    2. def Schedule(a,b,c): 
    3.     ''''' 
    4.     a:已经下载的数据块 
    5.     b:数据块的大小 
    6.     c:远程文件的大小 
    7.    ''' 
    8.     per = 100.0 * a * b / c 
    9.     if per > 100 : 
    10.         per = 100 
    11.     print '%.2f%%' % per 
    12.  
    13. #这里以下载缓存插件为例 
    14. url = 'http://fastlnmp.googlecode.com/files/eaccelerator-0.9.6.tar.bz2' 
    15. #获取文件名,这里是下载到当前目录下,若果要下载到别的目录必 
    16. #须输入绝对路径和文件名字:/root/tools/eaccelerator-0.9.6.tar.bz2 
    17. local = url.split('/')[-1] 
    18. urllib.urlretrieve(url,local,Schedule) 
    19. #########运行结果########## 
    20. [root@localhost urllib]# python down 
    21. 0.00% 
    22. 7.74% 
    23. 15.48% 
    24. 23.22% 
    25. 30.96% 
    26. 38.70% 
    27. 46.44% 
    28. 54.18% 
    29. 61.92% 
    30. 69.66% 
    31. 77.40% 
    32. 85.15% 
    33. 92.89% 
    34. 100.00% 
    35. [root@localhost urllib]# ls 
    36. down  eaccelerator-0.9.6.tar.bz2  ulib2 

    urllib2:

    urllib2可以接受一个Request类的实例来设置URL请求的headers,urllib仅可以接受URL。

    以上转自:http://zeping.blog.51cto.com/6140112/1143722

  • 相关阅读:
    【Windows核心编程】重载类成员函数new / new[] / delete / delete[]
    【数据结构和算法】 O(1)时间取得栈中的最大 / 最小元素值
    路由器与交换机做链路聚合
    怎么样判断两个IP地址是否在同一个网段
    sqlite常用的命令-增删改查
    5G时代的智慧灯杆需要哪种网关?
    什么是边缘计算网关?
    5G/4G工业智能网关在工业物联网的必要性
    基于5G/4G网关的冷冻设备远程监测及故障预警系统
    工业5G网关配置POE技术的优势
  • 原文地址:https://www.cnblogs.com/myyan/p/4845637.html
Copyright © 2011-2022 走看看