集独财富一定符。python2和python3中的urllib

urllib提供了三个高等的 Web 通讯库,援助中央的 Web 协议,如 HTTP、FTP 和
Gopher 协议,同时也协理对位置文件的造访。

具体来说,urllib
模块的效益是运用后面介绍的协商来从因特网、局域网、本地主机上下载数据。

使用这些模块就毫无用到 httplib、ftplib和 gopherlib
那一个模块了,除非须求选取更低层的成效。

Python 2 中有 urlib、urlparse、urllib二,以及别的剧情。在 Python 3中,全数那几个有关模块都整合进了二个名称为 urllib 的拾足包中。

urlib 和 urlib贰 中的内容结合进了 urlib.request模块中,urlparse 整合进了
urllib.parse 中。

Python 3 中的 urlib 包还包涵 response、error 和robotparse 那几个子模块。

 

python urllib库,pythonurllib

集合营源一定符 /
URL

python
援救三种区别的模块,两者以差别的功能和包容性来管理U牧马人L。壹种是urlparse,其余①种是urllib。
urlparse
模块用于拍卖部分基本作用,用于拍卖UTucsonL字符串,那几个效用包涵urlparse(),urlunparse()和urljoin()。
urlparse()将U奥德赛L字符串解析为局部url塑造。语法如下

URL的格式

prot_sch://net_loc/path;params?query#frag

U智跑L的壹1部分(Web地址的种种零部件)

prot_sch                           网络协议或下载方案
net_loc                            服务器所在地(也含有用户信息)
path                               使用斜杠(/)分割的文件或CGI应用的路径
params                             可选参数
query                              连接符(&)分割的一系列键值对
frag                               指定文档内特定锚的部分

net_loc 可以进一步拆分成多个组件,一些是必备的,另一些是可选的:
user:passwd@host:port

user                               用户名或登录
passwd                             用户密码
host                               运行web服务器的计算机名称或地址(必须的)
port                               端口号(如果不是默认的80)

 

python2和python3中的urllib

urllib提供了一个高端的 Web 通讯库,补助宗旨的 Web 协议,如 HTTP、FTP 和
Gopher 协议,同时也支撑对本土文件的访问。

具体来说,urllib
模块的机能是采用前边介绍的合计来从因特网、局域网、本地主机上下载数据。

选拔这一个模块就绝不用到 httplib、ftplib和 gopherlib
这几个模块了,除非须要采用更低层的成效。

Python 2 中有 urlib、urlparse、urllib二,以及其余内容。在 Python 三中,全部这么些有关模块都整合进了3个名称为 urllib 的单纯包中。

urlib 和 urlib二 中的内容结合进了 urlib.request模块中,urlparse 整合进了
urllib.parse 中。

Python 三 中的 urlib 包还包罗 response、error 和robotparse 那些子模块。

 


 urlparse (urlstr,defProtSch = none,allowFrag=None)

urllib.parse模块

URL的格式

prot_sch://net_loc/path;params?query#frag

U景逸SUVL的壹一部分(Web地址的各类零部件)

prot_sch                           网络协议或下载方案
net_loc                            服务器所在地(也含有用户信息)
path                               使用斜杠(/)分割的文件或CGI应用的路径
params                             可选参数
query                              连接符(&)分割的一系列键值对
frag                               指定文档内特定锚的部分

net_loc 可以进一步拆分成多个组件,一些是必备的,另一些是可选的:
user:[email protected]:port

user                               用户名或登录
passwd                             用户密码
host                               运行web服务器的计算机名称或地址(必须的)
port                               端口号(如果不是默认的80)

 

目录

urlparse()将url解析为6个元组(prot_sch,net_loc,path,params,query,frag)

在python第22中学称之为urlparse,在python三中壹度更名叫urllib.parse

urllib.parse 模块提供了一部分基本功效,用于拍卖 U奥迪Q7L 字符串。那些意义包含urlparse()、urlunparse()和 urljoin()。

urllib.parse 模块中的宗旨函数描述

urlparse(urlstr,defProSch=None,allowFrag=None)            将urlstr解析成各个组件,如果在urlstr中没有给定协议或方案,则使用defProtSch;allowFrag 决定是否允许有 URL 片段
urlunparse(urltup)                                        将 URL 数据(urltup)的一个元组拼成一个 URL 字符串
urljoin(baseurl, newurl, allowFrag=None)                  将 URL 的根域名和 newurl 拼合成一个完整的 URL;allowFrag 的作用和urlpase()相同

 

