Python网络爬虫(二)——http/https 协议

自上篇爬虫文章写完之后,好长时间都没有再写爬虫相关的了,这次重新回顾了一下爬虫的相关内容,一并记在这里。

有的东西之前虽然已经写过了,但是再废话一遍。

http/https 协议

  • HTTP(Hypertext Transfer Protocol,超文本传输协议):是一种发布和接受 HTML 网页的方法,服务器端口号为 80 端口
  • HTTPS(Hypertext Transfer Protocol over SecureSocket Layer,超文本传输安全协议):相比较于 HTTP 来说,HTTPS 多了一个 SSL,这个 SSL 就是 SecureSocket Layer 的意思,也就是说 HTTPS 是 HTTP 的加密版本。服务器端口号为 443 端口

URL

URL(Uniform Resource Locator,统一资源定位符):简单的说,就是我们平常在浏览器中输入的网址,该网址能够定位到该资源在网络上的唯一地址。一般来说一个 URL 主要由以下几部分组成:

scheme://host:port/path/?query-string=xxx#anchor

上边的 URL 中,各个部分表示的内容为:

  • scheme:表示访问资源使用的协议,一般为 ftp/http/https
  • host:表示主机名,域名
  • port:表示端口号
  • path:表示查找路径
  • query-string:表示查询字符串
  • anchor:表示锚点,在前端中用于页面定位

以下边的网站为例:

https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=2&tn=baiduhome_pg&wd=http&rsv_spt=1
  • scheme:https
  • host:www.baidu.com
  • path:/s
  • query-string:ie=utf-8&f=8&rsv_bp=1&rsv_idx=2&tn=baiduhome_pg&wd=http&rsv_spt=1

可以看出在上边的 URL 中:

  • 没有显式的显示端口号和锚点
  • 只存在一个 ?
  • 查询字符串之间使用 & 分隔连接
  • URL 被输入到浏览器中时,浏览器会对之进行编码,URL 中如果存在非 ascii 字符,浏览器会将该字符编码为百分号+十六进制码值

HTTP request

  • 在浏览器中输入URL
  • 浏览器会向 HTTP 服务器发送 HTTP request,请求一般为 get/post
  • 服务器将 response 文件返回浏览器
  • 浏览器分析 response 文件,如果其中引用到了其它文件,如 image,css,js,浏览器会再次 request 对应的 image,css,js
  • 当所有的文件都得到 response,浏览器会显示 HTML(有时浏览器也不一定非要等到文件完全加载之后再显示 HTML)

HTTP 请求方法

根据 HTTP 标准,HTTP 请求可以使用多种请求方法。

  • HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD方法
  • HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法

各项请求的作用为:

请求方法 描述
GET 请求指定的页面信息,并返回实体主体
HEAD 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头
POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改
PUT 从客户端向服务器传送的数据取代指定的文档的内容
DELETE 请求服务器删除指定的页面
CONNECT HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器
OPTIONS 允许客户端查看服务器的性能
TRACE 回显服务器收到的请求,主要用于测试或诊断
PATCH 是对 PUT 方法的补充,用来对已知资源进行局部更新

但在爬虫中,常用的 HTTP 请求方法主要为 get/post。

Request Headers

在发送 HTTP 请求时,数据一般分为三部分:

  • 把数据放在 URL
  • 把数据放在 body 中(在 post 请求中)
  • 把数据放在 header 中

而一些常见的请求头参数为:

  • User-Agent:浏览器名称。该参数表明了浏览器的类型,而在爬取网页时,如果不设置此参数,可能会被识别出来,因此通常情况下需要设置该参数,对爬虫进行伪装
  • Referer:表明当前的页面是从哪个 URL 跳转过来的,对于某些网站来说,如果不设置此参数,可能会拒绝响应
  • Cookie:表明网络应用用来存储的会话数据和其他信息,如登陆信息

常见的响应状态码

状态码 描述
200 请求正常,服务器正常返回数据
301 永久重定向
302 临时重定向
400 请求的 URL 在服务器找不到,请求 URL 错误
403 服务器拒绝访问,没有权限
500 服务器内部错误
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章