python3爬虫笔记(一):了解HTTP协议

HTTP协议:HyperText Transfer Protocol

1. 概念

​ HTTP(超文本传输协议)是互联网上应用最为广泛的一种网络协议,是TCP/IP协议的一种。我们在浏览器的地址栏输入地址浏览网页时都遵循这一协议,它有两个功能:

  1. 规范了客户端如何构造并发送请求
  2. 规范了服务器如何响应请求。

2. B/S,C/S架构

​ 通过浏览器(Browser)访问服务器的架构称为B/S架构,通过客户端(Client)访问服务器的架构称为C/S架构(如QQ)。浏览器其实也是一中客户端,但随着互联网的发展,越来越多的企业或机构采用B/S的架构,应用场景非常广,所有现在把浏览器这份客户端吧单独拿出来称为B/S架构。

  • Client,Browser的作用:

    1. 发送请求到服务器,这个过程称为request。
    2. 包括请求的方法,地址,协议版本,客户端信息及正文等
  • Server(服务器)的作用:

    1. 响应客户端的请求,这个过程称为response
    2. 响应中包括响应的状态,协议版本,响应类型,正文等。

3. url(Uniform Resource Locator)

url构成

我们在浏览器地址栏输入的链接就是url(中文名:统一资源定位符),服务器端的资源都是通过url标识的。

url的构成:例: http://www.pythoncode.com:8080/course/list.html?cat=3&sort=1
+ http://https:// :传输使用的协议,模式,http和https的区别在于,https使用了安全套接字,也就是https在传输时经过了加密
+ www:域
+ pythoncode.com :主机
+ 8080:访问主机的端口号。
+ /course/ : 路径,类似于计算机中的文件夹的层级。
+ list.html 资源,类似的还有*.png等
+ ?cat=3&sort=1 向服务器传递的参数用?与网址分隔,以键值对的形式,多个参数以’&’分隔

url编码

​ url是一个字符串,一些字符在url中有特殊意义,就类似于字符串的转义一样,在某些时候需要对特殊字符,以及字典表进行编码。例如:空格:%20或+, ! : %21, ” : %22

​ python3中内置了urllib.parse库来帮助对url进行编码和解码。

对字符串:编码:urllib.parse.quote(s) 解码:urllib.parse.unquote(s)

对字典表:编码:urllib.parse.urlencode(dict)

#对字符串进行编码
>>>import urllib.parse as p
>>>p.quote('faefafe!   #')
'faefafe%21%20%20%20%23'
#对字符串解码
>>>p.unquote('faefafe%21%20%20%20%23')
'faefafe!   #'
#字典表
>>>d = {'id':2, 'page':4}
>>>p.urlencode(d)
'id=2&page=4'

4. 请求和响应

​ 浏览器访问服务器,的到返回的页面的过程就是一个请求与响应的过程。

​ 打开浏览器访问一个网址,右键选择检查—>Network,刷新页面,就能看到本次请求得到的所有资源。
python3爬虫笔记(一):了解HTTP协议_第1张图片
选择一个查看,右侧的’Header’中,显示的是本次请求与响应的信息。
python3爬虫笔记(一):了解HTTP协议_第2张图片

请求:

​ 请求的方法:

  • GET:获取信息
  • HEAD:仅获取头部信息
  • POST:发送数据到服务器
  • PUT:本地替换服务器目标资源
  • DELETE:删除资源
  • CONNECT:确立连接
  • ……

常用的请求方法主要是GET和POST

GET和POST的区别:
GET和POST都可以向服务器传送数据,不同在于GET传递参数时,参数会经过编码用'?'拼接在url中的,比如常见的请求分页的数据时:*.com/abc?page=1, POST方法不会把参数拼接在url中,相对更安全,并且GET传递的文件有大小限制,POST没有限制,所以GET常用于请求先关参数对应的信息,而POST通常用于向服务器提交信息,如注册提交,上传文件等。

​ 请求中的其他主要信息:

  • Accept-Encoding:告知服务器采用哪种压缩方式:gzip、compress等
  • Accept:媒体类型
  • Accept-Charset:字符集
  • User-Agent:浏览器信息

响应:

响应包括响应的状态码,响应的数据类型,和正文(如html,json)等

  • 状态码
类别 原因短语
1** Informational信息性状态码
2** Success成功状态码
3** Redirection重定向状态码
4** Client Error客户端错误状态码
5** Server Error服务器错误状态码

常用状态码:200,请求成功

​ 404,资源未找到,一般是url写错了

​ 500,服务器出错。

你可能感兴趣的:(爬虫-python)