httplib实现了HTTP和HTTPS的客户端协议,一般不直接使用,在python更高层的封装模块中(urllib,urllib2)使用了它的http实现。
http 比URL底层,2是1的加强版。
import
conn
conn.request('get',
print
conn.close()
HTTPConnection类的构造函数,表示一次与服务器之间的交互,即请求/响应。参数host表示服务器主机,如:http://www.csdn.net/;port为端口号,默认值为80; 参数strict的 默认值为false, 表示在无法解析服务器返回的状态行时( status line) (比较典型的状态行如: HTTP/1.0 200 OK ),是否抛BadStatusLine 异常;可选参数timeout 表示超时时间。
HTTPConnection.request
调用request 方法会向服务器发送一次请求,method 表示请求的方法,常用有方法有get 和post ;url 表示请求的资源的url ;body 表示提交到服务器的数据,必须是字符串(如果method 是”post” ,则可以把body 理解为html 表单中的数据);headers 表示请求的http 头。
urllib 和urllib2实现的功能大同小异,但urllib2要比urllib功能等各方面更高一个层次。目前的HTTP访问大部分都使用urllib2.
req
response
the_page
1、urllib2.Request()的功能是构造一个请求信息,返回的req就是一个构造好的请求
2、urllib2.urlopen()的功能是发送刚刚构造好的请求req,并返回一个文件类的对象response,包括了所有的返回信息。
3、通过response.read()可以读取到response里面的html,通过response.info()可以读到一些额外的信息。
urllib和urllib2的主要区别:
- urllib2可以接受Request对象为URL设置头信息,修改用户代理,设置cookie等, urllib只能接受一个普通的URL.
- urllib提供一些比较原始基础的方法而urllib2没有这些, 比如 urlencode
import urllib
import urllib2
import httplib
import httplib2
print "urllib start\n"
url1 = "http://www.qq.com"
#ff = urllib.urlopen(url, data, proxies, context)
ff = urllib.urlopen(url1)
print ff.headers
print ff.info()
print "urllib2 start:\n"
url = "http://www.csdn.net" # absolute address
#urllib2.urlopen(url, data, timeout, cafile, capath, cadefault, context)
f = urllib2.urlopen(url).info()
print f
print "another method of urllib2\n"
request = urllib2.Request(url)
respon = urllib2.urlopen(request)
print respon.info()
print "httplib start:\n"
conn1 = httplib.HTTPConnection("baidu.com")
conn1.request('GET', '/')
res = conn1.getresponse()
header = res.getheaders()
for line in header:
print line
conn1.close()
print "httplib2 start:\n"
url2 = "http://mail.163.com"
http = httplib2.Http()
#http.request(uri, method, body, headers, redirections, connection_type)
response, content = http.request(url2)
print response