urlparse()将 urlstr 解析成三个 6 元组(prot_sch, net_loc, path,
params, query, frag):

语法:urlparse(urlstr, defProtSch=None, allowFrag=None)
>>> urllib.parse.urlparse("https://www.smelond.com?cat=6")
ParseResult(scheme='https', netloc='www.smelond.com', path='', params='', query='cat=6', fragment='')

 

urlunparse()的成效与 urlpase()完全相反,其将经 urlparse()管理的 U卡宴L 生成
urltup 那一个 陆元组(prot_sch, net_loc, path, params, query,
frag),拼接成 URL 并返回:

语法:urlunparse(urltup)
>>> result = urllib.parse.urlparse("https://www.smelond.com")
>>> print(result)
ParseResult(scheme='https', netloc='www.smelond.com', path='', params='', query='', fragment='')
>>> urllib.parse.urlunparse(result)
'https://www.smelond.com'

 

在急需管理多个有关的 U本田CR-VL 时大家就必要接纳 urljoin()的效益了,比方,一个Web 页中或许会时有爆发壹密密麻麻页面 UPAJEROL:

urljoin()获得根域名,并将其根路线(net_loc
及其前面的全部路线,可是不包蕴末端的文书)与 newurl 连接起来。

语法:urljoin (baseurl, newurl, allowFrag=None)
>>> urllib.parse.urljoin("https://www.smelond.com?cat=6","?cat=7")
'https://www.smelond.com?cat=7'
>>> urllib.parse.urljoin("https://www.smelond.com?cat=6","abc")
'https://www.smelond.com/abc'
>>> urllib.parse.urljoin("https://www.smelond.com?cat=6","/test/abc.html")
'https://www.smelond.com/test/abc.html'
>>> urllib.parse.urljoin("https://www.smelond.com","abc.html")
'https://www.smelond.com/abc.html'

 

urllib.parse模块

  1. URL
    构成
  2. URL
    解析
  3. URL
    处理
例如:urlparse.urlparse('http://www.python.org/doc/FAQ.html')
     ('http','www.python.org','/doc/FAQ.html','','','')

urllib模块/包

urllib 模块提供了大多函数,可用于从钦赐 U中华VL
下载数据,同时也得以对字符串进行编码、解码职业,以便在 U福特ExplorerL
中以科学的款式体现出来。

在python第22中学称之为urlparse,在python叁中早已更名叫urllib.parse

urllib.parse 模块提供了部分基本成效,用于拍卖 U奥迪Q7L 字符串。这几个成效包括urlparse()、urlunparse()和 urljoin()。

 

urlparse()将 urlstr 解析成二个 6 元组(prot_sch, net_loc, path,
params, query, frag):

语法:urlparse(urlstr, defProtSch=None, allowFrag=None)
>>> urllib.parse.urlparse("https://www.smelond.com?cat=6")
ParseResult(scheme='https', netloc='www.smelond.com', path='', params='', query='cat=6', fragment='')

金沙注册送58, 

urlunparse()的功效与 urlpase()完全相反,其将经 urlparse()管理的 U本田UR-VL 生成
urltup 这么些 陆元组(prot_sch, net_loc, path, params, query,
frag),拼接成 URL 并返回:

语法:urlunparse(urltup)
>>> result = urllib.parse.urlparse("https://www.smelond.com")
>>> print(result)
ParseResult(scheme='https', netloc='www.smelond.com', path='', params='', query='', fragment='')
>>> urllib.parse.urlunparse(result)
'https://www.smelond.com'

 

在急需处理四个有关的 U奥迪Q伍L 时大家就要求选拔 urljoin()的效率了,举例,2个Web 页中或然会发生壹多种页面 UKugaL:

urljoin()取得根域名,并将其根路线(net_loc
及其前边的全体路线,可是不包含末端的文件)与 newurl 连接起来。

语法:urljoin (baseurl, newurl, allowFrag=None)
>>> urllib.parse.urljoin("https://www.smelond.com?cat=6","?cat=7")
'https://www.smelond.com?cat=7'
>>> urllib.parse.urljoin("https://www.smelond.com?cat=6","abc")
'https://www.smelond.com/abc'
>>> urllib.parse.urljoin("https://www.smelond.com?cat=6","/test/abc.html")
'https://www.smelond.com/test/abc.html'
>>> urllib.parse.urljoin("https://www.smelond.com","abc.html")
'https://www.smelond.com/abc.html'

 

