httplib模块是一个底层基础模块,可以看到建立HTTP请求的每一步,但是实际的功能比较少。在python爬虫开发中基本用不到

  • 下面详细介绍httplib提供的常用类型和方法:

  • httplib.HTTPConnection ( host [ , port [ , strict [ , timeout ]]] )

    • HTTPConnection类的构造函数,表示一次与服务器之间的交互,即请求/响应。
  • HTTPConnection.request ( method , url [ , body [ , headers ]] )

    • 调用request 方法会向服务器发送一次请求,method 表示请求的方法,常用有方法有get 和post ;url 表示请求的资源的url ;body 表示提交到服务器的数据,必须是字符串(如果method 是"post" ,则可以把body 理解为html 表单中的数据);headers 表示请求的http 头。
  • HTTPConnection.getresponse ()

  - 获取Http 响应。返回的对象是HTTPResponse 的实例,关于HTTPResponse 在下面会讲解。

  • HTTPConnection.connect ()  连接到Http 服务器。

  • HTTPConnection.close ()  关闭与服务器的连接。

httplib.HTTPResponse
  HTTPResponse表示服务器对客户端请求的响应。往往通过调用HTTPConnection.getresponse()来创建,它有如下方法和属性: HTTPResponse.read([amt])   获取响应的消息体。如果请求的是一个普通的网页,那么该方法返回的是页面的html。可选参数amt表示从响应流中读取指定字节的数据。 HTTPResponse.getheader(name[, default])   获取响应头。Name表示头域(header field)吊,可选参数default在头域吊上存在的情况下作为默认值返回。 HTTPResponse.getheaders()   以列表的形式返回所有的头信息。 HTTPResponse.msg   获取所有的响应头信息。 HTTPResponse.version   获取服务器所使用的http协议版本。11表示http/1.1;10表示http/1.0。 HTTPResponse.status   获取响应的状态码。如:200表示请求成功。 HTTPResponse.reason   返回服务器处理请求的结果说明。一般为”OK”

接下来使用GET和POST请求发送,

  • Get请求:

import httplib
conn =None
try:
conn = httplib.HTTPConnection("www.zhihu.com")
conn.request("GET", "/")
response = conn.getresponse()
print response.status, response.reason
print '-' * 40
headers = response.getheaders()
for h in headers:
print h
print '-' * 40
print response.msg
except Exception,e:
print e
finally:
if conn:
conn.close()

-运行结果:

C:\Python27\python.exe F:/python_scrapy/ch03/3.2.2_Httplib.py
301 Moved Permanently
----------------------------------------
('content-length', '182')
('set-cookie', 'tgw_l7_route=23ddf1acd85bb5988efef95d7382daa0; Expires=Wed, 01-Aug-2018 13:12:46 GMT; Path=/, _xsrf=1tvVcqOibo5QEOMGIxD3uSM36Hn3ms4J; path=/; domain=zhihu.com; expires=Sun, 17-Jan-21 12:57:46 GMT')
('vary', 'Accept-Encoding')
('server', 'ZWS')
('connection', 'keep-alive')
('location', 'https://www.zhihu.com/')
('date', 'Wed, 01 Aug 2018 12:57:46 GMT')
('content-type', 'text/html')
----------------------------------------
Date: Wed, 01 Aug 2018 12:57:46 GMT
Content-Type: text/html
Content-Length: 182
Connection: keep-alive
Set-Cookie: tgw_l7_route=23ddf1acd85bb5988efef95d7382daa0; Expires=Wed, 01-Aug-2018 13:12:46 GMT; Path=/
Location: https://www.zhihu.com/
Server: ZWS
Vary: Accept-Encoding
Set-Cookie: _xsrf=1tvVcqOibo5QEOMGIxD3uSM36Hn3ms4J; path=/; domain=zhihu.com; expires=Sun, 17-Jan-21 12:57:46 GMT Process finished with exit code 0
  • 下面是POST请求:
#!coding:utf-8
import httplib, urllib
conn = None
try:
params = urllib.urlencode({'name': 'qiye', 'age': 22})
headers = {"Content-type": "application/x-www-form-urlencoded"
, "Accept": "text/plain"}
conn = httplib.HTTPConnection("www.zhihu.com", 80, timeout=3)
conn.request("POST", "/login", params, headers)
response = conn.getresponse()
print response.getheaders() #获取头信息
print response.status
print response.read()
except Exception, e:
print e
finally:
if conn:
conn.close()

