pythonurllib模块-Python3中核心模块urllib的用法大全

Python的urllib模块提供了一个高级的Web通信库,支持基本的协议,如HTTP、FTP和Gopher,同时也支持对本地文件的访问。在Python3中,urllib、urlparse、urllib2等都整合进一个名为urllib的单一包中。urllib、urllib2的内容整合进了urllib.request模块中,urlparse整合进了urllib.parse模块中。Python3中的urllib包还包括response、error、robotparse这些子模块。下面就来看看Python3中核心模块urllib的用法大全吧。

urllib.parse

一般来说,一个URL的地址是可以分为六部分的。urllib.parse模块就是对Web网址进行解析,分解或合并成URL。主要的方法有urlparse、urlunparse、urljoin。示例代码如下:#!/usr/local/env python

# coding:utf-8

import urllib.parse

__author__ = "风轻清淡"

url = "https://www.noniu.com/module;path?id=12#22"

ret = urllib.parse.urlparse(url)

# 结果为:ParseResult(scheme='http', netloc='www.noniu.com', path='/module', params='path', query='id=12', fragment='22')

# 可以通过索引访问所有的结果,分别代表:网络协议、服务器地址、CGI应用路径、可选参数、查询的键值对、文档内定锚

print(ret)

url_str = ("http", "www.noniu.com", "/jiaocheng/228.html", "", "", "")

url_ret = urllib.parse.urlunparse(url_str)

# 结果为:https://www.noniu.com/jiaocheng/228.html

# urlunpars与urlparse相当于相反的操作

print(url_ret)

url_join = urllib.parse.urljoin("https://www.noniu.com/about/", "/jiaocheng/228.html")

# 结果为:https://www.noniu.com/jiaocheng/228.html

# urljoin方法将URL的根域名与新的路径拼合为一个完整的URL

print(url_join)

urllib.request

urllib.request模块中有urlopen、urlretrieve、quote等方法,具体的参数和功能见下表:urllib.request中的方法描述

urlopen(urlstr, postQueryData=https://www.noniu.com/jiaocheng/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查询字符串

以下是urllib.request模块中具体方法的示例代码:#!/usr/local/env python

# coding:utf-8

import urllib.request

__author__ = "风轻清淡"

url = "https://www.noniu.com/index.php"

ret = urllib.request.urlopen(url)

# 结果为:b' '

# 连接成功后,urlopen返回一个文件类型对象,可以使用read、readline等文件操作方法进行读取,数据为字节类型。

print(ret.readline())

# 结果为:https://www.noniu.com/index.php

# geturl方法是考虑所有重定向后,获取真实的URL

print(ret.geturl())

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值