昨天刚买的崔大大的《Python3网络爬虫开发实战》,今天就到了,开心的读完了爬虫基础这一章,现记录下自己的浅薄理解,如有见解不到位之处,望指出。

1.HTTP的基本原理

  ①我们经常会在浏览器输入www.baidu.com这一网址,这一网址到底是什么呢?其实这就是URL,即(Universal Resource Locator)统一资源定位符。URL明确了百度返回给我们的页面所在的位置。其实URL是另一种叫做URI的子集,URI(Universal Resource Identifier)翻译为统一资源标志符,它指明了有这样一个资源。

  ②什么是超文本?我们知道HTTP的名称为超文本传输协议,到底什么是超文本呢?其实超文本简单来说就是网页的源代码HTML,用一系列标签构成的文本。

  ③HTTP协议和HTTPS,借用崔大书上对于HTTP协议的理解,HTTP协议是用于从网络上传输超文本数据到本地浏览器的协议,它能够保证高效而准确的传送超文本文档。

而HTTPS英文全称为Hyper Text Transfer over Secure Socket Layer,也就是在应用层和传输层中间加了一层安全套接字层(SSL),该安全套接字层为数据的安全传输提供了保障。SSL层通过非对称加密算法先协商出秘钥,在通过对称加密算法对传输的数据使用秘钥加解密,以此来形成数据的加密,具体的加密可以参考这篇文章:https://blog.csdn.net/zhangmiaoping23/article/details/50378855

  ④HTTP的请求过程,当我们在浏览器上输入一个www.baidu.com,回车之后我们便会在浏览器中看到页面,这其中具体发生了什么过程呢?

    1)浏览器向该域名所在DNS服务器发送一个请求,DNS服务器返回给浏览器www.baidu.com所在的服务器的ip地址。

    2)浏览器向www.baidu.com所在服务器的ip地址进行tcp的三次握手。

    3)成功建立连接之后,发送HTTP请求报文。

    4)百度所在服务器接受到请求之后会返回给用户相应的响应。

    5)浏览器接受到响应之后会对响应进行处理个解析,将其显示出来,同时如果没有数据需要传送并且使用的是短连接的话,则进行4次挥手过程断开连接。

  ⑤HTTP的请求报包含四部分的内容,请求的方式(GET/POST),请求的路径,请求头部信息以及请求体。

    1)请求的方式:

      GET和POST请求的区别:GET请求时请求的参数会包含在URL中一起传送给后端,参数可以在URL中看见,而POST请求会将信息放在请求体中发送给后端,POST请求的最大好处是请求的内容是不可见的,试想一下,如果在登录的时候使用GET请求,那么密码将毫无保留的显示在浏览器的URL中。

      其它常见的请求方式:HEAD请求:类似于GET请求,只返回响应的头部信息。

                DELETE请求:请求服务器删除指定的页面。

                CONNECT请求(好像没见过,haha):以服务器做为跳板,让服务器代替客户端访问其它页面。

    2)请求头部信息:请求的头部包含很多重要的字段,我们在使用爬虫的使用需要根据具体的网页来构造请求头。

      ACCEPT:用于指定客户端可以接受哪些类型的信息。

      HOST:用于指定请求的主机IP和端口号。

      COOKIE(提醒自己很重要):网站为了辨别用户进行会话跟踪而存储在用户本地的数据。它的主要功能就是维持会话,我们经常在访问一个很久没有访问过的网站时会提示Cookie已失效,需要重新登录,其实这就是Cookie在捣鬼,Cookie在爬取那些需要登录才能获取数据的网站时显得格外重要。

      User-Agent(also important):我们可能在刚开始写爬虫时没有任何请求头部信息,这时候服务器收到请求检查请求头部信息中的User-Agent可能会想,这个小伙子一看就是个新手,连UA都不构造就给我发请求,当我真的是傻子嘛!直接给你来一个拒绝服务。所以说,以防万一,还是构造一下User-Agent吧。

      Content-Type:通常也叫互联网媒体类型(MIME),用来表示客户端请求的具体类型信息,比如,请求的是html,就需要Content-Type设置为text/html,请求的是json数据,则把Content-Type改成application/json。注意在登录的时候需要设置Content-Type为application/x-www-form-urlencoded,才会以表单的形式提交。

    3)请求体:一般请求体在使用POST方式时会将数据放在请求体中,而GET请求里请求体为空。

  ⑥响应

    1)常见的响应状态码:

      200:请求成功

      301:请求的网页已经永久移动到新的位置

      302:请求的网页暂时跳转到其他页面

      403:Forbidden,服务器拒绝此请求

      404:Not Found,服务器找不到请求的网页

      405:Bad Method,服务器禁止这种请求方式

      500:服务器内部错误

    2)响应头部信息,这里只列了几个常见的。

      Content-Type:指定返回的数据类型是什么。

      Set-Cookie:设置Cookie,告诉浏览器需要将此内容放在Cookie中,下次请求给带上。

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

    3)响应体:通常是服务器返回给我们的数据,如网页的源代码,json数据等等,如果想要知道到底是什么,可以通过F12调出开发者工具并使用Network工具来查看。

这一篇HTTP基本原理就写到这里吧,下一篇网页基础和爬虫基本原理。先不说了,我要学习。

