找回密码
 加入
搜索
查看: 3291|回复: 3

[IE类操作] 如何用正则提取网页中表格到数组

[复制链接]
发表于 2011-5-30 13:26:28 | 显示全部楼层 |阅读模式
<table cellpadding="0" class="table" cellspacing="0" id="entrusts">
<thead>
<tr>
<th class="sorted order2">委托编号</th>
<th>交易所</th>
<th>买卖</th>
<th>证券代码</th>
<th>证券名称</th>
<th>委托数量</th>
<th>委托价格</th>
<th>冻结金额</th>
<th>冻结数量</th>
<th>委托时间</th>
<th>股东代码</th>
<th>状态</th>
<th>已成交</th>
<th>可撤</th></tr></thead>
<tbody>
<tr class="odd">
<td>1993</td>
<td>
        上证A股
    </td>
<td>
        &#21334;&#20986;
    </td>
<td>600583</td>
<td>&#28023;&#27833;&#24037;&#31243;</td>
<td>
      
        
        
          100
        
      
    </td>
<td>6.240</td>
<td>0.0000</td>
<td>100</td>
<td>12:00:09</td>
<td>A422019451</td>
<td>
        &#22996;&#25176;&#21462;&#28040;
    </td>
<td>0</td>
<td>
        <!--c:if test="false"-->
        <input type="button" name="withdraw" id="withdraw" value="撤单" onclick="submitWithdraw(this,'1993','1');"/>
        <!--/c:if-->&nbsp;
    </td></tr>
<tr class="even">
<td>1990</td>
<td>
        上证A股
    </td>
<td>
        &#21334;&#20986;
    </td>
<td>600583</td>
<td>&#28023;&#27833;&#24037;&#31243;</td>
<td>
      
        
        
          100
        
      
    </td>
<td>6.240</td>
<td>0.0000</td>
<td>100</td>
<td>09:52:51</td>
<td>A422019451</td>
<td>
        &#24050;&#25104;&#20132;
    </td>
<td>100</td>
<td>
        <!--c:if test="false"-->
        <input type="button" name="withdraw" id="withdraw" value="撤单" onclick="submitWithdraw(this,'1990','1');"/>
        <!--/c:if-->&nbsp;
    </td></tr></tbody></table>
</html>



如何用正则提取表格中的数据呀?

委托编号 交易所 买卖 证券代码 证券名称 委托数量 委托价格 冻结金额 冻结数量 委托时间 股东代码 状态 已成交 可撤
1993 上证A股  卖出  600583 海油工程 100  6.240 0.0000 100 12:00:09 A422019451 委托取消  0     
1990 上证A股  卖出  600583 海油工程 100  6.240 0.0000 100 09:52:51 A422019451 已成交  100     
共找到2条记录,显示所有记录。
发表于 2011-5-30 14:55:44 | 显示全部楼层

#include <Array.au3>
#include <INet.au3>
$s = FileRead(@ScriptDir &"\1.html")
;MsgBox(0,"",$s)
$ss=StringRegExp($s,'(?i)<th[^>]*>(.*?)</th>',3)

_ArrayDisplay($ss,1)
$ss=StringRegExp($s,'(?i)<td[^>]*>([^</td>]*)</td>',3)
;_ArrayDisplay($ss,1)
For $i=0 To UBound($ss)-1
        $x=StringRegExpReplace($ss[$i],'\s','')
        MsgBox(0,'',$x)
Next
 楼主| 发表于 2011-5-30 22:50:57 | 显示全部楼层
谢谢 高手呀
发表于 2011-6-4 07:59:50 | 显示全部楼层
$ss=StringRegExp($s,'(?i)<td[^>]*>([^</td>]*)</td>',3)
昨晚看了下精通正则表达式,第三版,发现我上面写的这个[^</td>] 是错误的。
他的等价于[^/td><].....
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-15 02:08 , Processed in 0.073832 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表