首页 > 编程 > Python > 正文

对python3 urllib包与http包的使用详解

2020-02-23 00:04:27
字体:
来源:转载
供稿:网友

urllib包和http包都是面向HTTP协议的。其中urllib主要用于处理 URL,使用urllib操作URL可以像使用和打开本地文件一样地操作。而 http包则实现了对 HTTP协议的封装,是urllib.request模块的底层。

1.urllib包简介

2. http 包简介

1.urllib包简介

urllib包主要模块有:

1.urllib.request -----用于打开 URL网址;

2.urllib.error ---------定义了常见的urllib.request会引发的异常;

3.urllib.parse---------用于解析 URL;

具体方法:

urllib.request.urlopen( url,data,proxies ) :用于打开 url

参数如下:

url:要进行操作的 URL地址

data:可选项。向URL 传递的数据。

proxies:可选项。使用的代理地址

import urllib.requesturl = 'http://www.baidu.com'   #网页为百度首页respone = urllib.request.urlopen(url) #打开url地址,并返回一个 HTTPRespone实例html = respone.read().decode('utf-8') #调用实例的 read()方法,并用 utf-8进行解码处理。就得出完整的百度的HTML文件print(html) 

部分打印结果:

<html><head>  <meta http-equiv="content-type" content="text/html;charset=utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=Edge">	<meta content="always" name="referrer"> <meta name="theme-color" content="#2932e1"> <link rel="shortcut icon" href="/favicon.ico" rel="external nofollow" type="image/x-icon" /> <link rel="search" type="application/opensearchdescription+xml" href="/content-search.xml" rel="external nofollow" title="百度搜索" />  <link rel="icon" sizes="any" mask href="//www.baidu.com/img/baidu.svg" rel="external nofollow" >

urllib.request.urlretrieve(url,filename,reporthook,data) :用于将 URL的HTML文件下载并保存为本地文件

参数如下:

url:要下载的网页

filename:保存在主机的路径,可选项。

reporthook:一个回调函数,可选项。

data:发送的数据,一般用于 post,可选项。

特别:关于urlretrieve()的回调函数reporthook:可以用来显示下载的进度,几乎已经封装好

import urllib.requestdef callbackfunc(blocknum, blocksize, totalsize): #这三个参数是由 urlretrieve自动赋值的 '''回调函数 @blocknum: 已经下载的数据块 @blocksize: 数据块的大小 @totalsize: 远程文件的大小 ''' percent = 100.0 * blocknum * blocksize / totalsize if percent > 100:  percent = 100 print( "%.2f%%"% percent) #保留两位小数url = 'http://www.sina.com'local = 'd://sina.html'        #下载的html文件保存在 d盘的sina.html里urllib.request.urlretrieve(url,local,callbackfunc) #没下载完一个数据块,就会执行回调函数一次

执行结果:

//只显示局部 0.00% 1.38% 2.76% 4.13% 5.51% 6.89%             
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表