返回顶部
首页 > 资讯 > 后端开发 > Python >python之web模块学习-- htt
  • 503
分享到

python之web模块学习-- htt

模块pythonweb 2023-01-31 03:01:33 503人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

1  Httplib简介httplib 是python中http协议的客户端实现,可以使用该模块来与 HTTP 服务器进行交互    httplib是一个相对底层的http请求模块,其上有专门的包装模块,如urllib内建模块,Goto等第


1  Httplib简介

httplib 是python中http协议的客户端实现,可以使用该模块来与 HTTP 服务器进行交互

    httplib是一个相对底层的http请求模块,其上有专门的包装模块,如urllib内建模块,Goto等第三方模块,但是封装的越高就越不灵活,比如urllib模块里请求错误时就不会返回结果页的内容,只有头信息,对于某些需要检测错误请求返回值的场景就不适用,所以就得用这个模块了。

    httplib实现了HTTP和https的客户端协议,一般不直接使用,在Python更高层的封装模块中(urllib,urllib2)使用了它的HTTP和HTTPS实现。其中HTTPS需要Socket编译了SSL支持。HTTP类仅仅是和python1.5.2及以前的版本兼容,不推荐使用。

    2 httplib 详解

下面介绍一下 httplib常用的类

    2.1 class httplib.HTTPConnection

       HTTPConnection类 有两种常见方式:

     1 HTTPConnection

    class httplib.HTTPConnection(host[,port[, strict[, timeout[, source_address]]]]) 
用法:
    该类用于创建一个http类型的请求链接
参数:
    host: 请求的服务器host,不能带http://开头
    port: 服务器WEB服务端口
    strict: 是否严格检查请求的状态行,就是http1.0/1.1 协议版本的那一行,即请求的第一行,默认为False,为True时检查错误会抛异常
    timeout: 单次请求的超时时间,没有时默认使用httplib模块内的全局的超时时间
返回:
    HTTPConnection类会实例并返回一个HTTPConnection对象
详解:
    HttpConnection的实例表示与HTTP服务器的事务。实例化时需要传递主机和可选的端口号。如果没有端口号,试图以host:port格式从主机字符串提取,如果提取失败则使用默认的HTTP端口(80)。参数strict默认为false,表示在无法解析状态行时(status line)不能被HTTP/1.0或1.1解析时不抛出BadStatusLine异常;可选参数timeout表示即阻塞在多少秒后超时,如果没有给出默认使用全局超时设置。可选参数source_address表示HTTP的源地址(host, port)。

    2 HTTPSConnection

    class httplib.HTTPSConnection(host[, port[, key_file[,cert_file[, strict[, timeout[, source_address]]]]]])
用法:
    该类用于创建一个https类型的请求链接
参数:
    key_file:一个包含PEM格式的私钥文件
    cert_file:一个包含PEM格式的认证文件
    other:其它同http参数
返回:
    同样返回一个HTTPSConnection对象
注意:
    要创建https链接,必须要保证底层的socket模块是支持ssl的编译模式,即编译时ssl选项的开关是开着的
详解:
   HttpConnection的子类,使用SSL与安全服务器通信。默认端口为443。key_file是包含PEM格式私钥的文件名称。 cert_file中是PEM格式的证书链文件。

附代码:

HTTP:

>>> import httplib
>>> conn =httplib.HTTPConnection('www.baidu.com')
>>> conn = httplib.HTTPConnection('www.baidu.com:80')
>>> conn =httplib.HTTPConnection('www.baidu.com','80')
>>> conn =httplib.HTTPConnection('www.baidu.com','80',True)
>>> conn =httplib.HTTPConnection('www.baidu.com','80',True,10)

    错误示例:

>>> conn =httplib.HTTPConnection('www.baidu.com:80',True,10)

HTTPS:

>>> conn = httplib.HTTPSConnection('www.baidu.com',443,key_file,cert_file,True,10)

    

    以下为 关于 HTTPConnection 类的方法

    2.1.1  HTTPConnection.request()

    HTTPConnection.request( method , url [ , body [ , headers ]] )
用法:
    调用request方法会向服务器发送一次请求