urllib.parse 模块中的核心函数描述

urlparse(urlstr,defProSch=None,allowFrag=None)            将urlstr解析成各个组件,如果在urlstr中没有给定协议或方案,则使用defProtSch;allowFrag 决定是否允许有 URL 片段
urlunparse(urltup)                                        将 URL 数据(urltup)的一个元组拼成一个 URL 字符串
urljoin(baseurl, newurl, allowFrag=None)                  将 URL 的根域名和 newurl 拼合成一个完整的 URL;allowFrag 的作用和urlpase()相同

 

urllib库,pythonurllib
python2和python三中的urllib urllib提供了2个高端的 Web 通讯库,援助宗旨的
Web 协议,如 HTTP、FTP 和 Gopher 协议,同时也…

 

urlparse.urlunparse()
urlunparse()的职能与urlpase()完全相反,功效是把经过urlparse()管理的四个元组拼接成3个完好无损的url再次来到
urlparse.urljoin()在急需管理八个相关的USportageL时大家要求用到urljoin()的效应,举个例子1个页面大概会发出一名目许多页面url。urljoin的语法为

 

1 URL构成

 urljoin(baseurl, newurl, allowFrag=None)

urllib.request.urlopen()

urlopen()打开3个给定 U猎豹CS陆L 字符串表示的 Web 连接,并赶回文件类型的目标:

语法:urlopen (urlstr, postQueryData=None)
from urllib.request import urlopen
x = urlopen("https://www.smelond.com")
data = x.read().decode("utf-8")
print(data)

<!DOCTYPE HTML><html><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=10,IE=9,IE=8">.......一堆html输出中
<!--压缩前的大小: 20278 bytes; 压缩后的大小: 19511 bytes; 节约:3.78% -->

urllib.request.urlopen()文件类型对象的艺术:

f.read()                              从f中读出所有或bytes个字节
f.readline()                          从f中读取一行
f.readlines()                         从f中读出所有行,作为列表返回
f.close()                             关闭f的URL连接
f.fileno()                            返回f的文件句柄
f.info()                              获得f的MIME头文件
f.geturl()                            返回f的真正URL

from urllib.request import urlopen

x = urlopen("https://www.smelond.com")
data = x.info()
print(data)


Server: nginx
Date: Mon, 12 Mar 2018 07:36:18 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: close
Vary: Accept-Encoding
X-Powered-By: PHP/5.5.38
Link: <https://www.smelond.com/index.php?rest_route=/>

 

统1财富一定符(Uniform
Resource Locator)
是对能够从互连网络收获的财富的地点做客方法的壹种简单的意味,是互联英特网正式能源的地址。互联互连网的每一种文件都有三个唯1的U揽胜L,它涵盖的音讯提议文件的地方以及浏览器应该怎么管理它。今后曾经被万维网结盟编写制定为互连网标准LacrosseFC173八。

urljoin()获得根域名,并将其根路线(net_loc及前边完整路径,不过不包含末端的文件)与newurl连接起来

urllib.request.urlretrieve()

urlretrieve()不是用来以文件的花样拜访并开采 URL,而是用来下载完整的
HTML,把另存为文件(当然,他能够直接下载文件)

语法:urlretrieve(url, filename=None, reporthook=None, data=None)
from urllib.request import urlretrieve
urlretrieve("https://www.smelond.com", filename="test.html")

 

ULX570L的基本格式为,prot_sch://net_loc/path;params?query#frag

 urlparse.urljoin('http://www.python.org/doc/FAQ.html','current/lib/lib.html')

urllib.parse.quote()和urllib.parse.quote_plus()

quote*()函数用来获得 U揽胜L 数据,并将其编码,使其能够用于 UTucsonL 字符串中。

safe 字符串能够包括一文山会海无法改动的字符,默许字符是斜线(/)。

语法:quote(urldata, safe='/')
from urllib.parse import quote
name = "smelond"
number = 6
base = "https://"
query = "cat"
print(quote("%s%s.com/?%s=%d and 1=1" % (base, name, query, number), safe="?/=: "))     #注意我最后有一个空格
print(quote("%s%s.com/?%s=%d and 1=1" % (base, name, query, number)))

https://smelond.com/?cat=6 and 1=1                 #上面加排除了空格,所有and旁边没有翻译成为%20
https%3A//smelond.com/%3Fcat%3D6%20and%201%3D1        #默认/不转换

 quote_plus()与 quote()很像,只是它还是能够将空格编码成“+”号:

