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. 部署jenkins+git

    Jenkins简介 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能 安装并启动思路: 安装准备 ...

  2. ESP8266常见问题汇总——转载自官网

    ESP8266 常见问题 本页面收集esp8266常见问题 概述 本文档主要介绍开发者在ESP8266开发中常见的一些问题. 这些问题主要包括以下几大类: 基本概念相关 ESP8266 相关 AiCl ...

  3. Django项目开发,XSS攻击,图片防盗链,图片验证码,kindeditor编辑器

    目录 一.Django项目开发 1. 项目开发流程 2. auth模块的补充 (1)django的admin可视化管理页面 (2)将admin可视化管理页面的模型表显示成中文 (3)auth模块的用户 ...

  4. JZOJ 5987 仙人掌毒题 (树链剖分 + 容斥)

    跟仙人掌其实没啥关系- Here 注意 每一次都O(n)O(n)O(n)一下算某些点都是黑点的概率其实并不是O(n2)O(n^2)O(n2),因为每个环只用算一次. #include <ccty ...

  5. 【51nod 2004】终结之时

    题目大意 "将世界终结前最后的画面,深深刻印进死水般的心海." 祈愿没有得到回应,雷声冲破云霄,正在祈愿的洛天依受到了极大的打击. 洛天依叹了口气,说:"看来这个世界正如 ...

  6. bootstrap与IE、360浏览器的兼容问题

    bootstrap样式在IE.360浏览器无法正常显示,之前使用的一个基于bootstrap的插件在IE.360浏览器也无法正常使用. bootstrap3支持的浏览器有: Chrome (Mac.W ...

  7. vue多套样式切换

    最近根据设计要求app需要根据不同环境切换不同样式,网上找了很多方法都不理想,后面自己脑洞大开这么完成的,请大佬多指教! 一.新建全局变量js文件和公用样式文件,在main.js中引入 import  ...

  8. 《剑指offer》算法题第十天

    今日题目: 数组中的逆序对 两个链表的第一个公共节点 数字在排序数组中出现的次数 二叉搜索树的第k大节点 字符流中第一个不重复的字符 1. 数组中的逆序对 题目描述: 在数组中的两个数字,如果前面一个 ...

  9. codevs 1200 同余方程 2012年NOIP全国联赛提高组 x

    /*我在提交的时候发现了一个特别好玩的事,有兴趣的话,可以自己尝试一下:把下面说的地方的y=0改为y=1在codevs里面能够ac,这……数据水?到一定境界……厉害了,吓得我还以为自己对了,结果一讲才 ...

  10. MySQL_(Java)【事物操作】使用JDBC模拟银行转账向数据库发起修改请求

    MySQL_(Java)使用JDBC向数据库发起查询请求 传送门 MySQL_(Java)使用JDBC向数据库中插入(insert)数据 传送门 MySQL_(Java)使用JDBC向数据库中删除(d ...