参数:
    method: 请求的方式,如'GET','POST','HEAD','PUT','DELETE'等
    url: 请求的网页路径。如:'/index.html'
    body: 请求是否带数据,该参数是一个字典
    headers: 请求是否带头信息,该参数是一个字典,不过键的名字是指定的http头关键字
返回:
    无返回,其实就是相对于向服务其发送数据,但是没有最后回车

附代码:

>>> import httplib
>>>conn=httplib.HTTPConnection('www.baidu.com',80,False,10)
>>> conn.request('get','/','',{'user-agent':'test'})

    2.1.2  HTTPConnection.getresponse()

说明:
    获取一个http响应对象,相当于执行最后的2个回车
返回:
    HTTPResponse对象(下面会用到)

附代码:

>>> import httplib
>>> conn=httplib.HTTPConnection('www.baidu.com',80,False,10)
>>> conn.request('get','/','',{'user-agent':'test'})
>>>res = conn.getresponse()

    2.1.3  HTTPConnection.connect()

    对象创建之后连接到指定的服务器

    2.1.4  HTTPConnection.close()

    关闭与服务器的连接    

    附代码:

>>> import httplib
>>> conn=httplib.HTTPConnection('www.baidu.com',80,False,10)
>>> conn.request('get','/','',{'user-agent':'test'})
>>> res = conn.getresponse()
>>>conn.close()

    2.1.5  HTTPConnection.set_debuglevel( level )

    设置高度的级别。参数level 的默认值为0 ,表示不输出任何调试信息


  2.2  class httplib.HTTPResponse

    HTTPResponse表示服务器对客户端请求的响应。往往通过调用HTTPConnection.getresponse()来创建,实例连接成功之后返回的类,不能由用户实例化。

    它有如下方法和属性:

    2.2.1  HTTPResponse.read([amt])

说明:
    获得http响应的内容部分,即网页源码
原型:
    body = res.read([amt])amt: 读取指定长度的字符,默认为空,即读取所有内容
返回:
    网页内容字符串

    获取响应的消息体。如果请求的是一个普通的网页,那么该方法返回的是页面的html。可选参数amt表示从响应流中读取指定字节的数据。

    附代码:

>>>conn=httplib.HTTPConnection('www.baidu.com',80,False,10)
>>> conn.request('GET','')
>>> res = conn.getresponse()
>>>res.read()
#下面的为网页信息
'<!DOCTYPE html><!--STATUSOK-->\r\n<html>\r\n<head>\r\n\t<metahttp-equiv="content-type"content="text/html;charset=utf-8">\r\n\t<metahttp-equiv="X-UA-Compatible" content="IE=Edge">\r\n\t<linkrel="dns-prefetch"href="//s1.bdstatic.com"/>\r\n\t<linkrel="dns-prefetch" href="//t1.baidu.com"/>\r\n\t<linkrel="dns-prefetch" href="//t2.baidu.com"

    2.2.2   HTTPResponse.getheader(name[, default])

    获取执指定的响应头。Name表示头域(headerfield)名,可选参数default在头域名不存在的情况下作为默认值返回。

    2.2.3   HTTPResponse.getheaders()

    获得所有的响应头内容,是一个元组列表[(name,value),(name2,value2)]


    附代码:

>>>res.getheaders()
[('content-length', '14613'), ('bdqid','0x9d3801010001675e'), ('set-cookie','BAIDUID=9ACDF7C2DF8C2EA720CBD97636829343:FG=1; expires=Thu, 31-Dec-37 23:55:55GMT; max-age=2147483647; path=/; domain=.baidu.com,BIDUPSID=9ACDF7C2DF8C2EA720CBD97636829343; expires=Thu, 31-Dec-37 23:55:55 GMT;max-age=2147483647; path=/; domain=.baidu.com, PSTM=1436858070; expires=Thu,31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com,BDSVRTM=0; path=/'), ('accept-ranges', 'bytes'), ('vary', 'Accept-Encoding'),('bduserid', '0'), ('server', 'BWS/1.1'), ('last-modified', 'Wed, 03 Sep 201402:48:32 GMT'), ('connection', 'Keep-Alive'), ('x-ua-compatible', 'IE=Edge,chrome=1'),('pragma', 'no-cache'), ('cache-control', 'no-cache'), ('date', 'Tue, 14 Jul2015 07:14:30 GMT'), ('p3p', 'CP=" OTI DSP COR IVA OUR IND COM "'),('content-type', 'text/html'), ('bdpagetype', '1')]

    2.2.4  HTTPResponse.msg

    获取所有的响应头信息。包含响应头的mimetools.Message实例

