Python爬虫之HTTP请求和响应

请求

请求,由客户端向服务端发出,可以分为4个部分内容:请求方法(Request Method),请求的网址(Request URL)、请求头(Request Header)、请求体(Request Body)。

常见的请求方法有两种:GET和POST。在浏览器中直接输入URL并回车,这便发起了一个GET请求,请求的参数会直接包含到URL里。例如,在百度中搜索python,这就是一个GET请求我们可以看到请求的链接如下:

其中URL中包含了请求的参数信息,这里参数wd表示要搜寻的关键字。POST请求大多在表单提交时发起。比如,对于一个登录表单,输入用户名和密码后,点击‘登录’按钮,这通常会发起一个POST请求,其数据通常以表单的形式传输,而不会体现在URL中。最后,如果你的时间不是很紧张,并且又想快速的python提高,最重要的是不怕吃苦,建议你可以架微♥信:762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~

GET和POST请求方法有如下区别:

GET请求中的参数都包含在URL里面,数据可以在URL中看到,而POST请求的URL不会包含这些数据,数据都是通过表单形式传输的,会包含在请求体中。 GET请求提交的数据最多只有1024字节,而POST方式没有限制

一般来说,登录时,需要提交用户名和密码,其中包含了敏感信息,使用GET方式请求的话,密码就会暴露在URL里面,造成密码泄露,所以这里最好以POST方式发送。上传文件时,由于文件内容比较大,也会选用POST方式。

我们平常遇到的绝大部分请求都是GET或POST请求,所以暂时只需要熟知这两种就可以啦。

请求的网址即统一资源定位符URL,它可以唯一确定我们想请求的资源。请求头,用来说明服务器要使用的附加信息,比较重要的信息有Cookie、Referer、User-Agent等。我们需要注意的就是User-Agent,简称UA,它是一个特殊的字符串头,可以使服务器识别客户使用的操作系统及版本、浏览器及版本等信息。在做爬虫时加上此信息可以伪装成浏览器;如果不加,很可能会被识别出来为爬虫,而从被反爬。因此,在我们写爬虫时,大部分情况下都要设定请求头。最后,如果你的时间不是很紧张,并且又想快速的python提高,最重要的是不怕吃苦,建议你可以架微♥信:762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~

请求体一般承载的内容是POST请求中的表单数据,而对于GET请求,则请求体为空。我门登录GitHub时捕获请求和响应如图所示:

登录之前,我们填写了用户名和密码信息,提交时这些内容就会以表单数据的形式提交给服务器,此时要注意Request Headers中指定的Content-Type为图中红色部分所示,所以才会以表单数据的形式提交。另外,我们也可以将Content-Type设置为application/json来提交JSON数据,或者设置为multipart/form-data来上传文件。在爬虫中,如果要构造POST请求,需要使用正确的Content-Type,并了解各种请求库的各个参数设置时使用的是哪种Content-Type,不然可能会导致POST提交后无法正常响应。

响应

响应,由服务端返回给客户端,可以分为三部分:响应状态码(Response Status Code)、响应头(Response Headers)和响应体(Response Body)。

响应状态码表示服务器的响应状态,如200代表服务器正常响应,404代表页面未找到,500代表服务器内部发生错误。在爬虫中,我们可以根据状态码来判断服务器响应状态。如状态码为200证明成功返回数据,再进行进一步的处理,否则直接忽略。我们可以在百度上搜索更多状态码的相关消息。

响应头包含了服务器对请求的应答信息,如Content-Type、Server、Set-Cookie等。下面简要说明一些常用的头信息。

Data:标识响应产生的时间。

Last-Modified:指定资源的最后修改时间

Content-Encoding:指定响应内容的编码

Server:包含服务器的信息,比如名称、版本号等。

Content-Type:文档类型,指定返回的数据类型是什么,如text/html代表返回HTML文档,application/x-javascript则代表返回JavaScript文件,image/jpeg则代表返回图片。最后,如果你的时间不是很紧张,并且又想快速的python提高,最重要的是不怕吃苦,建议你可以架微♥信:762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~

Set-Cookie:设置Cookies。响应头中的Set-Cookie告诉浏览器需要将此内容放在Cookies中,下次请求携带Cookies请求。

Expires:指定响应的过期时间,可以使代理服务器或浏览器将加载的内容更新到缓存中。如果再次访问时,就可以直接从缓存中加载,降低服务器负载,缩短加载时间。

响应体:最重要的当属响应体的内容了。响应的正文数据都在响应体中,比如请求网页时,它的响应体就是网页的HTML代码;请求一张图片时,它的响应体就是图片的二进制数据。我们做爬虫请求网页后,要解析的内容就是响应体,如图所示:

在浏览器开发者工具中点击Preview,就可以看到网页的源代码,也就是响应体中的内容,它是我们解析的目标。在做爬虫时,我们主要通过响应体得到网页的源代码、JSON数据等,然后从中做相应内容的提取。我们在了解了HTTP基本原理、大概了解了访问网页时背后的请求和响应过程,这对于我们后面分析网页请求时非常重要。

你可能感兴趣的:(python,爬虫,程序员,爬虫,http,python)