httplib/urllib实现的更多相关文章

  1. python基于http协议编程:httplib,urllib和urllib2<转>

    httplib实现了HTTP和HTTPS的客户端协议,一般不直接使用,在python更高层的封装模块中(urllib,urllib2)使用了它的http实现. httplib.HTTPConnecti ...

  2. httplib,urllib和urllib2

    一.httplib实现了HTTP和HTTPS的客户端协议,一般不直接使用,在python更高层的封装模块中(urllib,urllib2)使用了它的http实现. import httplib con ...

  3. httplib urllib urllib2 pycurl 比较

    最近网上面试看到了有关这方面的问题,由于近两个月这些库或多或少都用过,现在根据自己的经验和网上介绍来总结一下. httplib 实现了HTTP和HTTPS的客户端协议,一般不直接使用,在python更 ...

  4. python httplib get和post获取数据

    httplib 下的 status http请求的状态  200 404 500... reason 返回答复 OK或者 FAULRE read()  读取内容 get方法: #!/usr/bin/e ...

  5. python2 httplib 笔记

    python2  httplib 笔记 #coding=utf-8 ''' Created on 2014年9月25日 @author: cocoajin ''' import httplib,url ...

  6. python用httplib模块发送get和post请求

    在python中,模拟http客户端发送get和post请求,主要用httplib模块的功能. 1.python发送GET请求 我在本地建立一个测试环境,test.php的内容就是输出一句话: 1 e ...

  7. 利用python httplib模块 发送Post请求测试web服务是否正常起来!

    最近在学习python,恰好老大最近让我搞个基于post请求测试web服务是否正常启用的小监控,上网查了下资料,发现强大的Python恰好能够用上,所以自己现学现卖,顺便锻炼下自己. 由于本人也刚接触 ...

  8. Python urllib Request 用法

    转载自:https://blog.csdn.net/ywy0ywy/article/details/52733839 python2.7 httplib, urllib, urllib2, reque ...

  9. Python下载网页的几种方法

    get和post方式总结 get方式:以URL字串本身传递数据参数,在服务器端可以从'QUERY_STRING'这个变量中直接读取,效率较高,但缺乏安全性,也无法来处理复杂的数据(只能是字符串,比如在 ...

随机推荐

  1. 第十五届四川省省赛 SCU - 4444 Travel

    给你一个一共由两种边的完全图 要求你求1到N的最短路 q队列为前沿队列(已探索过且最外围的点)  p队列为未探索队列(未探索过的点) depth这个数组的用法并不是代表实际上这个点在第几层 而是防止死 ...

  2. NTP服务及时间同步

    环境: centos7 server   192.168.2.171 client    192.168.2.173.192.168.2.174 整体思路:173.174同步171的时间,171定时同 ...

  3. 强大的Visual Studio插件CodeRush全新发布v19.2,助力VS开发

    CodeRush是一个强大的Visual Studio .NET 插件,它利用整合技术,通过促进开发者和团队效率来提升开发者体验.CodeRush能帮助你以极高的效率创建和维护源代码.Consume- ...

  4. 使用idea 搭建一个 SpringBoot + Mybatis + logback 的maven 项目

    (注意项目名不能有大写......),把项目类型 改成 War 类型.(web项目) 使用 mybatis-generator 插件 生成 实体类 和 接口 在 resources 目录 中 新建一个 ...

  5. 激活函数matlab代码

    [转自:http://blog.csdn.net/fendoubasaonian/article/details/52974608] %JOINT Summary of this function g ...

  6. Windows系统下载地址

    地址: https://msdn.itellyou.cn/ 里面给出的是迅雷下载链接,请提前安装好迅雷

  7. Codeforces 884E E. Binary Matrix

    题 OvO http://codeforces.com/contest/884/problem/E 884e 解 考虑并查集,每个点向上方和左方的点合并,答案即为1的总数减去需要合并的次数 由于只有1 ...

  8. 将页面内搜索结果高亮显示(使用mark.js),且页面顶部定位到第一个搜索结果

    <!DOCTYPE> <html> <head> <title> new document </title> <meta name=& ...

  9. Windows下安装sass和compass失败的解决办法

    sass依赖Ruby,所以,首先得先安装个Ruby sass的安装步骤: 在安装的时候,请勾选Add Ruby executables to your PATH这个选项,添加环境变量,不然以后使用编译 ...

  10. Codeforces 979 D. Kuro and GCD and XOR and SUM(异或和,01字典树)

    Codeforces 979 D. Kuro and GCD and XOR and SUM 题目大意:有两种操作:①给一个数v,加入数组a中②给出三个数x,k,s:从当前数组a中找出一个数u满足 u ...