精通MS-ACCESS SQL之基础篇(21)
时 间:2017-12-14 09:19:27
作 者:Big Young ID:252 城市:襄阳
摘 要: 用ACCESS SQL读取HTML表格中的数据。
正 文:
第二十一节 用ACCESS SQL读取HTML表格中的数据
Web(World 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-2:HTML文档示例表格数据
用记事本打开,我们可以看到其中的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源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- Access对子窗体数据进行批...(10.30)
- 最精简的组合框行来源数据快速输...(10.25)
- Access仿平台的多值选择器...(10.24)
- 【Access日期区间段查询】...(10.22)
- 【Access源码示例】VBA...(10.12)
- Access累乘示例,Acce...(10.09)
- 数值8.88,把整数8去掉,转...(10.08)
- 【Access自定义函数】一个...(09.30)
- 【Access选项卡示例】Ac...(09.09)
学习心得
最新文章
- Access快速开发平台--对上传...(11.22)
- Access快速开发平台企业版--...(11.18)
- 不会用多表联合查询,多表查询没结果...(11.16)
- 【案例分享】主键字段值含有不间断空...(11.16)
- Access快速开发平台--后台D...(11.14)
- 微软Access邀测新Monaco...(11.12)
- Access列表框左右互选、列表框...(11.11)
- 高效率在导入数据前删除记录(11.10)
- Access报价单转订单示例代码(11.08)
- Access系统自带的日期选择器不...(11.08)