Python爬虫学习一------HTTP的基本原理的更多相关文章

  1. python爬虫学习(1) —— 从urllib说起

    0. 前言 如果你从来没有接触过爬虫,刚开始的时候可能会有些许吃力 因为我不会从头到尾把所有知识点都说一遍,很多文章主要是记录我自己写的一些爬虫 所以建议先学习一下cuiqingcai大神的 Pyth ...

  2. python爬虫学习 —— 总目录

    开篇 作为一个C党,接触python之后学习了爬虫. 和AC算法题的快感类似,从网络上爬取各种数据也很有意思. 准备写一系列文章,整理一下学习历程,也给后来者提供一点便利. 我是目录 听说你叫爬虫 - ...

  3. Python爬虫学习:三、爬虫的基本操作流程

    本文是博主原创随笔,转载时请注明出处Maple2cat|Python爬虫学习:三.爬虫的基本操作与流程 一般我们使用Python爬虫都是希望实现一套完整的功能,如下: 1.爬虫目标数据.信息: 2.将 ...

  4. Python爬虫学习:四、headers和data的获取

    之前在学习爬虫时,偶尔会遇到一些问题是有些网站需要登录后才能爬取内容,有的网站会识别是否是由浏览器发出的请求. 一.headers的获取 就以博客园的首页为例:http://www.cnblogs.c ...

  5. Python爬虫学习:二、爬虫的初步尝试

    我使用的编辑器是IDLE,版本为Python2.7.11,Windows平台. 本文是博主原创随笔,转载时请注明出处Maple2cat|Python爬虫学习:二.爬虫的初步尝试 1.尝试抓取指定网页 ...

  6. 《Python爬虫学习系列教程》学习笔记

    http://cuiqingcai.com/1052.html 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把一些学习的笔记总结下来,还记录了一些自己 ...

  7. python爬虫学习视频资料免费送,用起来非常666

    当我们浏览网页的时候,经常会看到像下面这些好看的图片,你是否想把这些图片保存下载下来. 我们最常规的做法就是通过鼠标右键,选择另存为.但有些图片点击鼠标右键的时候并没有另存为选项,或者你可以通过截图工 ...

  8. python爬虫学习笔记(一)——环境配置(windows系统)

    在进行python爬虫学习前,需要进行如下准备工作: python3+pip官方配置 1.Anaconda(推荐,包括python和相关库)   [推荐地址:清华镜像] https://mirrors ...

  9. [转]《Python爬虫学习系列教程》

    <Python爬虫学习系列教程>学习笔记 http://cuiqingcai.com/1052.html 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多. ...

随机推荐

  1. WSL1中安装Docker

    # step 0: clear# sudo apt-get remove docker docker-engine docker-ce docker.io# step 1: 安装必要的一些系统工具su ...

  2. 【ybt金牌导航1-2-5】【luogu P3287】优美玉米 / 方伯伯的玉米田

    优美玉米 / 方伯伯的玉米田 题目链接:ybt金牌导航1-2-5 / luogu P3287 题目大意 有一个数组,你可以每次给一个区间里面的值加一,要你使得最后剩下的最长单调不下降子序列最长. 思路 ...

  3. Python+Appium实现自动抢微信红包

    前言 过年的时候总是少不了红包,不知从何时开始微信红包横空出世,对于网速和手速慢的人只能在一旁观望,做为python的学习者就是要运用编程解决生活和工作上的事情. 于是我用python解决我们的手速问 ...

  4. Spring Boot @Enable*注解源码解析及自定义@Enable*

      Spring Boot 一个重要的特点就是自动配置,约定大于配置,几乎所有组件使用其本身约定好的默认配置就可以使用,大大减轻配置的麻烦.其实现自动配置一个方式就是使用@Enable*注解,见其名知 ...

  5. 手摸手带你学移动端WEB开发

    HTML常用标签总结 手摸手带你学CSS HTML5与CSS3知识点总结 手摸手带你学移动端WEB开发 好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/Ro ...

  6. Xtrabackup 物理备份

    目录 Xtrabackup 安装 Xtrabackup 备份介绍 Xtrabackup全量备份 准备备份目录 全量备份 查看全量备份内容 Xtrabackup 全量备份恢复数据 删除所有数据库 停止数 ...

  7. codeforces 5C

    C. Longest Regular Bracket Sequence time limit per test 2 seconds memory limit per test 256 megabyte ...

  8. webpack 5 new features All In One

    webpack 5 new features All In One Webpack 5 release (2020-10-10) https://webpack.js.org/blog/2020-10 ...

  9. C#如何防止程序多次运行的技巧(精典)

    一.引言最近发现很多人在论坛中问到如何防止程序被多次运行的问题的,所以这里就记录下来,希望给遇到同样问题的朋友有所参考的,同时也是对自己的一个积累.在介绍具体实现代码之前,我们必须明确解决这个问题的思 ...

  10. 你真的懂 MP4 格式吗?

    MP4 文件格式又被称为 MPEG-4 Part 14,出自 MPEG-4 标准第 14 部分 .它是一种多媒体格式容器,广泛用于包装视频和音频数据流.海报.字幕和元数据等.(顺便一提,目前流行的视频 ...