设为首页 收藏本站
查看: 888|回复: 0

[经验分享] [python]-urllib和urllib2模块

[复制链接]

尚未签到

发表于 2018-8-5 12:14:34 | 显示全部楼层 |阅读模式
  urllib 和urllib2都是接受URL请求的相关模块,但是提供了不同的功能。
  urllib提供urlencode方法用来GET查询字符串的产生,而urllib2没有。
  urllib:
  网页基础:
  


  • import urllib
  • #打开51cto
  • cto = urllib.urlopen('http://www.51cto.com')
  • #打开本地文件:cto = urllib.urlopen(url='file:/root/python/ulib')
  • #打开ftp:cto = = urllib.urlopen(url='ftp://用户名:密码@ftp地址/')
  • #读取51cto首页的代码
  • print cto.read()
  • #获取远程服务器返回的头信息,跟curl -I www,51cto.com差不多
  • print cto.info()
  • #返回http状态码,200表示成功,404表示网址未找到
  • print cto.getcode()
  • #返回请求的URL
  • print cto.geturl()
  • #运行结果
  • [root@localhost python]#python ctourl
  • 。。。。。。。省略cto.read()函数,输出太多啦。。。。。
  • Server: Tengine  #cto.info()返回信息
  • Date: Wed, 27 Feb 2013 15:05:46 GMT
  • Content-Type: text/html
  • Connection: close
  • Vary: Accept-Encoding
  • Load-Balancing: web48

  • 200              #cto.getcode()返回信息
  • http://www.51cto.com   #cto.geturl()返回信息
  • #urlopen返回的是一个类文件对象,而这个对象的使用方法和文件对象的
  • #使用方法完全一样。
  

  字符的编码和解码:
  


  • import urllib,os
  • #对字符串进行编码
  • stra = urllib.quote('this is python')
  • print stra
  • #对字符串进行解码
  • print urllib.unquote(stra)
  • #这个方法用‘+’代替了%20 和urllib.quote类似,
  • strb = urllib.quote_plus('this is python')
  • print strb
  • #解码
  • print urllib.unquote_plus(strb)

  • dicta = {'name':'zeping','passwd':'123456'}
  • #urlencode将字典转换成url参数
  • print urllib.urlencode(dicta)

  • #将本地路径转换成url路径
  • filename = urllib.pathname2url('/python/test.py')
  • print filename
  • #将url路径转换成本地路径
  • print urllib.url2pathname(filename)

  • ##########运行结果##########
  • [root@localhost python]# python quote
  • this%20is%20python
  • this is python
  • this+is+python
  • this is python
  • passwd=123456&name=zeping
  • /python/test.py
  • /python/test.py
  

  urllib.urlretrieve():下载
  


  • import urllib
  • def Schedule(a,b,c):
  •     '''''
  •     a:已经下载的数据块
  •     b:数据块的大小
  •     c:远程文件的大小
  •    '''
  •     per = 100.0 * a * b / c
  •     if per > 100 :
  •         per = 100
  •     print '%.2f%%' % per

  • #这里以下载缓存插件为例
  • url = 'http://fastlnmp.googlecode.com/files/eaccelerator-0.9.6.tar.bz2'
  • #获取文件名,这里是下载到当前目录下,若果要下载到别的目录必
  • #须输入绝对路径和文件名字:/root/tools/eaccelerator-0.9.6.tar.bz2
  • local = url.split('/')[-1]
  • urllib.urlretrieve(url,local,Schedule)
  • #########运行结果##########
  • [root@localhost urllib]# python down
  • 0.00%
  • 7.74%
  • 15.48%
  • 23.22%
  • 30.96%
  • 38.70%
  • 46.44%
  • 54.18%
  • 61.92%
  • 69.66%
  • 77.40%
  • 85.15%
  • 92.89%
  • 100.00%
  • [root@localhost urllib]# ls
  • down  eaccelerator-0.9.6.tar.bz2  ulib2
  

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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-546991-1-1.html 上篇帖子: Python学习笔记整理(十六)类的设计 下篇帖子: python sys模块详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表