>>>res.msg
<httplib.HTTPMessage instance at0x1959e60>

    2.2.5  HTTPResponse.msg

    获取服务器所使用的http协议版本。11表示http/1.1;10表示http/1.0

>>> res.version
11

     2.2.6  HTTPResponse.status

    获取响应的状态码。如:200表示请求成功

>>> res.status
200

     2.2.6  HTTPResponse.reason

    返回服务器处理请求的结果说明。一般为”OK”

>>> res.reason
'OK'

  2.3  class httplib.HTTPMessage

    HTTPMessage实例用于保存HTTP响应头。它使用mimetools.Message类实现,并提供了处理HTTP头的工具函数。它不直接实例化的用户。不能由用户实例化。

  2.4  异常

    exception httplib.HTTPException

Exception的子类,此模块中的其他异常的基类。下面的类默认是该类的直接子类。

  • httplib.NotConnected

  • httplib.InvalidURL

  • httplib.UnknownProtocol

  • httplib.UnknownTransferEncoding

  • httplib.UnimplementedFileMode

  • httplib.IncompleteRead

  • httplib.ImproperConnectionState

  • httplib.CannotSendRequest

ImproperConnectionState的一个子类。

  • httplib.CannotSendHeader

ImproperConnectionState的一个子类。

  • httplib.ResponseNotReady

ImproperConnectionState的一个子类。

  • httplib.BadStatusLine

服务器返回的HTTP状态码不认识时产生。

  2.5  常量和类变量

  • httplib.HTTP_PORT:HTTP协议的默认端口,恒为80。

  • httplib.HTTPS_PORT:HTTPS协议的默认端口,恒为443。

  • 状态常量:参见http://docs.python.org/2/library/httplib.html

  • httplib.responses:映射HTTP1.1状态代码映射到W3C的名字的字典。




--结束END--

本文标题: python之web模块学习-- htt

