昨天刚买的崔大大的《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. 升级到WLS2

    WLS2相对WSL1有重大改变,其中最重要的是subsystem linux可以说是真正意义上的linux发行版了,当然也提升了i/o性能. 1. 升级windows WSL 2 is only av ...

  2. OpenStack Train版-14.安装块存储服务cinder(存储节点)

    安装cindoer块存储服务节点(存储节点192.168.0.40)使用默认的LVM卷方法,之后改为ceph存储 安装LVM软件包 [root@cinder01 ~]# yum install lvm ...

  3. 编译安装MySQL 5.5.33

    环境要求: 主机名 IP地址 需要软件及版本 系统版本 mysql.mfyxw.com 192.168.80.135 Mysql5.5.33 5.5.33 1.设定主机名 hostnamectl se ...

  4. 4.安装fluentd用于收集集群内部应用日志

    作者 微信:tangy8080 电子邮箱:914661180@qq.com 更新时间:2019-06-13 11:02:14 星期四 欢迎您订阅和分享我的订阅号,订阅号内会不定期分享一些我自己学习过程 ...

  5. Ubuntu16安装Caffe+Python3缺少libboost

    如果在/usr/lib/x86_64-linux-gnu中找到libboost_python-py3.5.so, 则 sudo ln -s libboost_python-py3.5.so libbo ...

  6. HBuilderX All In One

    HBuilderX All In One uni-app https://uniapp.dcloud.io/quickstart-hx 目录结构 一个uni-app工程,默认包含如下目录及文件: $ ...

  7. ossutilmac64

    ossutilmac64 ossutil是以命令行方式管理OSS数据的工具,提供方便.简洁.丰富的存储空间(Bucket)和文件(Object)管理命令,支持Windows.Linux. Mac平台. ...

  8. 十三香 & 香料

    十三香 & 香料 十三香原料组成不完全一致, 但有一些香料却是大家都会采用的: 草蔻.砂仁.肉豆蔻.肉桂.丁香. 花椒.大料.小茴香.木香.白芷. 山萘.良姜和姜 王守义十三香 http:// ...

  9. iPad Pro 涂鸦绘画实用技巧

    iPad Pro 涂鸦绘画实用技巧 绘画,涂鸦,简笔画 pre-requirement iPad Pro Apple Pencil 实用技巧 zoom in, zoom out 应用矢量的特性,灵活缩 ...

  10. axios upload excel file

    axios upload excel file https://github.com/axios/axios/issues/1660 https://stackoverflow.com/questio ...