from urllib.parse import quote_plus
name = "smelond"
number = 6
base = "https://"
query = "cat"
print(quote_plus("%s%s.com/?%s=%d and 1=1" % (base, name, query, number), safe="?/=: "))
print(quote_plus("%s%s.com/?%s=%d and 1=1" % (base, name, query, number)))

https://smelond.com/?cat=6+and+1=1
https%3A%2F%2Fsmelond.com%2F%3Fcat%3D6+and+1%3D1
#输出结果中看出不管是否排除“空格”,quote_plus都会将空格变为+号,而且没有默认的safe

 

各部分零件含义如下,

‘http://www.python.org/doc/current/lib/lib.html’

urllib.parse.unquote()和 urllib.parse.unquote_plus()

unquote*()函数与
quote*()函数的效果完全相反,前者将有着编码为“%xx”式的字符调换到等价的
ASCII 码值。

调用 unquote()函数将会把 urldata 中具备的 UWranglerL
编码字母都解码,并赶回字符串。unquote_plus()函数会将加号转变来空格符。

语法:unquote*(urldata)
from urllib.parse import unquote
from urllib.parse import unquote_plus
print(unquote("https%3A//smelond.com/%3Fcat%3D6%20and%201%3D1"))
print(unquote_plus("https%3A%2F%2Fsmelond.com%2F%3Fcat%3D6+and+1%3D1"))

https://smelond.com/?cat=6 and 1=1
https://smelond.com/?cat=6 and 1=1

 

URL组件

描述

prot_sch

网络协议或下载方案,如HTTP/FTP等

net_loc

服务器所在地,如www.xxx.com/localhost

path

使用斜杠(/)分割的文件CGI路径

params

可选参数

query

连接符&分隔的一系列键值对

frag

指定文档内特定锚的部分

urllib.urlencode()

urlopen()函数接收字典的键值对,并将其编写翻译成字符串,键值对的格式是“键=值”,以连接符(&)划分。

除此以外,键及其对应的值会传到quote_plus()函数中开始展览适宜的编码。

from urllib.parse import urlencode

adict = {"name": "smelond", "cat": "6", " and 1": "1"}
print("https://www.smleond.com&%s" % urlencode(adict))

https://www.smleond.com&name=smelond&cat=6&+and+1=1

 

其中net_loc的着力格式为,user:passwd@host:port

urllib模块中的大旨函数

urlopen(urlstr, postQueryData=None)                               打开 URL urlstr,如果是 POST 请求,则通过 postQueryData 发送请求的数据
urlretrieve(urlstr, localfile=None,downloadStatusHook=None)       将 URL urlstr 中的文件下载到 localfile 或临时文件中(如果没有指定 localfile);
                                                                  如果函数正在执行,downloadStatusHook 将会获得下载的统计信息
quote(urldata, safe='/')                                          对 urldata 在 URL 里无法使用的字符进行编码,safe 中的字符无须编码
quote_plus(urldata, safe='/')                                     除了将空格编译成加(+)号(而非%20)之外,其他功能与 quote()相似
unquote(urldata)                                                  将 urldata 中编码过的字符解码
unquote_plus(urldata)                                             除了将加号转换成空格,其他功能与 unquote()相同
urlencode(dict)                                                   将 dict 的键值对通过 quote_plus()编译成有效的 CGI 查询字符串,用 quote_plus()对这个字符串进行编码

 

urllib 模块通过平安套接字层(SSL)援救开放的 HTTP 连接(socket
模块的中坚转移是扩张并贯彻了 SSL)。

httplib 模块协助使用“https”连接方案的 U翼虎L。除了那多少个模块以外,其余援助SSL 的模块还有 imaplib、poplib 和 smtplib。

 

各部分零件含义如下,

组件

描述

user

用户名或登录

passwd

用户密码

host

运行Web服务器的计算机名称或地址(必需的)

params

端口号(如果没有则默认80)

在那陆个零件中,host是最主要的,port唯有在Web服务器运维在非私下认可端口的图景下才会选择,而用户名和密码唯有在FTP连接时才会动用,而尽管是FTP大多也都以运用无名氏的,此时没有供给用户名和密码。

2 URL解析

对于U福睿斯L的剖析能够利用urllib中的parse模块来展开,

一体化代码

