昨天刚买的崔大大的《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. 11.PowerShell DSC之安装PowerShell Module

    打开https://powershellgallery.com,检索你需要的目标模块,我们以安装名为"xmysql"的module为例: 自动安装 1.执行命令install-mo ...

  2. SpringBoot 中使用 Swagger2 出现 whitelabel page error 解决方法

    今天使用Swagger最新版,在pom.xml引入 <dependency> <groupId>io.springfox</groupId> <artifac ...

  3. LINUX - 最简单的CS通信实例

    服务端[编译:gcc server.c -o server] #include <stdio.h> #include <sys/socket.h> #include <s ...

  4. HDU 6623 Minimal Power of Prime(思维)题解

    题意: 已知任意大于\(1\)的整数\(a = p_1^{q_1}p_2^{q_2} \cdots p_k^{q_k}\),现给出\(a \in [2,1e18]\),求\(min\{q_i\},q ...

  5. POJ3233 构造子矩阵+矩阵快速幂

    题意:给你矩阵A,求S=A+A^1+A^2+...+A^n sol:直接把每一项解出来显然是不行的,也没必要. 我们可以YY一个矩阵: 其中1表示单位矩阵 然后容易得到: 可以看出这个分块矩阵的左下角 ...

  6. 如何使用 js 实现相似图片搜索

    如何使用 js 实现相似图片搜索 以图搜图 https://www.google.com/imghp?hl=en https://www.google.com/imghp?hl=zh https:// ...

  7. CDN 工作原理剖析

    CDN 工作原理剖析 CDN / Content Delivery Network / 内容分发网络 https://www.cloudflare.com/zh-cn/learning/cdn/wha ...

  8. chroot vs docker

    chroot vs docker chroot Linux A chroot on Unix operating systems is an operation that changes the ap ...

  9. webIM & IM

    webIM & IM sdk 埋点 U-App AI https://developer.umeng.com/docs/67953/detail/68131 https://account.u ...

  10. React Hooks & Context API

    React Hooks & Context API responsive website https://reactjs.org/docs/hooks-reference.html https ...