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

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.request
url = '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.request
def 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% 

2. http包简介

http包提供了 HTTP协议的一些功能,主要模块有:

http.client --- 底层的 HTTP 协议的一些功能,可以为 urllib.request 模块所用

http.server --- 提供了基于 socketserver模块的基本 HTTP服务器类

http.cookies --- cookies 的管理工具

http.client :

HttpClient不是一个浏览器。它是一个客户端的HTTP通信实现库。HttpClient的目标是发送和接收HTTP报文。

两个主要类(用于客户端):

HTTPConnection :基于HTTP协议的客户端,指定 URL(网址) 后,可以 发送请求报文 和 接收响应报文

HTTPRespone :基于 HTTP 协议的服务端回应。一旦用 HTTPConnection 成功连接,可以调用相关方法返回该实例(HTTPRequest实例)。

(1)HTTPConnection 的方法:

构造方法: HTTPConnection( host,port,[timeout] ) 返回一个HTTPConnection 实例

host:表示主机域名或 ip 地址

port:表示端口

timeout:阻塞操作将会在给定时间后超时。可选项

发送请求报文方法:HTTPConnection.request( method,url,body =None,headers = {} )

method:发送的操作,一般为 GET 或者 POST

url :进行操作的 url

body :所发送的数据

headers:发送的 HTTP头部,是一个字典类型

获取响应报文方法:HTTPConnection.getrespone( )

关闭与服务器的连接: HTTPConne.close()

发送一个头部:HTTPConnection.putheader( header,args[ ] ) #头部以一个字典方式发送

发送一个空白行到服务器,标志头部Header的结束:HTTPConnection.endheaders( )

发送数据到服务器:HTTPConnection.send( data ) ,应该在endheaders()之后 和 getrespone()之前调用。

(2)HTTPRespone:

HTTPRespone对象:一旦用 HTTPConnection 成功连接,可以调用HTTPConnection.getrespone()返回该实例(HTTPRequest实例)。

HTTPRespone.getheader(name) :返回头部中的 name 字段对应的值

HTTPRespone.getheaders( ) :以元组的方式返回整个头部的信息

HTTPRespone.read() :返回响应报文中的body部分,也即正文部分

HTTPRespone.status #返回状态码

HTTPRespone.version #返回 HTTP协议版本

http 包应用实例 。

from http.client import HTTPConnection

con = HTTPConnection('www.baidu.com',80)
con.request('GET','/')   #发送请求报文
res = con.getresponse()   #获取响应报文对象
print(res.status) #200 (表示状态码)
print(res.reason) #OK	 (表示状态码对应的意义)
print(res.read().decode('utf-8')) #打印www.baidu.com的html

以上这篇对python3 urllib包与http包的使用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

您可能感兴趣的文章:

  • Python3学习urllib的使用方法示例
  • 深入理解Python3中的http.client模块
  • python3使用urllib模块制作网络爬虫
  • Python中的urllib模块使用详解
  • Python3中使用urllib的方法详解(header,代理,超时,认证,异常处理)
(0)