金沙注册送58 1金沙注册送58 2

 1 from urllib import parse
 2 
 3 # urlparse --> urllib.parse since python 3.0
 4 
 5 # urlparse
 6 print(parse.urlparse('http://blog.csdn.net/hxsstar/article/details/17240975'))
 7 # ParseResult(scheme='http', netloc='blog.csdn.net', path='/hxsstar/article/details/17240975', params='', query='', fragment='')
 8 print(parse.urlparse('http://www.python.org/doc/FAQ.html'))
 9 # ParseResult(scheme='http', netloc='www.python.org', path='/FAQ.html', params='', query='', fragment='')
10 
11 # urlunparse
12 # http://blog.csdn.net/hxsstar/article/details/17240975
13 print(parse.urlunparse(parse.urlparse('http://blog.csdn.net/hxsstar/article/details/17240975')))
14 print(parse.urlunparse(parse.ParseResult(scheme='http', netloc='blog.csdn.net', path='/hxsstar/article/details/17240975', params='', query='', fragment='')))
15 
16 # urljoin
17 # urljoin will join schema, net_loc and part of path of baseurl, with new url
18 print(parse.urljoin('http://www.python.org/doc/FAQ.html', 'current/lib/lib.html'))
19 # http://www.python.org/doc/current/lib/lib.html

View Code

支行解释

率先从urllib中程导弹入parse模块,此处须求留意的是,从Python三.0早先,原本的urlparse模块与urlopen等模块重新组合到了urllib中。

 

1 from urllib import parse
2 
3 # urlparse --> urllib.parse since python 3.0

动用urlparse函数对3个U奥迪Q5L实行剖析,最终得以拿走结果为ParseResult的实例

1 # urlparse
2 print(parse.urlparse('http://blog.csdn.net/hxsstar/article/details/17240975'))
3 # ParseResult(scheme='http', netloc='blog.csdn.net', path='/hxsstar/article/details/17240975', params='', query='', fragment='')
4 print(parse.urlparse('http://www.python.org/doc/FAQ.html'))
5 # ParseResult(scheme='http', netloc='www.python.org', path='/FAQ.html', params='', query='', fragment='')

应用urlunparse函数则能够逆向上述的历程,将叁个ParseResult实例变为U卡宴L

1 # urlunparse
2 # http://blog.csdn.net/hxsstar/article/details/17240975
3 print(parse.urlunparse(parse.urlparse('http://blog.csdn.net/hxsstar/article/details/17240975')))
4 print(parse.urlunparse(parse.ParseResult(scheme='http', netloc='blog.csdn.net', path='/hxsstar/article/details/17240975', params='', query='', fragment='')))

行使urljoin函数可以拍卖五个U陆风X8L,该函数接受四个ULX570L,将内部第一个作为base,保留其schema,net_loc以及path除最后文件名部分的内容,将其与第二个参数进行拼接生成新的UBMWX3L

1 # urljoin
2 # urljoin will join schema, net_loc and part of path of baseurl, with new url
3 print(parse.urljoin('http://www.python.org/doc/FAQ.html', 'current/lib/lib.html'))
4 # http://www.python.org/doc/current/lib/lib.html

 

3 URL处理

由此U中华VL能够采用urllib模块来开始展览数据下载等一名目大多操作,主要运用了url的request模块内的函数来拓展,

完全代码

金沙注册送58 3金沙注册送58 4

 1 from urllib import request
 2 
 3 url = 'https://www.baidu.com'
 4 
 5 # urlopen: 
 6 # urlopen(urlstr) will open an URL that pointed by urlstr, if no Schema or Schema is 'file' in urlstr, it will open a local file
 7 # it return a file object like open() does
 8 with request.urlopen(url) as f:
 9     print(f)    # http.client.HTTPResponse object
10     re = f.read()   # read all bytes
11     print(re)
12     re = f.info()   # return MIME(Multipurpose Internet Mail Extension)
13     print(re)   
14     re = f.geturl() # return real URL
15     print(re)   
16 
17 # urlretrieve: 
18 # urlretrieve will download full HTML and save it as a file
19 # filename -- file save path and file name, default None, and path is AppData/temp
20 # reporthook -- pass a function to this para, and three para(blocknum, block_size, total_size) will be passed to your function
21 print(request.urlretrieve(url, filename='baidu_url', reporthook=print))
22 
23 # quote:
24 # quote function can encode some symbol that not allowed in URL into %xx
25 print(request.quote('diss act&cat/sad')) # diss%20act%26cat/sad 
26 print(request.quote('diss act&cat/sad', safe='/&')) # diss%20act&cat/sad 
27 
28 # unquote:
29 print(request.unquote('diss%20act%26cat/sad')) # diss act&cat/sad

