python爬虫从零基础到入门(二)

爬虫基础:网络请求与响应

HTTP和HTTPS

  • HTTPHyper Text Transfer Protocol超文本传输协议(的缩写)。HTTP是用来将数据(文本、图片、音频、视频等)从Web服务器传递到本地浏览器的一种传送协议,它能保证高效而准确地传送超文本文档。
  • HTTPS 是 Hyper Text Transfer Protocol over Secure Socket Layer,的缩写,是以安全为目标的HTTP 通道,简单来讲就是 HTTP 的安全版,即 在HTTP 下加入 SSL 层,简称为 HTTPS

HTTP请求过程

在这里插入图片描述

网络请求详解

HTTP请求语义(方法)

HTTP有8种请求语义(或称为方法),不同的语又拥有不同的功能,简要介绍如下,

  • GET:从服务器获取数据。
  • POST:从客户端把数据提交到服务器端,
  • PUT:从客户端把数据提交到服务端,并替换原有数据。
  • DELETE:请求服务器删除对应数据。
  • HEAD:从服务器获取资源响应报头(不常用)。
  • CONNECT:将服务器作为代理服务器,通过CONNECT请求,让代理服务器去请求目标页面(不常用)。
  • OPTIONS:允许客户端查看服务器端性能(不常用)。
  • TRACE:请求服务端回传收到的消息,用于测试(不常用)。

一般情况下,一个链接会指定HTTP的请求方式,就是指定语义。若是目标链接只支持POST方式的请求,爬虫就不能发送GET请求,否则请求会被服务器拒绝。

请求网址

请求的网址,即统一资源定位符 URL,它可以唯一确定我们想请求的资源。

请求头

请求头,用来说明服务器要使用的附加信息,比较重要的信息有 Cookie、Referer、User-Agent 等。下面简要说明一些常用的头信息。

  • Accept:请求报头域,用于指定客户端可接受哪些类型的信息。

  • Accept-Language:指定客户端可接受的语言类型。

  • Accept-Encoding:指定客户端可接受的内容编码。

  • Host:用于指定请求资源的主机 IP 和端口号,其内容为请求 URL 的原始服务器或网关的位置。从HTTP 1.1 版本开始,请求必须包含此内容。

  • Cookie:也常用复数形式 Cookies,这是网站为了辨别用户进行会话跟踪而存储在用户本地的数据。它的主要功能是维持当前访问会话。例如,我们输入用户名和密码成功登录某个网站后,服务器会用会话保存登录状态信息,后面我们每次刷新或请求该站点的其他页面时,会发现都是登录状态,这就是 Cookies的功劳。Cookies 里有信息标识了我们所对应的服务器的会话,每次浏览器在请求该站点的页面时,都会在请求头中加上 Cookies 并将其发送给服务器,服务器通过 Cookies 识别出是我们自己,并且查出当前状态是登录状态,所以返回结果就是登录之后才能看到的网页内容。

  • Referer:此内容用来标识这个请求是从哪个页面发过来的,服务器可以拿到这一信息并做相应的处理,如作来源统计、防盗链处理等。

  • User-Agent:简称 UA,它是一个特殊的字符串头,可以使服务器识别客户使用的操作系统及版本、浏觅器及版本等信息。在做爬虫时加上此信息,可以伪装为浏览器;如果不加,很可能会被识别出为爬虫。

  • Content-Type:也叫互联网媒体类型(Internet Media Type)或者 MIME 类型,在 HTTP 协议消息头中,它用来表示具体请求中的媒体类型信息。例如,text/html 代表 HTML 栺式,image/gif 代表 GIF 图片,application/json 代表 JSON 类型,更多对应关系可以查看此对照表:
    http://tool.oschina.net/commons
    因此,请求头是请求的重要组成部分,在写爬虫时,大部分情况下都需要设定请求头。

请求体

请求体一般承载的内容是 POST 请求中的表单数据,而对于GET 请求,请求体则为空。
在这里插入图片描述
在爬虫中,如果要构造 POST 请求,需要使用正确的的Content-Type,并了解各种请求库的各个参数设置时使用的是哪种 Content-Type,不然可能会导致 POST 提交后无法正常响应。

网络请求Network各列的含义

以百度为例:
在这里插入图片描述

  • 第一列 Name:请求的名称,一般会将 URL 的最后一部分内容当作名称。
  • 第二列 Status:响应的状态码,这里显示为 200,代表响应是正常的。通过状态码,我们可以判断发送了请求之后是否得到了正常的响应。
  • 第三列 Type:请求的文档类型。这里为 document,代表我们这次请求的是一个 HTML 文档,内容就是一些 HTML 代码。
  • 第四列 Initiator:请求源。用来标记请求是由哪个对象或进程发起的。
  • 第五列 Size:从服务器下载的文件和请求的资源大小。如果是从缓存中取得的资源,则该列会显示from cache。
  • 第六列 Time:发起请求到获取响应所用的总时间。
    第七列 Waterfall:网络请求的可视化瀑布流。

响应

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

响应状态码

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

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

  • Date:标识响应产生的时间。
  • Last-Modified:指定资源的最后修改时间。
  • Content-Encoding:指定响应内容的编码。
  • Server:包含服务器的信息,比如名称、版本号等。
  • Content-Type:文档类型,指定返回的数据类型是什么,如 text/html 代表返回 HTML 文档,application/x-javascript 则代表返回 JavaScript 文件,image/jpeg 则代表返回图片。
  • Set-Cookie:设置 Cookies。响应头中的 Set-Cookie 告诉浏览器需要将此内容放在 Cookies 中,下次请求携带 Cookies 请求。
  • Expires:指定响应的过期时间,可以使代理服务器或浏览器将加载的内容更新到缓存中。如果再次访问时,就可以直接从缓存中加载,降低服务器负载,缩短加载时间。

响应体

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

部分资源来源于网络,如有侵权,请联系本人予以删除!资源作为交流使用,请勿用于商用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值