爬虫基础-超文本

 1.超文本,其英文名称叫作 hypertext,我们在浏览棉里看到的网页就是超文本解析而成的, 其网页源代码是一系列 HTML 代码, 里面包含了一系列标签,比如 img 显示图片, p 指定显示段落等 。 浏览器解析这些标签后,便形成了我们平常看到的网页,而网页的源代码 HTML 就可以称作超文本 。例如,我们在 Chrome 浏览器里面打开任意一个页面,如淘宝首页,右击任一地方井选择“检查”项(或者直接按快捷键 Fl2 ), 即可打开浏览器的开发者工具,这时在 Elements 选项卡即可看到当前阿页的源代码,这些源代码都是超文本,如图
爬虫基础-超文本_第1张图片

 

2.HTTP 和 HTTPS
     在淘宝的首页 https://www.taobao .com/中, URL 的开头会有 http 或 https ,这就是访问资源需要的协议类型 。 有时,我们还会看到坤、 s丘p 、 smb 开头的 URL,它们都是协议类型 。 在爬虫中,我们抓取的页面通常就是 http 或 ht耶协议的,这里首先了解一下这两个协议的含义。HTTP 的全称是 Hyper Text Transfer Protocol ,中文名 叫作超文本传输协议 。 HTTP 协议是用于从网络传输超文本数据到本地浏览器的传送协议,它能保证高效而准确地传送超文本文档 。 HTTP 由万维网协会( World Wide Web Consortium )和 Internet 工作小组 IETF ( Internet Engineering Task Force )共同合作制定的规范,目前广泛使用的是 HTTP 1.1 版本 。

HTTPS 的全称是 Hyper Text Transfer Protocol over Secure Socket Layer ,是以安全为目标的 HTTP通道,简单讲是 HTTP 的安全版, 即 HTTP 下加入 SSL 层 ,简称为 HTTPS 。

HTTPS的安全基础是SSL,因此通过它传输的内容都是经过 SSL加密的它的主要作用可以分 两种。

建立一个信息安全通道来保证数据传输的安全。

确认网站的真实性,凡是使用了 HTTPS 的网站,都可以通过点击浏览器地址栏的锁头标志来
查看网站认证之后的真实信息,也可以通过 CA 机构颁发的安全签章来查询 。

现在越来越多的网站和 App 都已经向 HTTPS 方向发展,例如:

  •  苹果公司强制所有 iOS App 在 2017 年 1 月 l 日前全部改为使用 HTTPS 加密, 否则 App 就无法在应用商店上架;
  • 谷歌从 2017 年 1 月推陆的 Chrome 56 开始,对未进行 HTTPS 加密的网址链接亮出风险提示,即在地址栏的显著位置提醒用户“此网页不安全”;
  • 腾讯微信小程序的官方需求文档要求后台使用 HTTPS 请求进行网络通信,不满足条件的域名和协议无法请求 。
  • 而某些网站虽然使用了 HTTPS 协议,但还是会被浏览器提示不安全,例如我们在 Chrome 浏览器里面打开 12306 ,链接为: https://www. l2306.cn/,这时浏览器就会提示“您的连接不是私密连接”这
  • 样的话,如图

爬虫基础-超文本_第2张图片

    这是因为 123 06 的 CA 证书是中国铁道部自行签发的,而这个证书是不被 CA 机构信任的,所以这里证书验证就不会通过而提示这样的话,但是实际上它的数据传输依然是经过 SSL 加密的 。 如果要爬取这样的站点,就需要设置忽略证书的选项,否则会提示 SSL 链接错误 。

3.HTTP请求过程
      我们在浏览器中输入一个 URL ,回车之后便会在浏览器中观察到页面内容 。 实际上,这个过程是浏览器向网站所在的服务器发送了一个请求,网站服务器接收到这个请求后进行处理和解析,然后返回对应的响应,接着传回给浏览器。 响应里包含了页面的源代码等内容,浏览器再对其进行解析,便将网页呈现了出来,模型如图
爬虫基础-超文本_第3张图片

 

此处客户端即代表我们自己的 PC 或手机浏览器,服务器即要访问的网站所在的服务器。

为了更直观地说明这个过程,这里用 Chrome 浏览器的开发者模式下的 N巳twork 监听组件来做下演示,它可以显示访问当前请求网页时发生的所有网络请求和响应 。打开 Chrome 浏览器,右击并选择“检查”项,即可打开浏览器的开发者工具 。 这里访问百度http ://www. b a idu. co m/ ,输入该 U RL 后回车,观察这个过程中发生了怎样的网络请求 。 可以看到,在Netwo rk 页面下方出现了一个个的条目,其中一个条目就代表一次发送请求和接收响应的过程,如图
爬虫基础-超文本_第4张图片

我们先观察第一个网络请求,即 www.baidu .com。
其中各列的含义如下。

  • 第一列 Name :请求的名称,一般会将 URL 的最后一部分内容当作名称。
  • 第二要1] Status :响应的状态码,这里显示为 200 , 代表响应是正常的 。 通过状态码,我们可以判断发送了请求之后是杏得到了正常的响应 。
  • 第三列 Type : 请求的文梢类型 。 这里为 document,代表我们这次请求的是一个 HTML 文档,内容就是一些 HTML 代码 。
  • 第四列 Initiator : 请求源。 用来标记请求是由哪个对象或进程发起的 。
  • 第五列 Size : 从服务器下载的文件和请求的资源大小。 如果是从缓存中取得的资源,则该列会显示台om cache。
  • 第六列 Time : 发起请求到获取响应所用的总时间 。
  • 第七列Waterfall:网络请求的可视化瀑布流。点击这个条目,即可看到更详细的信息,如图

爬虫基础-超文本_第5张图片

 

 首先是 General 部分, Request URL 为请求的 URL, Request Method 为请求的方法, Status Code为响应状态码, Remote Address 为远程服务器的地址和端口, Referrer Policy 为 Referrer 判别策略。再继续往下,可以看到,有 Response Headers 和 Request Headers ,这分别代表响应头和请求头 。请求头里带有许多请求信息,例如浏览器标识、 Cookies 、 Host 等信息,这是请求的一部分,服务器会根据请求头内的信息判断请求是否合法,进而作出对应的响应 。 图中看到的 Response Headers 就是响应的一部分,例如其中包含了服务器的类型、文档类型、日期等信息,浏览器接受到响应后,会解析响应内容,进而呈现网页内容 。
 

你可能感兴趣的:(Python,编程)