【爬虫】第一章-Web基础知识

随笔1个月前发布 包包
2 0 0

目录一、HTML标签分类空标签/单标签闭合标签/双标签块级元素内联元素(行内元素)二、几种主要网页编码Unicode(统一码、万国码、单一码)UTF-8GB2312GBK如何让浏览器正确识别网页编码三、HTTP和HTTPS协议HTTP协议HTTPS协议浏览器中发送http请求的过程:请求方法

一、HTML#

标签分类#

空标签/单标签#

1) <meta />元信息
2) <img />图片标签
3) <br />换行标签
4) <hr />水平线
5) <link />引入标签
6) <base />base标签

闭合标签/双标签#

1) <html>页面标签</html>
2) <body>可视标签</body>
3) <head>头部标签</head>
4)<title>页面标题</title>
5) <div>盒子标签</div>
6) <p>段落标签</p>
7) <h1></h1>标题标签<h6></h6>
8) <span>空元素</sapn>
9) <em></em>斜体字体<i></i>
10) <strong></strong>加粗字体<b></b>
11) <ul>
	<li>无序列表</li>
	</ul>
12) <ol>
	<li>有序列表</li>
	</ol>
13)<dl>
       <dt>儿子</dt>
       <dd><女儿/dd>
    </dl>
14)<a href=””>超链接</a>
15)<iframe>内联框架</iframe>

块级元素#

块级元素是指本身属性为display:block;的元素,通常用于进行大布局(大结构)的搭建。

默认情况下独占一行,宽度为父级的100%;支持设置宽高;支持上下左右的margin、padding值。

常用的块级元素有:
div 常用块级容器,也是css layout的主要标签

h1	   大标题
h2	   副标题
h3	   三级标题
h4	   四级标题
h5	   五级标题
h6	   六级标题
hr	           水平分隔线
menu      菜单列表
ol	           有序列表
ul	           无序列表
li	           列表项
dl	           定义列表
dt	           定义术语
dd	   定义描述
table       表格
p	           段落
form       交互表单

内联元素(行内元素)#

内联元素是指本身属性为display:inline;的元素,常于进行文字、小图标(小结构)的搭建。

与其他元素并列在一行;不支持设置宽高,宽度随内容撑开;支持左右方向的margin、padding。

 常用的内联元素有:
span	  常用内联容器,定义文本内区块
a	          锚点
b	          加粗
strong	  加粗强调
i	          斜体
em	  斜体强调
s	          中划线(不推荐使用)
strike	  中划线
del	  文档中已被删除的文本
br	          强制换行
u	          下划线
textarea 多行文本输入框
input      输入框
select	   下拉列表
label	   input 元素定义标注(标记)
img	   引入图片
sub	   下标
sup	   上标
big	   大字体文本
small	   小字体文本

二、几种主要网页编码#

Unicode(统一码、万国码、单一码)#

  是一种在计算机上使用的字符编码,可以容纳世界上所有文字和符号的字符编码方案,用数字0-0x10FFFF来映射这些字符,最多可以容纳1114112个字符。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。只有一个低字节的Uncode字符其实就是Latin1字符,所以Unicode字符集兼容ASCII字符。Unicode又分为:UCS-2(用两个字节编码)和UCS-4(用四个字节编码)。UCS即Universal Character Set。若规定所有的字符都使用固定的最大字节数表示,则会造成空间浪费,而且存在传输问题(Unicode用至少两个字节的整数来表示一个字符,在大端机和小端机上两个字节的顺序正好是相反的,如下图所示),因此在实际的网页编码中常使用utf-8、utf-16等变长编码方式。
【爬虫】第一章-Web基础知识

UTF-8#

  Unicode TransformationFormat-8bit,允许含BOM,但通常不含BOM。是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24为(三个字节)来编码。UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8编码的文字可以在各国支持UTF8字符集的浏览器上显示。如果是UTF8编码,则在外国人的英文IE上也能显示中文,他们无需下载IE的中文语言支持包。

GB2312#

  中国国家标准总局1980年发布《信息交换用汉字编码字符集》,1981年5月1日开始实施,标准号是GB2312—1980(GB就是拼音guobiao的简称)。该标准适用于汉字处理、汉字通信等系统之间的信息交换,通行于中国大陆、新加坡等地。中国大陆几乎所有的中文系统和国际化的软件都支持GB2312。GB2312采用双字节编码,其中包含汉字6763个和非汉字图形字符682个。所有字符集分成94个区,每区有94个位。每个区位上只有一个字符,因此可用所在的区和位来对汉字进行编码,称为区位码。把十六进制的区位码加上0x2020,就得到国标码。国标码加上0x8080,就得到常用的计算机机内码(即计算机内存储的表示字符的整数)。所以区位码加上0xA0A0就得到了计算机内码。譬如、汉字“啊”是GB2312字符集中的第一个汉字,它的区位码为0x1001,如下图所示,0x1001加上0xA0A0就是0xB0A1,这就是“啊”的计算机内码。
