当前位置: 代码迷 >> Web前端 >> 本域内网页数据的提取与导入(相仿MAXTHON的智能填表)
  详细解决方案

本域内网页数据的提取与导入(相仿MAXTHON的智能填表)

热度:230   发布时间:2012-11-01 11:11:33.0
本域内网页数据的提取与导入(类似MAXTHON的智能填表)

目的是要完成本域内所有网页数据(文本框)信息的提取与导入。

方法:

为了达到能将不同网页(不能跨域)的数据(文本框)进行提取,我采用了IFRAME,即动态赋予IFRAME的SRC值。
现在关键是要能在IFRAME上进行矩形区域的选择,但IFRAME只能在被引用的网页中添加鼠标移动等事件,不能通过父页进行定义,
所以要考虑在主页上对IFRAME进行区域选择(这就要求IFRAME的宽高必须达到最大
onload="this.height=myFrame.document.body.scrollHeight;this.width=myFrame.document.body.scrollWidth")
我的主要思路:
在IFRAME上覆盖一个与IFRAME一样大小的透明DIV,这样IFRAME相当于被屏蔽,只要在该DIV上进行区域选择即可。
矩形区域的选择的作法是弄一个半透明的DIV,然后通过拉伸该DIV达到区域选择的目的。
数据提取的做法步骤:
1、在IFRAME表面添加一个完全覆盖IFRAME的透明DIV
2、在当前窗口正中让选择框DIV显示
3、选择框的拉伸达到区域选择
4、获得所选区域内文本框信息(通过与所选区域坐标是否相交或包含来判断是否在区域内),将各文本框信息组装成长串(也要把每个文本框被读到的顺序INDEX存入)
5、把得到的字符串传到后台(在JS中将此值赋给某个HIDDEN 文本框就行)。对字符串进行拆分成一个个文本框
6、将文本框进行定位,主要是定位它们的行与列

?? 具体方法:
?? 定位操作步骤
?? * 1、得到边界值
?? * 2、采用拉网的方式,进行X方向的扫描
?? * 如px`从边界左边开始,按width=10扫描,每次检测是否有文本框与其在同一列,
?? * (同一列的意思是X有交集)
?? * 有则找出与该文本框同列的框集合(无则py+=width继续扫描),再分别标记上列号,
?? * px则定位到该集合中右下角X最大者,继续扫描,直至到右边界.
?? * 3、Y扫描与2同样的方法

7、定位成功后按各自的行列写到EXCEL(采用response.getOutputStream()即可实现生成临时EXCEL来下载)中即可


EXCEL数据的导入(赋给所选区域的文本框):

1。与上面步骤一样的矩形选择区域

2。点导入按钮出现上传文件框,上传文件后,提交。这里还得将前台各输入框信息(可能没值,但有位置)传到后台(FORM要TARGET到隐藏的IFRAME中)并进行与上面一样的解析定位。

3。读取EXCEL内容,用HASHMAP存里面的信息,键值是行列组成的字符串

4。给后台的各文本框赋值,再组装成长串

5。利用IFRAME,调用父窗口的JS方法,将此长串返回给父窗口,通过该方法对长串进行解析,并根据文本框的INDEX进行赋值

?