相关推荐

  • python3使用urllib模块制作网络爬虫

    urllib urllib模块是python3的URL处理包 其中: 1.urllib.request主要是打开和阅读urls 个人平时主要用的1: 打开对应的URL:urllib.request.open(url) 用urllib.request.build_opener([handler, ...]),来伪装成对应的浏览器 import urllib #要伪装成的浏览器(我这个是用的chrome) headers = ('User-Agent','Mozilla/5.0 (Windows N

  • Python中的urllib模块使用详解

    urllib模块提供的上层接口,使我们可以像读取本地文件一样读取www和ftp上的数据.每当使用这个模块的时候,老是会想起公司产品的客户端,同事用C++下载Web上的图片,那种"痛苦"的表情.我以前翻译过libcurl教程,这是在C/C++环境下比较方便实用的网络操作库,相比起libcurl,Python的urllib模块的使用门槛则低多了.可能有些人又会用效率来批评Python,其实在操作网络,或者在集群交互的时候, 语言的执行效率绝不是瓶颈.这种情况下,一个比较好的方法是,将pyt

  • Python3中使用urllib的方法详解(header,代理,超时,认证,异常处理)

    我们可以利用urllib来抓取远程的数据进行保存哦,以下是python3 抓取网页资源的多种方法,有需要的可以参考借鉴. 1.最简单 import urllib.request response = urllib.request.urlopen('http://python.org/') html = response.read() 2.使用 Request import urllib.request req = urllib.request.Request('http://python.org

  • Python3学习urllib的使用方法示例

    urllib是python的一个获取url(Uniform Resource Locators,统一资源定址符)了,可以利用它来抓取远程的数据进行保存,本文整理了一些关于urllib使用中的一些关于header,代理,超时,认证,异常处理处理方法. 1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None) url:  需要

  • 深入理解Python3中的http.client模块

    http 模块简介 Python3 中的 http 包中含有几个用来开发 HTTP 协议的模块. http.client 是一个底层的 HTTP 协议客户端,被更高层的 urllib.request 模块所使用. http.server 包含基于 socketserver 的基本 HTTP 服务器的类. http.cookies 实现 cookie 状态管理 http.cookiejar 与 cookie 相关 http 模块还定义了一系列的 HTTP 状态码. HTTPStatus 类是在 P

  • Python爬虫包 BeautifulSoup 递归抓取实例详解

    Python爬虫包 BeautifulSoup  递归抓取实例详解 概要: 爬虫的主要目的就是为了沿着网络抓取需要的内容.它们的本质是一种递归的过程.它们首先需要获得网页的内容,然后分析页面内容并找到另一个URL,然后获得这个URL的页面内容,不断重复这一个过程. 让我们以维基百科为一个例子. 我们想要将维基百科中凯文·贝肯词条里所有指向别的词条的链接提取出来. # -*- coding: utf-8 -*- # @Author: HaonanWu # @Date: 2016-12-25 10:

  • Python爬虫包 BeautifulSoup  递归抓取实例详解

    Python爬虫包 BeautifulSoup  递归抓取实例详解 概要: 爬虫的主要目的就是为了沿着网络抓取需要的内容.它们的本质是一种递归的过程.它们首先需要获得网页的内容,然后分析页面内容并找到另一个URL,然后获得这个URL的页面内容,不断重复这一个过程. 让我们以维基百科为一个例子. 我们想要将维基百科中凯文·贝肯词条里所有指向别的词条的链接提取出来. # -*- coding: utf-8 -*- # @Author: HaonanWu # @Date: 2016-12-25 10:

  • python 中不同包 类 方法 之间的调用详解

    目录结构如下: 在hello.py中导入ORM.py这个文件的时候,采用 import ORMPackage.ORM 或者 import ORM u = User(id = 123, name='codiy', email='codiy_huang@163.com', password='123456') 两种方式均报错 错误提示: name '***' is not defined 或者 No module named ORM 解决办法: 方法一 将包所在的目录添加到sys.path路径 im

  • 关于Python 中的时间处理包datetime和arrow的方法详解

    在获取贝壳分的时候用到了时间处理函数,想要获取上个月时间包括年.月.日等 # 方法一: today = datetime.date.today() # 1. 获取「今天」 first = today.replace(day=1) # 2. 获取当前月的第一天 last_month = first - datetime.timedelta(days=1) # 3. 减一天,得到上个月的最后一天 print(last_month.strftime("%Y%m")) # 4. 格式化成指定形

  • JVM上高性能数据格式库包Apache Arrow入门和架构详解(Gkatziouras)

    Apache Arrow是是各种大数据工具(包括BigQuery)使用的一种流行格式,它是平面和分层数据的存储格式.它是一种加快应用程序内存密集型. 数据处理和数据科学领域中的常用库: Apache Arrow.诸如Apache Parquet,Apache Spark,pandas之类的开放源代码项目以及许多商业或封闭源代码服务都使用Arrow.它提供以下功能: 内存计算 标准化的柱状存储格式 一个IPC和RPC框架,分别用于进程和节点之间的数据交换 让我们看一看在Arrow出现之前事物是如何

  • java创建jar包并被项目引用步骤详解

    目录 jar包? 1.创建项目和验证 1.1创建项目 1.2 创建包和类 1.3相应的代码 2.打包和引用包 2.1打jar包 2.2 导入生成的jar包 2.3 验证jar包导入/应用的正确性 jar包? jar包: 实现了特定功能的,java字节码文件的压缩包.本质上就是一个编译后的java项目,打包成jar文件log4j.jar , mysql-connection-8.01.jar等. 自己创建jar包,让别人来用: 1.新建java项目 2.创建实现了特定功能的类 3.将该项目生成为j

  • Python中打包和解包(*和**)的使用详解

    目录 一.打包参数 二.解包参数 三.几点注意 *和**在函数的定义和调用阶段,有着不同的功能,并且,*和**不能离开函数使用! 一.打包参数 * 的作用:在函数定义中,收集所有位置参数到一个新的元组,并将整个元组赋值给变量args >>> def f(*args): # * 在函数定义中使用 print(args) >>> f() () >>> f(1) (1,) >>> f(1, 2, 3, 4) (1, 2, 3, 4) 我们可

  • Windows和夜神模拟器上抓包程序mitmproxy的安装使用详解

    目录 windows 一.介绍说明 二.安装以及配置 三.mitmdump的使用 夜神模拟器 一.安装过程 1.准备 2.安装命令,在.mitmproxy目录下运行cmd 3.重命名+推送至手机 4.安装mitm证书到手机adb shell操作: 5.查看是否成功: ** windows ** 一.介绍说明 mitmproxy是一个支持HTTP和HTTPS的抓包程序,有类似Fiddler.Charles的功能,只不过它是一个控制台的形式操作. mitmproxy还有两个关联组件.一个是mitmd

  • Python3网络爬虫中的requests高级用法详解

    本节我们再来了解下 Requests 的一些高级用法,如文件上传,代理设置,Cookies 设置等等. 1. 文件上传 我们知道 Reqeuests 可以模拟提交一些数据,假如有的网站需要我们上传文件,我们同样可以利用它来上传,实现非常简单,实例如下: import requests files = {'file': open('favicon.ico', 'rb')} r = requests.post('http://httpbin.org/post', files=files) print

  • Python3爬虫里关于Splash负载均衡配置详解

    用Splash做页面抓取时,如果爬取的量非常大,任务非常多,用一个Splash服务来处理的话,未免压力太大了,此时可以考虑搭建一个负载均衡器来把压力分散到各个服务器上.这相当于多台机器多个服务共同参与任务的处理,可以减小单个Splash服务的压力. 1. 配置Splash服务 要搭建Splash负载均衡,首先要有多个Splash服务.假如这里在4台远程主机的8050端口上都开启了Splash服务,它们的服务地址分别为41.159.27.223:8050.41.159.27.221:8050.41

随机推荐