Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-查询/SQL语句

精通MS-ACCESS SQL之基础篇(21)

时 间:2017-12-14 09:19:27
作 者:Big Young   ID:252  城市:襄阳
摘 要:    用ACCESS SQL读取HTML表格中的数据。
正 文:

第二十一节 用ACCESS SQL读取HTML表格中的数据

WebWorld Wide Web)称为万维网,它是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统,是建立在Internet上的一种网络服务,为浏览者在Internet上查找和浏览信息提供了图形化的、易于访问的直观界面,其中的文档及超级链接将Internet上的信息节点组织成一个互为关联的网状结构。随着我们的生活越来越网络化,越来越多地且越来越经常地需要从Web上抓取数据,抓取的方式有多种,这里我们主要探讨一下在ACCESS中如何用SQL来提取网页上的表格化的数据。

一、查询网页表格的SQL语法

Select fieldlists FROM htmltable IN ‘path\*.html'[htmlfmtstring];

ACCESS里,用SQL只能查询或导入HTML文档中的二维表格数据,这里有查询语句作示例,其它各项作如下说明:

项目

说明

Fieldlists

列或字段列表,要显示的列的名字。

Htmltable

html文档中的表格的标识,默认是caption标签的内容,也可以用title标签的内容或表的序号,代表html表。

path\*.html

html文档所在的路径及文档的文件名,这里相当于数据库名。

Htmlfmtstring

数据库及表的格式串,这里应是:“HTML IMPORT;HDR=yes;IMEX=1;”,代表html文档类型。

这个语法与前面的查询外部数据库是一样的,比较好理解,我们可以把含有table(表格)的html文档当成是一个数据库来操作,把html table当成是库表,查询它们就像是查询数据库中的表一样的了。

二、查询只有一个表的HTML文档

这里有一个文件名为一个表格.HTML”HTML文档,存放在“D:\SQL for ACCESS”文件夹下,如图21-1所示:

21-1:包含一个表格的HTML文档

在浏览器中打开后如图21-2

21-2HTML文档示例表格数据

用记事本打开,我们可以看到其中的HTML代码,内容如图21-3所示:

点击图片查看大图

21-3:含一个表格的HTML文档源码

我们可以将此表中的数据导入到数据库表中,或在数据库中查询它的内容,SQL语句如下:

Select *

FROM [HTML IMPORT;

      HDR=YES;

      IMEX=1;

      DATABASE=D:\SQL for ACCESS\一个表格.HTML;].[TEMP];

或:

Select *

FROM [TEMP]

IN ''

[HTML IMPORT;

 HDR=YES;

 IMEX=1;

 DATABASE=D:\SQL for ACCESS\一个表格.HTML;];

或:

Select *

FROM [TEMP]

IN 'D:\SQL for ACCESS\一个表格.HTML'

[HTML IMPORT;

 HDR=YES;

 IMEX=1;];

运行后的结果如图21-4

21-4:对HTML文档中表格查询结果

在查询中如果表具有caption属性时,表的标识首先是caption属性值;当无此caption属性,则表的标识是title属性的值。

三、查询表中没有标识符又没有标题的HTML文档

如果一个HTML文档既没有TITLE,表中也没有CAPTION,如图21-5所示的“TEST.HTML”文档:

21-5:没有表格标识的HTML文档的查询

前面说过,表格的标识首先是其CAPTION,然后才是文档的TITLE,哪这两者没有的表格该如何引用呢?

其实在ACCESS SQL数据引擎的HTML IISAM驱动中,除了支持用上面的标识来区别表外,还支持直接使用[Table]标签作为表的默认名字来访问表的,下面我们来看一个例子,这里我们以上面介绍的“Test.html”文件为例,来查询它包含的表:

Select *

FROM [Table]

IN 'D:\SQL for ACCESS\TEST.html'

[HTML IMPORT;HDR=yes;IMEX=1;];

运行后的效果如图21-6所示,完全与实际表的内容一样:

21-6:查询无明确标识的HTML

四、对包含多表的HTML文档的查询

前面我们查询的都是只包含一个表的HTML文档,在生活中,有时会遇到包含多个表的HTML WEB页,这又该如何对其中的表进行查询呢?现在我们就来解决这个问题。

先来看一下包含多个表的一个HTML文档内部的情况,在我的“D:\SQL for ACCESS”文件夹下有一个名为“多个表格的WEB.html”的文档,打开后该文档在浏览器中显示的效果如图21-7所示:

21-7:多表HTML文档示例效果

我们再来查看一下其中的HTML代码,如图21-8所示:

21-8:多表的HTML代码示例

这里每个表都有Caption属性,我们可以用它来作为表的名称,下面我们先按一个表的方式来查询一下这个文档,看会是什么结果。语句如下:

Select *

FROM 表一

IN ''

[HTML Import;

 HDR=Yes;

 DATABASE=D:\SQL for ACCESS\多表WEB.HTML;];

运行效果如图21-9:

点击图片查看大图

21-9:多表html查询示例

这里查询到的正是表一的内容,可见我们的语句是正确的,下面我们再将三个表的内容全部一次查询出来:

Select *

FROM 表一

IN ''

[HTML Import;

 HDR=Yes;

 DATABASE=D:\SQL for ACCESS\多表WEB.HTML;]

UNION

Select *

FROM 表二

IN ''

[HTML Import;

 HDR=Yes;

 DATABASE=D:\SQL for ACCESS\多表WEB.HTML;]

UNION

Select *

FROM 表三

IN ''

[HTML Import;

 HDR=Yes;

 DATABASE=D:\SQL for ACCESS\多表WEB.HTML;];

查询效果如图21-10所示:

点击图片查看大图

21-10:查询包含多个表的HTML文档

有时候,HTML文档中的多个表格并没有指定CAPTION属性,我们在查询时该如何标识每个表呢?这时我们可以用一个通用的名字来“TABLE”求标识,它默认访问第一个表格,也可以用“TABLE1”“TABLE2”“TABLE3”等来标识第一、第二、第三个表格,更多的可以依此类推。

需要说明的是,表格在HTML文档中运用非常的广泛且很复杂,除了用于显示表格类数据外,主要的是用于在WEB中定位各种元素,会出现表格的嵌套,跨行或跨列合并单元格,有时可以没有某些单元格,总之并不一定都是规范的二维表格式的,对于这些不规范的表格,SQL是无法正常查询的,这一点我们使用的时候要充分注意。



Access软件网QQ交流群 (群号:54525238)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助