View Code

分段解释

率发轫入request模块,并且定义url参数,接着使用urlopen函数连接U牧马人L,若Schema为file或未有Schema,则会展开一个地点文件。该函数重返一个近乎于文件的类实例,可通过read()/readline()/readlines()等函数举行数量读取。

 1 from urllib import request
 2 
 3 url = 'https://www.baidu.com'
 4 
 5 # urlopen: 
 6 # urlopen(urlstr) will open an URL that pointed by urlstr, if no Schema or Schema is 'file' in urlstr, it will open a local file
 7 # it return a file object like open() does
 8 with request.urlopen(url) as f:
 9     print(f)    # http.client.HTTPResponse object
10     re = f.read()   # read all bytes
11     print(re)
12     re = f.info()   # return MIME(Multipurpose Internet Mail Extension)
13     print(re)   
14     re = f.geturl() # return real URL
15     print(re)   

输出结果,在那之中 三-一柒行为MIME音信。

Note: 此处使用
https://www.baidu.com 而不是
http://www.baidu.com,因而当使用urlopen获取网页音讯的时候获得的不用原网页的HTML文本,而是三个对https到http的转账,若须求原网页的HTML文本可应用
http://www.baidu.com UCR-VL进行连接。

 1 <http.client.HTTPResponse object at 0x00000000034FEC50>  
 2 b'<html>\r\n<head>\r\n\t<script>\r\n\t\tlocation.replace(location.href.replace("https://","http://"));\r\n\t</script>\r\n</head>\r\n<body>\r\n\t<noscript><meta http-equiv="refresh" content="0;url=http://www.baidu.com/"></noscript>\r\n</body>\r\n</html>'  
 3 Accept-Ranges: bytes  
 4 Cache-Control: no-cache  
 5 Content-Length: 227  
 6 Content-Type: text/html  
 7 Date: Mon, 09 Oct 2017 08:46:05 GMT  
 8 Last-Modified: Mon, 25 Sep 2017 03:07:00 GMT  
 9 P3p: CP=" OTI DSP COR IVA OUR IND COM "  
10 Pragma: no-cache  
11 Server: BWS/1.1  
12 Set-Cookie: BD_NOT_HTTPS=1; path=/; Max-Age=300  
13 Set-Cookie: BIDUPSID=A73CA416A65961564293CD1641ABCE93; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com  
14 Set-Cookie: PSTM=1507538765; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com  
15 Strict-Transport-Security: max-age=0  
16 X-Ua-Compatible: IE=Edge,chrome=1  
17 Connection: close  
18   
19 https://www.baidu.com  

当大家须求保留读取到的HTML文件时,能够应用urlretrieve()函数进行,向该函数字传送入目的url,保存的文本名,以及3个hook函数,保存文件的经过中会向hook函数中传出二个参数,分别是当下读入块数,块的字节数,文件的总字节数。能够行使此音信鲜明读取进程。最终urlretrieve函数返回一个贰元元组,包蕴存款和储蓄数据的公文名,以及富含文件头信息的Message类。

1 # urlretrieve: 
2 # urlretrieve will download full HTML and save it as a file
3 # filename -- file save path and file name, default None, and path is AppData/temp
4 # reporthook -- pass a function to this para, and three para(blocknum, block_size, total_size) will be passed to your function
5 print(request.urlretrieve(url, filename='baidu_url', reporthook=print))

以下为出口结果,

0 8192 227  
1 8192 227  
('baidu_url', <http.client.HTTPMessage object at 0x00000000035D38D0>)  

最后是利用quote和unquote函数对U奥迪Q5L实行改换,在U汉兰达L中存在重重不匡助的字符,举例空格等,可将其更改为%xx,xx表示该字符的十陆进制ASCII码,使用quote和unquote函数能够在两者之间实行切换,同时quote函数还支持safe参数,选拔无需转移的字符举办封存,其暗许值为‘/’,类似的还有quote_plus/unquote_plus函数(转换+号)。

1 # quote:
2 # quote function can encode some symbol that not allowed in URL into %xx
3 print(request.quote('diss act&cat/sad')) # diss%20act%26cat/sad 
4 print(request.quote('diss act&cat/sad', safe='/&')) # diss%20act&cat/sad 
5 
6 # unquote:
7 print(request.unquote('diss%20act%26cat/sad')) # diss act&cat/sad

 

相关文章

网站地图xml地图