URL只是统一定义了资源在网络中的位置,但是并没有解决如何在网络中获取到URL,以及客户端与服务器端报文是如何交互的。目前在网络中常用到的客户端与服务器端获取到URL资源的协议为HTTP和HTTPS协议。

HTTP全称为The Hypertext Transfer Protocol超文本传输协议,它是一种分布式,合作式,超媒体信息系统应协作,是随着互联网一起诞生于1990年,最新版本为HTTP1.1, RFC2616,当前互联网比较常见的为HTTPS协议,它是http的协议变种,主要http协议加入了SSL层,可以成为HTTP的安全版本,主要为了解决HTTP协议中的安全问题,所有传输的内容都是经过SSL加密,但是http是基础,一般都需要先了解http协议,可以学习RFC2616协议,对http1.1协议做了规定。

RFC2616中指出, http协议是一种请求/回应协议(当然目前RFC大部分协议都是基于请求/回应机制),一般都是由客户端向服务器端发生请求协议,请求协议一般包括请求方法,URL,版本号等等信息,服务器端根据请求消息内容作出一定的回应,一般包括状态行,消息头等等内容,其官方解释如下:

消息结构

http的消息结构主要分为两个消息类型,一个是客户端请求消息,一个是服务器响应消息。

客户端发送一个HTTP请求消息主要包括:请求行(request line),请求头部(request header),空行和请求数据四个部分,一般格式为:

服务器响应消息主要分为:状态行,消息报头,空行和响应正文

可以查看W3Cschool 进行详细学习。

利用chrome查看http协议

在网络爬虫中需要经常使用浏览器来分析http协议,最后使用python来模拟浏览器的行为来自动抓取到自己所需要的信息,一般推荐使用chrome浏览器,按'F12'点击network可以抓取到打开一个URL整个协议交互过程,

为了便于分析,浏览器中一般将http 协议分为以下:General, Response Header,Request Headers,请求体以及响应体几个部分进行展示,比上述按照客户端请求消息和服务器端请求消息类型展示方便了很多,也便于分析和学习。

General

General即使通用部分,其内容部分主要如下:

其格式都是遵循Key: value形式,主要重要的信息有:

Request URL:客户端用于向服务器端发生的URL的地址即客户端需要获取到的资源

Request Method:客户端向服务器端发起请求的方法,常见的方法有GET 和POST:

Get一般请求的URL里面包括请求的参数,而POST请求的参数一般会通过表单的形式传输,一般涉及到密码等涉及到安全的信息都是通过POST传递,Get提交的数据长度最多有1024个字节,而POST没有限制。

RFC2616协议中所支持method方法如下:

Status Code:为服务器返回的请求的URL状态码,状态码后面再详细介绍,200为服务器正常。

Remote Address:远程服务器的地址和端口

Referrer Policy:为referre 判断策略

Request Headers

request hearder主要显示的是客户端向服务器端发生请求信息的中请求头部信息:

请求头中的一些关键信息:

Accept: 请把报文头域,主要是显示客户端可以接受哪些类型的信息

Accept-Encodeing:制定客户端接受的内容编码

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

Host: 用于指定请求资源的主机名,HTTP1.1版本,必须包含此内容。host格式如下:

Host = "Host" ":" host [ ":" port ] 

其端口号缺省为Http 80

Cookie:主要是为了辨别用户进行会话跟踪而存储在用户本地的数据,可以维持当前访问会话

Referer:主要是用来标识这个请求是从哪个网页发过来的,服务器可以拿到这些信息做相应处理,如来源统计,防盗链处理等。

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

Content-Type:互联网媒体类型,在HTTP协议消息头中,它用来表示具体请求中的媒体类型信息

请求体

请求体一般承载的内容是POST请求中的表单数据,如果为GET请求,则请求体则为空:

Response Headers

响应头为服务器对客户端请求的应答响应消息头:

主要字段解释:

Date:标识响应产生的时间

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

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

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

Content-Type:文档类型,指定返回的数据类型是什么,如text/html等

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

Expires:指定响应的过期时间,可以使代理服务器或浏览器将加载的内容更新到缓存中。

响应体

响应体是服务器返回给客户端的内容,所响应的数据都在响应体中,一般是HTML代码或者是图片的二进制数据等,它正是我们爬虫所需要的数据

可以在response中查看响应体代码,下面是一个淘宝首页的响应体html代码:

