Http协议简述
HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。
Http请求响应模型:
Http请求流程(又称为事务):
- 建立连接
- 建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
- 服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
- 客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。
请求报头
请求报头允许客户端向服务器端传递请求的附加信息以及客户端自身的信息。
** 常用报头:**
** 1. Accept **
Accept请求报头域用于指定客户端接受哪些类型的信息。
**eg **:Accept:image/gif,表明客户端希望接受GIF图象格式的资源;
Accept:text/html,表明客户端希望接受html文本。
** 2. Accept-Charset **
Accept-Charset请求报头域用于指定客户端接受的字符集。
** eg **:Accept-Charset:iso-8859-1,gb2312.如果在请求消息中没有设置这个域,缺省是任何字符集都可以接受。
** 3. Accept-Encoding **
Accept-Encoding请求报头域类似于Accept,但是它是用于指定可接受的内容编码。
** eg **:Accept-Encoding:gzip.deflate.如果请求消息中没有设置这个域服务器假定客户端对各种内容编码都可以接受。
** 4. Accept-Language **
Accept-Language请求报头域类似于Accept,但是它是用于指定一种自然语言。
** eg **:Accept-Language:zh-cn.如果请求消息中没有设置这个报头域,服务器假定客户端对各种语言都可以接受。Authorization
** 5. Host **
Host请求报头域主要用于指定被请求资源的Internet主机和端口号。
** eg **:http://www.guet.edu.cn/index.html
Host:www.guet.edu.cn 此处使用缺省端口号80
** 6. User-Agent **
User-Agent请求报头域允许客户端将它的操作系统、浏览器和其它属性告诉服务器。不过,这个报头域不是必需的。
响应报头
响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对Request-URI所标识的资源进行下一步访问的信息。
**1. Location **
Location响应报头域用于重定向接受者到一个新的位置。Location响应报头域常用在更换域名的时候。
** 2.Server **
Server响应报头域包含了服务器用来处理请求的软件信息。
** 3.WWW-Authenticate **
WWW-Authenticate响应报头域必须被包含在401(未授权的)响应消息中,客户端收到401响应消息时候,并发送Authorization报头域请求服务器对其进行验证时,服务端响应报头就包含该报头域。
** eg **:WWW-Authenticate:Basic realm=Basic Auth Test! //可以看出服务器对请求资源采用的是基本验证机制。
Python3 爬虫入门
#python3.4
#这是一个简单的示例
import urllib.request
url = 'http://douban.com/'
webPage = urllib.request.urlopen(url)
data = webPage.read()
data = data.decode('UTF-8')
print(data) #显示网页源代码
print(type(webPage)) #显示网页类型:<class 'http.client.HTTPResponse'>
print(webPage.geturl()) #显示网址:https://www.douban.com/
print(webPage.info()) #显示网页信息
'''Date: Thu, 13 Oct 2016 13:33:16 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 95363
Connection: close
Vary: Accept-Encoding
X-Xss-Protection: 1; mode=block
X-Douban-Mobileapp: 0
Expires: Sun, 1 Jan 2006 01:00:00 GMT
Pragma: no-cache
Cache-Control: must-revalidate, no-cache, private
Set-Cookie: ll="118318"; path=/; domain=.douban.com; expires=Fri, 13-Oct-2017 13:33:16 GMT
Set-Cookie: bid=GPcbKhAfcmA; Expires=Fri, 13-Oct-17 13:33:16 GMT; Domain=.douban.com; Path=/
X-DOUBAN-NEWBID: GPcbKhAfcmA
X-DAE-Node: sindar10c
X-DAE-App: sns
Server: dae
Strict-Transport-Security: max-age=15552000; '''
print(webPage.getcode()) #返回状态码:200