python urllib基础学习
# -*- coding: utf-8 -*-
# python:2.x
__author__ = 'Administrator'
#使用python创建一个简单的WEB客户端
import urllib,urllib2,urlparse
"""
web地址元素
URL部件 描述
prot_sch 网络协议或者下载规划
nety_loc 服务器位置(或者也有用户信息)
path 斜杠(/)限定文件或者CGI应用程序路径
query 连接符(&)连接键值对
params 可选参数
frag 拆分文档中特殊锚
网络定位元素
net_loc
部件 描述
user 用户名
password 密码
host web服务器运行机器名或者地址(必须字段)
port 端口号(默认为80)
"""
#urlparse.urlparse()urlparse(url, scheme='', allow_fragments=True)
"""
将url解析成一个6元组(prot_sch,net_loc,path,params,query,frag)
当url中没有提供默认网络协议或者下载规划时可以使用scheme,allw_fragments标识一个URL是否允许使用零部件
"""
#例如
#print urlparse.urlparse('http://www.python.org/doc/FAQ.html')
#ParseResult(scheme='http', netloc='www.python.org', path='/doc/FAQ.html', params='', query='', fragment='')
#urlparse.urlunparse()功能与urlparse.urlparse()相反:它是拼合一个6元组(prot_sch,net_loc,path,params,query,frag)
#url1=urlparse.urlparse('http://www.163.com')
#print urlparse.urlunparse(url1)
#urlparse.urljoin()进行多个结合一起
## 'photo.shtml')
"""urllib
支持WEB协议,HTTP,FTP,GOPHER协议,可以进行上载下载,避免使用以前的那些模块
"""
#urllib.urlopen()打开一个给定的URL字符串与WEB连接,返回文件类型
#语法urllib.urlopen(url,data=None,proxies=None):如果没有给定协议或者下载,或者文件规划早已给出,它会打开本地文件
"""
对于所有HTTP请教,常见的请求是GET,在这样的情况下,WEB服务器会发送请求字符串(编码键值或者引用)
如果要求使用POST方法信息,请查看CGI应用编程部分普通文档或者文本。
f.info()方法返回MIME(多目标因特网邮件扩展,Multipurpose internet mail extension)头文件,这个头文件通知浏览器返回文件类型可以是那类应用程序打开
geturl()方法在考虑了所有可能发生间接导向后,从最终打开的文件中获得真实的URL
"""
"""
urllilb.urlopen()方法如下
对象方法 描述
f.read([bytes]) 从f中读出所有或者bytes个字节
f.readline() 从f中读出一行
f.readlines() 读取所有行返回一个列表
f.close() 关闭连接
f.fileno() 返回f文件句柄
f.geturl() 返回f所打开的真正URL
如果需要复杂的URL或者要处理复杂的情况,比如cookie等问题,建议使用urllib2模块
"""
#urllib.urlretrieve(url,fulename=None,reporthook=None,data=None)当需要URL文档时,可以使用它
"""
reporthook这个函数会在每块数据下载或者传输完之后被调用,3个参数:目前读入块数,块的字节数和文件字节数,
urlretrieve()返回一个2元组,(filename,mime_hdrs),filename包含下载数据本地文件名,mime_hdrs是对WEB服务器响应后返回一系列MIME文件判断
更多信息可以看mimetools的message类,对于本地文件来说mime_hdrs是空的
"""
#urllib.quote()和urllib.quote_plus()
"""
quote*()函数获取URL数据,将其编码,从而适用于URL字符串中,对于一些不能被打印或者不被WEB服务器作为有效的URL接收特殊字符串可以使用此函数
语法如
quote(urldata,safe='/')
"""
#例如
# name='jon mama'
# number=6
# base='http://www/~foo/cgi-bin/s.py'
# final='%s?name=%s&num=%d'%(base,name,number)
# print final
# print urllib.quote(final)
# print urllib.quote_plus(final)
#urllib.unquote(),urllib.unquote_plus()这2个函数功能完全相反,将所有编码'%xx'式的字母转换成它们的ascii值
#调用unquote()函数会把s中所有URL编码字母都解码,返回字符串,urllib.unquote_plus()函数会将加号转换成空格符
#urllib.urlencode()它是接收字典键-值对,将其编译成CGI请求的URL字符串,键值对格式:键=值,以连接符&划分,更进一步,键和它们值被传到quote_pluis()进行适当的编码
#例如
adict={'name':'georgion garica','b':'c'}
print urllib.urlencode(adict)
#urllib方法的例子学习
url1='http://cnblogs.com'
#代理服务器
proxies={'http':'http://cnblogs.com'}
#使用代理服务器打开
r=urllib.urlopen(url1,proxies=proxies)
print r.info()
print r.getcode()
print r.geturl()
#打开本地文件
f=urllib.urlopen(url='file:/f:/from2.html')
#print f.read()
#print f.readline()
print f.readlines()
#打开ftp服务器
#f = urllib.urlopen(url = 'ftp://username:password@ftpaddress')
#保存网页显示进度
def urlabc(a,b,c):
"""
a:数量
b:大小
c:状态
"""
per=100.*a*b/c
if per>100:
per=100
print '%.2f%%'%per
url='http://www.oschina.net/news/55121/tiobe-2014-9'
local='oschina.net'
print urllib.urlretrieve(url,local,urlabc)
#get方法
params=urllib.urlencode({'s':1,'b':2,'c':3})
f=urllib.urlopen("http://www.musi-cal.com/cgi-bin/query?%s" % params)
print f.read()
print '*'*300
#post方法
params=urllib.urlencode({'s':1,'b':2,'c':3})
f=urllib.urlopen("http://www.musi-cal.com/cgi-bin/query?%s" % params)
print f.read()
print '*'*300
#编码解码
data='name=~a+3'
data1=urllib.quote(data)
print data1
print urllib.unquote(data1)
data2=urllib.quote_plus(data)
print data2
print urllib.unquote_plus(data2)
data3 = urllib.urlencode({ 'name': 'dark-bull', 'age': 200 })
print data3
data4=urllib.pathname2url(r'F:\qtgui\netword1\oschina.net')
print data4
print urllib.url2pathname(data4)
python urllib基础学习的更多相关文章
- Python入门基础学习 三
Python入门基础学习 三 数据类型 Python区分整型和浮点型依靠的是小数点,有小数点就是浮点型. e记法:e就是10的意思,是一种科学的计数法,15000=1.5e4 布尔类型是一种特殊的整形 ...
- Python入门基础学习 二
Python入门基础学习 二 猜数字小游戏进阶版 修改建议: 猜错的时候程序可以给出提示,告诉用户猜测的数字偏大还是偏小: 没运行一次程序只能猜测一次,应该提供多次机会给用户猜测: 每次运行程序,答案 ...
- Python入门基础学习 一
Python入门基础学习 一 Python下载及安装 下载地址:https://www.python.org/,选择最新的版本下载 稍等一会,安装完成. 简单语句 从idle启动Python:IDLE ...
- python函数基础学习
函数的定义与调用: def 函数名(参数1,参数2): ‘’’函数注释’’’ print(‘函数体’) return 返回值 定 义:def关键字开关,空格之后接函数名和圆括号,最后冒号结尾 def ...
- Python入门基础学习(文件与异常处理)
Python基础学习笔记(七) 捕获异常的语法格式: 文件的基本操作: 打开文件 读.写文件 关闭文件 read方法 --读取文件: open函数的第一个参数是要打开的文件名(文件名区分大小写) 如果 ...
- Python入门基础学习(时间模块,随机模块)
Python基础学习笔记(六) time模块: 时间的三种表示方法: 1.格式化字符串 2.时间戳 用来表示和1970年的时间间隔,单位为s 3.元组 struct_time 9个元素 time的st ...
- Python入门基础学习(模块,包)
Python基础学习笔记(五) 模块的概念:模块是python程序架构的一个核心概念 每个以拓展名py结尾的python源代码文件都是一个模块 模块名同样也是一个标识符,需要符合标识符的命名规则 在模 ...
- Python入门基础学习(面向对象)
Python基础学习笔记(四) 面向对象的三个基本特征: 封装:把客观事物抽象并封装成对象,即将属性,方法和事件等集合在一个整体内 继承:允许使用现有类的功能并在无须重新改写原来的类情况下,对这些功能 ...
- Python入门基础学习(函数)
Python基础学习笔记(三) 函数的概念: 所谓函数,就是把具有独立功能的代码块组织为一个小模块,在需要的时候调用 函数的使用包含两个步骤: 1.定义函数 --封装独立的功能 2.调用函数 --享受 ...
随机推荐
- 泛型 Field 和 SetField 方法 (LINQ to DataSet)
LINQ to DataSet 为 DataRow 类提供用于访问列值的扩展方法:Field 方法和 SetField 方法.这些方法使开发人员能够更轻松地访问列值,特别是 null 值.DataSe ...
- MongoDB分片技术[转]
8天学通MongoDB——第六天 分片技术 在mongodb里面存在另一种集群,就是分片技术,跟sql server的表分区类似,我们知道当数据量达到T级别的时候,我们的磁盘,内存 就吃不消了,针 ...
- linux性能优化常用命令
作为一名linux系统管理员,最主要的工作是优化系统配置,使应用在系统上以最优的状态运行,但是由于硬件问题.软件问题.网络环境等的复杂性 和多变性,导致对系统的优化变得异常复杂,如何定位性能问题出在哪 ...
- Android AdapterView View的复用机制 分析
对于ListView.GridView相信大家都不陌生,重写个BaseView,实现对于的几个方法,然后就完毕了我们的界面展示.而且在大部分情况下,我们载入特别多的Item也不会发生OOM,大家也都明 ...
- 多路复用I/O select()
select(),poll(),epoll()的总结:http://www.cnblogs.com/Anker/p/3265058.html 在socket编程中,仅仅使用connect,accept ...
- CentOS6.6(单用户模式)重设root密码
1.开机时手要快按任意键,因为默认时间5s 2.grub菜单,只有一个内核,没什么好上下选的,按e键.不过如果你升级了系统或安装了Xen虚拟化后,就会有多个显示了. 3.接下来显示如下,选择第二项,按 ...
- iOS会议和组织
全世界有许多iOS会议和组织,如果你没有机会去参加,知道他们的存在和向他们学习对你也是有益的.事实上,他们中有些提供免费的幻灯片.视频,有用资料等,所以你不能够忽视他们. 有一些会议的主题并不仅仅关于 ...
- 推荐一款JSON字符串查看器
JSON Viewer是一款方便易用的Json格式查看器.Json格式的数据阅读性很差,如果数据量大的话再阅读方面会十分困难,有了这软件,问题就解决了,能够快速把Json字符串排列规则的树结构,支持对 ...
- 巧记--Css选择器
love ------> hate 即: a:link --> a:visited --> a:hover --> a:active a:link ...
- 不指定order by时Sql的排序
在sql中不指定Order by,排序是按照主键吗?答案是不一定.举个例子: 查询AttendanceEmpRank表,主键是AttendanceEmployeeRankId,而且是聚集索引 ...