本文链接: https://lsjlt.com/news/187359.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python之web模块学习-- htt
    1  httplib简介httplib 是python中http协议的客户端实现,可以使用该模块来与 HTTP 服务器进行交互    httplib是一个相对底层的http请求模块,其上有专门的包装模块,如urllib内建模块,goto等第...
    99+
    2023-01-31
    模块 python web
  • python之web模块学习-- url
      下面继续学习python的web模块 ---  urllib2,一个源于urllib又高于urllib的模块。1  urllib2 简介    urllib2是python自带的一个访问网页及本地文件的库。    与urllib相比,显...
    99+
    2023-01-31
    模块 python web
  • Python模块学习之IPy模块
    IP地址规划是网络设计中非常重要的一个环节,规划的好坏会直接影响路由协议算法的效率,包括网络性能、可扩展性等方面,在这个过程当中,免不了要计算大量的IP地址,包括网段、网络掩码、广播地址、子网数、IP类型等。Python提供了一个强大的第...
    99+
    2023-01-31
    模块 Python IPy
  • Python学习之PyYaml模块
    我需要解析twemproxy的配置文件中的pool和后端的redis主机。采用shell解析yml文件太麻烦,正好python有正对于yaml文件解析的pyyaml模块例如twemporxy的配置文件nutcracker.yamlalpha...
    99+
    2023-01-31
    模块 Python PyYaml
  • python模块之paramiko学习<
    简介: paramiko是python(2.2或更高)的模块,遵循SSH2协议实现了安全(加密和认证)连接远程机器。 安装所需软件包: http://ftp.dlitz.net/pub/dlitz/crypto...
    99+
    2023-01-31
    模块 python paramiko
  • python学习之argparse模块
    一、简介:argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块。argparse模块的作用是用于解析命令行参数,例如 python parseTest.py input.txt outpu...
    99+
    2023-01-31
    模块 python argparse
  • Python学习之MySQLdb模块
    CentOS下安装sudo yum install MySQL-python可以参考http://www.mikusa.com/python-mysql-docs/index.html  获取更多信息MySQL-python 为Python...
    99+
    2023-01-31
    模块 Python MySQLdb
  • Python学习笔记之json模块和pickle模块
    目录json模块序列化与反序列化json模块中的方法pickle模块总结json模块 json用于不同语言之间的数据交换,比如C和Python之间等等,即可跨语言。而pickle只能...
    99+
    2023-05-18
    json模块 pickle模块 python各个模块讲解
  • python模块学习----nmap模块
    安装nmap模块:pip install python_nmanmap模块说明:python-nmap是一个帮助使用nmap端口扫描器的python库。它允许轻松操纵nmap扫描结果,并且将是一个完美的选择,为需要自动完成扫描任务的系统管理...
    99+
    2023-01-31
    模块 python nmap
  • 小白学习Python之路---re模块学
    本节大纲:   1.正则表达式   2.re模块的学习   3.速记理解技巧   4.挑战练习--开发一个简单的python计算器   5.心得总结   6.学习建议     正则表达式:   正则表达式,又称规则表达式。(英语:Regu...
    99+
    2023-01-31
    之路 模块 Python
  • Python 模块学习
        模块学习: http://wsyht90.blog.51cto.com/9014030/1845737 1、getpass 2、os 3、sys 4、subprocess 5、hashlib 6、json 7、pickle 8、sh...
    99+
    2023-01-31
    模块 Python
  • python模块学习
    系统相关的信息模块: import sys sys.argv 是一个 list,包含所有的命令行参数. sys.stdout sys.stdin sys.stderr 分别表示标准输入输出,错误输出的文件对象. sys.st...
    99+
    2023-01-31
    模块 python
  • Python学习之包与模块详解
    目录什么是 Python 的包与模块包的身份证如何创建包创建包的小练习包的导入 - import模块的导入 - from…import导入子包及子包函数的调用导入主包及...
    99+
    2024-04-02
  • Python学习之日志模块详解
    目录日志的作用日志的等级logging 模块的使用logging 模块演示小案例OK,今天我们来学习一下 python 中的日志模块,日志模块也是我们日后的开发工作中使用率很高的模块...
    99+
    2024-04-02
  • python hashlib模块学习
    目录 hashlib 模块 破解密码 hmac 模块 1.干嘛用的: 对字符进行加密,其实就是一个自定义的字符编码表,...
    99+
    2023-01-31
    模块 python hashlib
  • python模块学习(1)
    模块让你能够有逻辑地组织你的Python代码段。把相关的代码分配到一个 模块里能让你的代码更好用,更易懂。模块也是Python对象,具有随机的名字属性用来绑定或引用。简单地说,模块就是一个保存了Python代码的文件。模块能定义函数,类和变...
    99+
    2023-01-31
    模块 python
  • python学习-re模块
    Python 的 re 模块(Regular Expression 正则表达式)提供各种正则表达式的匹配操作,在文本解析、复杂字符串分析和信息提取时是一个非常有用的工具,下面我主要总结了re的常用方法。1.re的简介    使用python...
    99+
    2023-01-31
    模块 python
  • Python学习-pycurl模块
    pycurl是一个用c语言编写的libcurl Python实现,功能非常强大,支持操作协议有FTP,HTTP,HTTPS,TELNET等。模块的常用方法说明:close()方法,对应libcurl包中的curl_easy_cleanup方...
    99+
    2023-01-31
    模块 Python pycurl
  • python optparse模块学习
    本文参考:http://docs.python.org/2/library/optparse.htmlPython 有两个内建的模块用于处理命令行参数:一个是 getopt,getopt只能简单处理 命令行参数。另一个是 optparse,...
    99+
    2023-01-31
    模块 python optparse
  • Python pycurl模块 学习
    pycurl模块的安装方法如下: easy_install pycurl #easy_install安装方法 pip install pycurl #pip安装方法 #源码安装方法 # 要求curl-config包支持,需要源码方式重新安...
    99+
    2023-01-31
    模块 Python pycurl
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作