上述传递的只是HTML代码,至于在前端如何显示一般还要进行一定程度的渲染,以便是网页更加酷炫。一个网页主要包含三个部分HTML,CSS,JavaScript等三个部分,HTML是主题代码纯文本形式的,对版面进行排版还需要用到JavaScript和CSS.

对于做网络爬虫本质就是默认浏览器的行为,获取到HTML里面的内容 ,并解析所需要的数据

python爬虫基础扫盲之HTTP以及HTTPS相关推荐

  1. python爬虫基础扫盲之urllib.pase解析URL

    在笨方法"学习python笔记之urlopen,中提了urllib主要是提供打开网页,解析url等功能用于网络爬虫,其lib主要包含四个部分,其中urllib.parse主要是负责url的解 ...

  2. python爬虫基础扫盲之URL

    URL全称为Uniform Resurce Locator统一资源定位符,在上世纪90年代互联网刚刚发展起来时,为了解决在多机联网上场景中便于方便查找资源,于是一帮人(当然大部分是美国人)制定了一个标 ...

  3. python基础代码库-python爬虫基础教程:requests库(二)代码实例

    get请求 简单使用 import requests ''' 想要学习Python?Python学习交流群:973783996满足你的需求,资料都已经上传群文件,可以自行下载! ''' respons ...

  4. python基础知识整理-python爬虫基础知识点整理

    首先爬虫是什么? 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本. 根据我的经验,要学习Python爬虫 ...

  5. python爬虫基础(一)~爬虫概念和架构

    目录 1. 爬虫 1.1 概念 1.2 分类 2. 爬虫架构 2.1 url管理器 2.2 网页(html)下载(download)器 2.2.1 urllib下载html源码 2.2.2 reque ...

  6. python爬虫——基础知识

    python爬虫--基础知识 一.网页基础知识 二.爬虫的思路 1.HTML文档(超文本) 三.ROBOTS协议 四.浏览器发送HTTP请求的过程 1.http请求过程 2.请求 五.SSL连接错误 ...

  7. 结构化数据丨Python爬虫基础入门系列(7)

    提示:文末有福利!最新Python爬虫资料/学习指南>>戳我直达 文章目录 前言 JSON 1. json.loads() 2. json.dumps() 3. json.dump() 4 ...

  8. python爬虫基础(二)

    文章目录 python爬虫 1.异步爬虫 异步爬虫之多进程and多线程(不建议使用) 异步爬虫之线程池and进程池(适当使用) 单线程+异步协程(推荐) 补充:回调函数 补充:yield 多任务异步协 ...

  9. Python爬虫基础库(RBX)的实践_田超凡

    转载请注明原作者:田超凡 20190410 CSDN博客:https://blog.csdn.net/qq_30056341# Python爬虫基础库RBX指的是:Requests Beautiful ...

最新文章

  1. 10款最好的免费在线工具进行网站设计与开发
  2. 济南python工资一般多少钱-济南python编程课程培训哪家好
  3. Oracle学习笔记:a inner join b与from a,b where a.x=b.x的差异
  4. 2000坐标系xy坐标几位_2000国家大地坐标系转换演示及实践应用专题培训研讨班...
  5. PHP获取客户端的真实IP
  6. 20应用统计考研复试要点(part6)--统计学
  7. Bent Normal
  8. vba显示正在加载_利用VBA代码显示工作簿的路径及完全路径的方案及对工作薄的操作...
  9. 非广告,运维派送红包,参与就有!
  10. 眼看 Android 8.0 都出了,你还对 Android开发一窍不通?
  11. linux编程创建文件,快速创建linux文件
  12. sitemesh初步
  13. oracle恢复删除数据
  14. C#编写NotifyIcon
  15. 计算机物联网知识,什么是物联网,关于物联网的小知识
  16. 自然摄影指南——第一章:曝光:使用相机的测光表
  17. puzzle(0131)《迷宫》
  18. python简易电话簿系统_Python实现电话簿工具(代码分享)
  19. 特殊格式的时间读取并排序
  20. 简单使用命令行创建数据库

热门文章

  1. 网站为什么 JS 调用尽量放到网页底部?
  2. 谷歌浏览器(Chrome)遇到Flash崩溃的处理办法
  3. LINQPad工具-linq、sql、IL优化和转换
  4. 【12c】OCP 062近期新出现的考试原题-第28题
  5. python PIL.Image使用
  6. 一步一步分析vue之_data属性
  7. 盘点中兴通讯强悍的战斗力
  8. MBR与GPT的分区结构
  9. linux服务器重启init 6和reboot区别
  10. VirtualBox中虚拟Ubuntu添加新的虚拟硬盘