python爬虫001
http基本原理01
uri和url
这里我们先了解一下URI和URL,URI的全称为 Uniform Resource Identifier,即统一资源标志符,URL的全称为UniversalResource Locator,即统一资源定位符。
举例来说,https://github.com/favicon.ico 是 GitHub 的网站图标链接,它是一个 URL,也是一个URI。即有这样的一个图标资源,我们用URL/URI来唯一指定了它的访问方式,这其中包括了访问协议https、访回路径(/即根目录)和资源名称 favicon.ico。通过这样一个链接,我们便可以从互联网上找到这个资源,这就是URL/URI。
URL是URI的子集,也就是说每个URL都是 URI,但不是每个URI都是URL。那么,怎样的URI不是URL呢?URI还包括一个子类叫作URN,它的全称为 Universal Resource Name,即统一资源名称。URN只命名资源而不指定如何定位资源,比如urn;isbn:0451450523指定了一本书的ISBN可以唯一标识这本书,但是没有指定到哪里定位这本书,这就是 URN。URL、URN和URI的关系。
但是在目前的互联网中,URN用得非常少,所以几乎所有的 URI都是 URL,一般的网页链接我们既可以称为 URL,也可以称为 URI,我个人习惯称为 URL。
超文本
接下来,我们再了解一个概念-超文本,其英文名称叫作 hypertext,我们在浏览器里看到的网页就是超文本解析而成的,其网页源代码是一系列 HTML代码,里面包含了一系列标签,比如 img显示图片,p 指定显示段落等。浏览器解析这些标签后,便形成了我们平常看到的网页,而网页的源代
码HTML就可以称作超文本
例如,我们在 Chrome浏览器里面打开任意一个页面,如淘宝首页,右击任一地方并选择“检查项(或者直接按快捷键 F12),即可打开浏览器的开发者工具,这时在 Elements 选项卡即可看到当前网页的源代码,这些源代码都是超文本。
HTTP和HTTPS
在淘宝的首页 https://wwwtaobaocom/中,URL的开头会有 http 或 https,这就是访问资源需要的协议类型。有时,我们还会看到 fp、sftp、smb 开头的URL,它们都是协议类型。在爬虫中,我们折取的页面通常就是 http 或 https 协议的,这里首先了解一下这两个协议的含义。
HTTP的全称是 Hyper Text Transfer Protocol,中文名叫作超文本传输协议。HTTP协议是用于从网络传输超文本数据到本地浏览器的传送协议,它能保证高效而准确地传送超文本文档。HTTP 由万维网协会( World Wide Web Consortium)和Internet 工作小组 IETF (Interet Engineering Task Force)共同合作制定的规范,目前广泛使用的是 HTTP1.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月1日前全部改为使用HTTPS加密,否则App就无法在应用商店上架;
口谷歌从2017年1月推出的Chrome56开始,对未进行HTTPS加密的网址链接亮出风险提示即在地址栏的显著位置提醒用户“此网页不安全”;
口腾讯微信小程序的官方需求文档要求后台使用HTTPS 请求进行网络通信,不满足条件的域名和协议无法请求。
而某些网站虽然使用了HTTPS 协议,但还是会被浏览器提示不安全,例如我们在 Chrome 浏览器里面打开12306,链接为:https://www.12306.cn/,这时浏览器就会提示“您的连接不是私密连接”这样的话。
这是因为 12306的CA证书是中国铁道部自行签发的,而这个证书是不被 CA机构信任的,所以这里证书验证就不会通过而提示这样的话,但是实际上它的数据传输依然是经过 SSL加密的。如果要爬取这样的站点,就需要设置忽略证书的选项,否则会提示 SSL链接错误。
- 点赞
- 收藏
- 关注作者
评论(0)