【爬虫】第一章-Web基础知识

GBK#

  GBK是国家标准GB2312基础上扩容后兼容GB2312的标准。GBK的文字编码是用双字节来表示的,即不论中、英文字符均使用双字节来表示,为了区分中文,将其最高位都设定成1。GBK包含全部中文字符,是国家编码,通用性比UTF8差,不过UTF8占用的数据库比GBK大(UTF8表示中文需要比GBK/BIG5版本多占用50%的存储空间)。因此,对于中文较多的网站,适宜用GBK编码节省空间,而对于英文较多的网站,适宜用UTF-8节省空间。

  Python3中的字符串默认编码为unicode,因此GBK、GB2312等与UTF8之间需通过unicode编码进行相互转换:GBK、GB2312——Unicode——UTF8;UTF8——Unicode——GBK、GB2312,即先解码为unicode,再编码为目标码。可以使用Windows记事本的“另存为”,可以在GBK、Unicode、Unicode big endian和UTF-8这几种编码方式间相互转换。在程序中可分别使用字符串的encode和decode方法进行编码和解码。使用编码名称作为这两个方法的参数时不区分大小写,如gbk和GBK都可以。此外,utf8也可写成utf-8。

如何让浏览器正确识别网页编码#

  一般在网页中都会有类似如下的标签设置来指定编码:,指示此网页的字符集编码是GB2312(或者UTF-8、GBK等)。网页编码也可能直接作为meta标签的charset属性值,如。
  页面有时候指定了编码为什么有时会出现乱码?这可能是页面申明编码与文件本身编码不一致,更多时候是以错误编码打开页面然后保存导致的,或者是用某些FTP软件直接在线修改文件,比如CuteFTP,由于软件编码配置错误而导致转换错了编码。这时候使用window的记事本打开,用“另存为”保存为对应的编码即可解决问题。
  在windows操作系统上使用IE作为浏览器时,常常会发生这样的问题:在浏览使用UTF-8编码的网页时,浏览器无法自动识别该页面所用的编码,即使网页已经声明过编码格式:,由此造成某些含有中文UTF-8编码的页面产生空白输出。如果使用的是Firefox、Sarafi的浏览器这不会造成这个问题,这是由于IE解析网页编码时以HTML源码中的设置优先,而后才是HTTP header内的讯息,而mozilla系列的浏览器则刚刚相反。
  由于UTF-8为3个字节表示一个汉字,而普通的GB2312或BIG5是两个字节。页面输出时,由于上述原因,使浏览器解析、输出的内容时,如果在前有奇数个全角字符,IE把UTF-8当作两个字节解析时出现半个汉字的情况,这时该半个汉字会和的<结合成一个乱码字,导致IE无法读完部分,使整个页面为空百输出,而这个时候如果察看源文件的话,会发现实际上整个页面全部已经输出了,但浏览器不显示内容。最简单的解决办法是把<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ /> 放在<title>之前。

三、HTTP和HTTPS协议#

HTTP协议#

  HyperText Transer Portocol 超文本传输协议,用于Web浏览器和网站服务器之间传递信息,它是基于请求与响应的、无状态的应用层的协议,通常基于TCP的连接方式。
服务器端口:

80

HTTPS协议#

  是HTTS协议的加密版本,在HTTP下加入了SSL层。服务器端口:

443

浏览器中发送http请求的过程:#

1)当用户在浏览器的地址栏中输入一个URL并按回车键之后,浏览器会向HTTP服务器发送HTTP请求。

2)当我们在浏览器输入URL http://www.baidu.com 的时候,浏览器发送一个Request请求去获取 http://www.baidu.com 的html文件,服务器把Response文件对象发送回给浏览器。

3)浏览器分析Response中的 HTML,发现其中引用了很多其他文件,比如Images文件,CSS文件,JS文件。 浏览器会自动再次发送Request去获取图片,CSS文件,或者JS文件。

4)当所有的文件都下载成功后,网页会根据HTML语法结构,完整的显示出来。
【爬虫】第一章-Web基础知识

请求方法#

【爬虫】第一章-Web基础知识

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...