Python爬虫(二)Request请求与响应

2019-06-06  本文已影响0人  咸甜怪

HTTP和HTTPS

HTTP是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
由于HTTP协议传输的数据都是明文未加密的,虽然效率高,但是使用传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。
HTTPS协议是由HTTP+SSL(安全套接字层)构建的可进行加密传输、身份认证的网络协议,要比HTTP协议安全。

HTTP协议请求

在这部分中,以Chrome中的百度为例,讲述浏览器请求中对Python爬虫比较重要的几个元素。

url

右击界面,点击“检查”,再讲页签切换到NetWork下,点击我们的请求,可以在右侧方框内看到我们的Request URL。URL = 请求的协议(http/https)+网站的域名(www.baidu.com)+资源的路径+参数。

Chrome检查界面.png 很多同学会觉得疑惑,为什么我们刚刚只是请求了一个域名,但是左侧的请求框里,却出现了很多请求。这是因为我们请求的时候不光请求了URL地址的数据,还请求了图片、JS、CSS等,渲染之后就是Element页签下的内容,也就是页面上我们看到的内容。
由此可见,Element = 当前URL对应的响应+JS+CSS+图片。然而,我们的爬虫程序只会请求到当前地址的响应,是不会发送 JS、CSS以及图片的请求,所以爬虫需要以当前URL地址对应的响应为准提取数据。(即以NetWork下的Response为准,不以Element为准)
Request Headers(请求头)
查看NetWork下的Request Headers,点击view source,显示如下: Request Headers.png
Request Body(请求体)

在这个例子中,你会好奇为什么只有请求头,而没有请求体。这是因为GET请求将参数数据放在了URL中,而POST请求参数是放在请求Body里的。
关于GET请求和POST请求的区别,这里简单的总结一下:

HTTP响应

响应状态

有多种响应状态,

响应头和响应体

HTTP响应分为响应头和响应体。在响应头中,我们需要关注Set-Cookie,对方服务器通过该子段设置Cookie到本地上;在响应体中,我们要爬的应该是URL地址对应的响应(NetWork下的Response),而不是经过JS、CSS以及图片渲染后的响应(Element)。

上一篇 下一篇

猜你喜欢

热点阅读