爬虫学习笔记(二)http请求详解
上篇博客里面写了,爬虫就是发http请求(浏览器里面打开发送的都是http请求),然后获取到response,咱们再从response里面找到想要的数据,存储到本地。
咱们本章就来说一下什么是http请求,它里面都有哪些东西,我们在写爬虫的时候,怎么http请求里面哪些对我们的爬虫有影响。
http请求过程
咱们打开一个网站的时候,过程是这样的客户端(浏览器)发送请求到服务端(你打开的网站所在的服务器),服务端接收到请求,处理,返回数据给客户端(浏览器),然后咱们在浏览器里面看到了数据。
明白了这个过程之后呢,咱们再来说http请求里面都包含了什么东西。
请求方式
主要有:GET/POST两种类型常用,另外还有HEAD/PUT/DELETE/OPTIONS
GET和POST的区别就是:请求的数据GET是在url中,POST则是存放在请求体里面。
GET:一般向服务器获取数据用get请求,get请求的数据都是放在url中的,实质上和post请求没有太大的区别,当然也可以用来向服务器发送数据。
POST:一般向服务器发送数据用post请求,post请求的数据放在请求体里。
HEAD:与GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部分。它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数据)。
PUT:向指定资源位置上传其最新内容。
OPTIONS:这个方法可使服务器传回该资源所支持的所有HTTP请求方法。用'*'来代替资源名称,向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作。
DELETE:请求服务器删除Request-URI所标识的资源。
请求url
URL,即统一资源定位符,也就是我们说的网址,统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
URL的格式由三个部分组成:
第一部分是协议(或称为服务方式)。 http/https
第二部分是存有该资源的主机IP地址(有时也包括端口号)。 www.nnzhp.cn/192.168.1.1:8888
第三部分是主机资源的具体地址,如目录和文件名等。 /index
爬虫爬取数据时必须要有一个目标的URL才可以获取数据,因此,它是爬虫获取数据的基本依据。
请求头
一个请求由两部分组成, 请求头和请求体。
包含请求时的头部信息,如User-Agent,Host,Cookies等信息,user-agent就是你请求用的是什么浏览器,host就是服务端的地址,还有很多信息,服务端是如何分辨你是用的什么浏览器,你的ip地址就是从请求头里面获取到的。下面就是在请求我博客的时候,发送的头信息。
请求体
请求体就是发送数据的时候,数据放在请求体里面。get请求是没有请求体的,从上面的截图也能看到,下面是没有这个请求体的。post请求才有请求体。下面的截图可以看到登陆博客的这个请求是一个post请求,登陆的账号密码就是放在请求体里面的。
http响应
上面说了请求,下面说响应。
发送了请求,服务端要给返回数据嘛。这个就是响应,请求是你发出去的,响应是服务端返回给你的。
响应包含了2个部分,一个是响应头,一个是响应体。响应头里面包含了响应的状态码,返回数据的类型,类型的长度,服务器信息,Cookie信息等等。
响应体里面就是具体返回的数据了。
响应状态码
有很多响应状态,不同的状态码代表不同的状态,常见的状态码如:200代表成功,301跳转,404找不到页面,502服务端错误
- 1xx消息——请求已被服务器接收,继续处理
- 2xx成功——请求已成功被服务器接收、理解、并接受
- 3xx重定向——需要后续操作才能完成这一请求
- 4xx请求错误——请求含有词法错误或者无法被执行
- 5xx服务器错误——服务器在处理某个正确请求时发生错误 常见代码:
- 200 OK 请求成功
- 400 Bad Request 客户端请求有语法错误,不能被服务器所理解
- 401 Unauthorized 请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
- 403 Forbidden 服务器收到请求,但是拒绝提供服务
- 404 Not Found 请求资源不存在
- 503 Server Unavailable 服务器当前不能处理客户端的请求,一段时间后可能恢复正常
- 301 目标暂时性转移
- 302 目标永久性转移
响应头、响应体
看下图~