目录
一、网页开发技术
1.HTML
2.CSS
3.JavaScript
二、网页的结构
三、 网页的分类
1.静态网页
2.动态网页
1.jQuery
2.AJAX
3.DHTML
2.3.4 网页数据的格式
1.XML
2.JSON
一、网页开发技术
网页可以看作承载各种网站应用和信息的容器,它包含文字、图像、超链接、音频、视
频以及动画等内容。通过查看网页的源代码可知,网页实际上是一个 HTML 文件。该文件包
含了一些特殊符号和文本,可通过特殊符号和文本对文字、图片、表格、声音等进行描述。
常用的网页开发技术包括 HTML 、 CSS 和 JavaScript 。其中, HTML 用于描述网页中的
内容,如文本、图片、声音等; CSS 用于设定网页的元素样式、页面布局; JavaScript 用于
向网页添加交互行为,如验证用户登录信息。下面分别对 HTML 、 JavaScript 和 CSS 进行
介绍。
1.HTML
HTML 的英文全称为 Hyper Text Markup Language ,即超文本标记语言,是一种用于创建
网页的标准标记语言。一个 HTML 文档由一系列的 HTML 元素组成, HTML 元素的组成如
图 2-5 所示。
在图 2-5 中,开始标签、内容、结束标签组合在一起便构成了一个完整的 HTML 元素,
关于各部分的说明如下。
- 开始标签:标识元素的起始位置,由尖角括号包裹着元素名称,如图 2-5 中的<h1>。
- 结束标签:标识元素的结束位置,与开始标签相似,只不过在元素名称之前多了一个
“ / ”,如图 2-5 中的 </h1> 。
- 内容:表示元素的内容,位于开始标签和结束标签之间,如图 2-5 中的“今天天气
真好!”。
HTML 中提供了许多标签,用于描述网页中的内容, HTML 的常用标签及说明如表 2-4
所示。
2.CSS
CSS( Cascading Style Sheets )通常称为 CSS 样式或层叠样式表,主要用于设置 HTML 页
面中的文本内容(字体、大小、对齐方式等)、图片的外形(宽、高、边框样式等)以及版面
的布局等外观显示样式。 CSS 以 HTML 为基础,它不仅可以提供丰富的控制字体、颜色、背
景及整体排版的功能,而且可以针对不同的浏览器设置不同的样式。例如,通过 CSS 控制登 录页面中文字的大小、字体和背景颜色,如图 2-6 所示。
3.JavaScript
JavaScript 是一门独立的网页脚本编程语言,它可以做很多事情,但主流的应用是在 Web
上创建网页特效或验证信息。例如,使用 JavaScript 脚本语言对用户输入的内容进行验证。如
果用户在用户名文本框和密码文本框中未输入任何信息,那么单击“登录”按钮后将弹出相
应的提示信息,如图 2-7 所示。
二、网页的结构
如果想要了解一个网页的结构,我们可以直接在浏览器打开的快捷菜单中选择“检查”
命令。例如,使用 Chrome 浏览器打开百度首页,通过“检查”命令查看百度首页的网页结构
如图 2-8 所示。
从图 2-8 中可以看出,百度首页的源代码包含了众多 HTML 元素。这些 HTML 元素是互
相嵌套的,具有明显的层级关系,例如, <head> 元素与 <body> 元素属于同级关系, <body> 元
素与 <script> 元素存在父子关系。
HTML 页面中使用文档对象模型( Document Object Model , DOM )来描述 HTML 页面的
层次结构。 DOM 出现的目的是将 JavaScript 和 HTML 文档的内容联系起来,通过使用 DOM
可以在 HTML 文档中添加、移除和操作各种元素。
根据互联网联盟(World Wide Web Consortium , W3C )的 HTML DOM 标准, HTML DOM
由节点组成, HTML 文档的所有内容都是节点,整个 HTML 文档是一个文档节点,每个 HTML
元素是元素节点,每个 HTML 属性是属性节点,每个注释是注释节点。
把一个 HTML 文档中的所有节点组织在一起,就构成一棵 HTML DOM 树。这些节点之
间存在层级关系, HTML DOM 节点树如图 2-9 所示。
在图 2-9 中, HTML DOM 节点树通过父、子以及兄弟等术语描述节点之间的关系。例如,
<html> 内部嵌套了 <head> ,它们属于父子关系; <head> 和 <body> 属于相同层级的节点,它们
属于兄弟关系。根据节点之间的关系,我们可以快速定位元素的位置。
三、 网页的分类
网页可以分为静态网页、动态网页两种类型。关于这两种网页的介绍如下。
1.静态网页
静态网页包含的诸如文本、图像、Flash 动画、超链接等内容,在编写网页源代码时已经
确定。除非网页源代码被重新修改,否则这些内容不会发生变化。例如,edge浏览器首页就是一个静态网页,具体如图 2-10 所示。
静态网页具有以下几个特点。
- 静态网页的内容相对稳定,一旦上传至网站服务器,无论是否有用户访问,内容都会
一直保存在网站服务器上。
- 静态网页被访问的速度快,访问过程中无须连接数据库。
- 静态网页没有数据库的支持,内容更新与维护比较复杂。
- 静态网页的交互性较差,在功能方面有较大的限制。
值得一提的是,静态网页上展示的内容并非完全静止的,它也可以有各种视觉上的动态
效果,如 GIF 动图、 Flash 动画、滚动字幕等。
2.动态网页
相比静态网页,动态网页有数据库支撑、包含程序以及提供与用户交互的功能,如用户
登录、用户注册、信息查询等功能,根据用户传入的不同参数,网页会显示不同的数据。例
如,登录某网站后查询百度公司信息的页面是一个动态网页,如图 2-11 所示。
动态网页具有以下一些特点。
- 动态网页一般以数据库技术为基础。
- 动态网页并不是独立存在于服务器上的网页文件,只有当用户发送请求时,服务器才
会返回完整的网页。
- 采用动态网页技术的网站可以实现更多的功能,如用户注册、用户登录、在线调查、
用户管理、订单管理等。
对于网络爬虫来说,静态网页的内容都写在源代码中,比较容易抓取;动态网页的内容
不一定写在网页源代码中,可能需要用户登录后才能显示完整,这增加了抓取难度。
多学一招:动态网页上使用的技术
这里所说的动态网页是在网页中依赖 JavaScript 动态加载数据的网页,使用了 JavaScript
的网页能够在 URL 不变的情况下改变网页的内容。动态网页上使用的技术主要包括 jQuery 、
AJAX 和 DHTML ,关于这几种技术的介绍如下。
1.jQuery
jQuery 是一个快速、简洁的 JavaScript 框架,于 2006 年 1 月由 John Resig (约翰 · 瑞森)
发布。该框架的设计宗旨是“ write less, do more ”,即写更少的代码,做更多的事情。 jQuery
框架中封装了 JavaScript 常用的代码,并对一些功能进行了优化,包括 HTML 文档操作、事
件处理、动画设计等。
如果一个网站中使用了 jQuery 框架,那么我们可以在网页源代码中看到 jQuery 入口,具
体代码如下。
<script type="text/javascript"
src="https://statics.huxiu.com/w/mini/static_2015/js/jquery-1.11.1.min.js?v=201
512181512"></script>
需要注意的是, jQuery 可以动态地生成 HTML 内容,但只有在 JavaScript 代码执行之后
才会显示。
2.AJAX
AJAX(异步 JavaScript 和 XML )并不是一门新的编程语言,而是一种用于创建又快又好
和交互性强的 Web 应用程序的技术。使用了 AJAX 技术的 Web 应用程序能够快速地将增量更
新呈现在用户界面上,而不需要重载整个页面,这使得该程序能够快速地回应用户的操作。
如果用户提交表单,或者从服务器获取响应信息之后,网站的页面不需要重新刷新,那
么当前访问的网站便使用了 AJAX 技术。
3.DHTML
DHTML 是 Dynamic HTML 的简称,它其实并不是一门新的语言,而是 HTML 、 CSS 和
客户端脚本的集成。 DHTML 可以通过客户端脚本改变网页元素( HTML 、 CSS ,或者二者皆
被改变),例如,按钮每次被单击后改变其背景色。
网页是否属于 DHTML ,关键要看有没有用 JavaScript 控制 HTML 和 CSS 元素。
2.3.4 网页数据的格式
互联网包含了许多数据,这些数据一般分为非结构化数据、结构化数据两种类型。其中
非结构化数据是指数据结构不规则或不完整,没有预定义的数据模型,不方便使用数据库二
维表结构表现的数据,包括文本、图片、 HTML 等;结构化数据是方便使用二维表结构表现
的数据,这种数据严格遵循数据格式与长度规范,包括 XML 和 JSON 等。
对于网络爬虫而言,它经常需要解析 HTML 、 XML 和 JSON 类型的数据,我们在前面介
绍过 HTML ,所以在这里主要对 XML 和 JSON 进行介绍。
1.XML
XML 是 Extensible Markup Language 的缩写,它是一种类似于 HTML 的标记语言,称为
可扩展标记语言。可扩展指的是用户可以按照 XML 规则自定义标记。 XML 片段如图 2-12
所示。
在图 2-12 中, <employees> 、 <employee> 、 <firstName> 、 <lastName> 都属于 XML 元素,
每个元素由开始标记和结束标记组成,必须是成对出现的。 <employees> 元素是整个 XML 片
段的根元素,它包含了 3 个 <employee> 子元素,每个 <employee> 元素又包含了 <firstName> 和
<lastName> 这 2 个子元素。在 XML 文档中,通过元素的嵌套关系可以很准确地描述具有树状
层次结构的复杂信息。
2.JSON
JSON( JavaScript Object Notation , JavaScript 对象表示法)是一种轻量级的数据交换格式, 它采用完全独立于编程语言的文本格式存储和表示数据。JSON 具有简洁、清晰的层次结构, 便于人们阅读和编写,同时便于机器解析和生成,是理想的数据交换语言。JSON 片段如图 2-13 所示。
在图 2-13 中,花括号用于容纳 JSON 对象,方括号用于容纳数组。 JSON 数据写为名称 /
值对,名称与值之间以冒号进行分隔,例如, "firstName": "Bill""lastName": "Gates" 等。由图
2-13 可知,最外层的花括号中有一个 JSON 对象,对象的名称为 employees ,值为一个数组。
该数组包含多个对象,每个对象包含两个名称 / 值对。