找回密码
 加入
搜索
查看: 8983|回复: 4

[效率算法] 【已解决】两次正则运用 ,如何批量先提取网页指定数据,然后再正则提取。

[复制链接]
发表于 2013-8-16 13:48:16 | 显示全部楼层 |阅读模式
本帖最后由 nangua111111 于 2013-8-16 21:46 编辑
<TD><IMG onclick=show() height=32 src="images/jt1.jpg" width=7></TD></TR></TBODY></TABLE></TD>
<TD class=bg vAlign=top width="100%">
<TABLE style="MARGIN: 0px 0px 0px 3px; TEXT-ALIGN: center" cellSpacing=0 cellPadding=0 width="99%" border=0>
<TBODY>
<TR>
<TD>
<TA
<TABLE cellSpacing=0 cellPadding=0 width="10%" border=0>
<TBODY>
<TR>
<TD height=10></TD></TR></TBODY></TABLE>
<TABLE id=dg_user style="WIDTH: 99%; BORDER-COLLAPSE: collapse" cellSpacing=0 border=0>
<TBODY>
<TR>
<TD align=middle>


<TD class=namehead>姓名</TD>
<TD style="FONT-SIZE: 10.5pt; WIDTH: 20%; COLOR: #0a5baa">吴三桂 <INPUT id=dg_user__ctl7_LinkButton12 type=image src="images/dx.gif" border=0 name=dg_user:_ctl7:LinkButton12></TD>
<TD class=namehead>编号</TD>
<TD>623456</TD>
<TD class=namehead>单位</TD>
<TD style="WIDTH: 30%">浙江杭州</TD></TR>
<TR style="BACKGROUND: #ffffff">
<TD class=namehead>手机</TD>
<TD>13906773388</TD>
<TD class=namehead>短号</TD>
<TD>667</TD>
<TD class=namehead>办公外线</TD>
<TD>8234324</TD></TR>
<TR style="BACKGROUND: #ffffff">
<TD class=namehead>办公内线</TD>
<TD></TD>
<TD class=namehead>电子信箱</TD>
<TD></TD>
<TD class=namehead>职务</TD>
<TD>加油站</TD></TR></TBODY></TABLE><BR></TD></TR></TBODY></TABLE>

<TABLE cellSpacing=0 cellPadding=0 width="98%" align=center border=0>
<TBODY>
<TR>
<TD style="HEIGHT: 25px" align=right bgColor=#f4fbff><SPAN id=DIV1>当前页:第 1 页 ,共 2 页</SPAN> <A id=Top>首页</A> <A id=Prv>上页</A> <A id=Dow href="/webcheck/txl/PerConnList.aspx?DepartId=4a-bda1-26f24bab&Page=2">下页</A> <A id=Bot href="/webcheck/txl/PerConnList.aspx?DepartId=b-aa-bba777eb&Page=2">末页</A>   </TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=1002 align=center border=0>
<TBODY>
<TR>
<TD align=middle background=images/foot.jpg height=26>
<TABLE cellSpacing=0 cellPadding=0 width="10%" border=0>
<TBODY>
<TR>
<TD height=2></TD></TR></TBODY></TABLE><SPAN class=foot>您是本站第 </SPAN><SPAN class=foot1>201</SPAN><SPAN class=foot> 位访问者
因为正则不太熟悉,有没有简单分步提取以下代码,然后再用正则提取数据。
我想象中的步骤:、下面的代码基本不变,所以想简单提取出来后再用正则, 以后我用到提取的时候我就直接类似上面的步骤,就提取从<TD class=namehead>姓名</TD>
/TD></TR></TBODY></TABLE><BR></TD></TR></TBODY></TABLE> 代码写入文件,然后再正则获取。
<TD class=namehead>姓名</TD>
<TD style="FONT-SIZE: 10.5pt; WIDTH: 20%; COLOR: #0a5baa">吴三桂 <INPUT id=dg_user__ctl7_LinkButton12 type=image src="images/dx.gif" border=0 name=dg_user:_ctl7:LinkButton12></TD>
<TD class=namehead>编号</TD>
<TD>623456</TD>
<TD class=namehead>单位</TD>
<TD style="WIDTH: 30%">浙江杭州</TD></TR>
<TR style="BACKGROUND: #ffffff">
<TD class=namehead>手机</TD>
<TD>13906773388</TD>
<TD class=namehead>短号</TD>
<TD>667</TD>
<TD class=namehead>办公外线</TD>
<TD>8234324</TD></TR>
<TR style="BACKGROUND: #ffffff">
<TD class=namehead>办公内线</TD>
<TD></TD>
<TD class=namehead>电子信箱</TD>
<TD></TD>
<TD class=namehead>职务</TD>
<TD>加油站</TD></TR></TBODY></TABLE><BR></TD></TR></TBODY></TABLE>
 楼主| 发表于 2013-8-16 14:54:27 | 显示全部楼层
(?s)<TD class=namehead>姓名</TD>.+/TD></TR></TBODY></TABLE><BR></TD></TR></TBO
发表于 2013-8-16 15:27:18 | 显示全部楼层
不需要先写入文件,直接用_IEDocReadHTML或_IEBodyReadHTML提取网页源码,正则从源码中直接提取相关信息,示例代码
#include <Array.au3>
#include <IE.au3>
$oIE=_IECreate("要提取信息的URL")
$oHTML=_IEDocReadHTML($oIE)
$array = StringRegExp($oHTML, '<TD.*>姓名</TD>\s*.*5baa.>(.*?)<INPUT.*></TD>\s*.*编号</TD>\s*<TD>(\d{6})</TD>\s*.*单位</TD>\s*.*30%">(.*?)</TD></TR>\s*<TR.*#f{6}.>\s*.*手机</TD>\s*<TD>(\d{11})</TD>\s*.*短号</TD>\s*<TD>(\d{3})</TD>\s*.*外线</TD>\s*<TD>(\d{7}).*TR>\s*<TR.*>\s*.*内线</TD>\s*<TD>(.*?)</TD>\s*.*信箱</TD>\s*<TD>(.*?)</TD>\s*.*职务</TD>\s*<TD>(.*?)</TD>.*?<BR>.*?</TABLE>', 3)
If Not IsArray($array) Then
        MsgBox(0,"错误","提取信息失败!")
Else
_ArrayDisplay($array)
EndIf
代码根据需要修改。
不知道是否满足你的要求。

评分

参与人数 1金钱 +10 收起 理由
nangua111111 + 10

查看全部评分

发表于 2013-8-16 18:43:43 | 显示全部楼层
回复 1# nangua111111

标题应该编辑为 "已解决" 而不是现在的 "已经解决"!
请再次编辑下, 谢谢!
 楼主| 发表于 2013-8-16 21:56:37 | 显示全部楼层
不需要先写入文件,直接用_IEDocReadHTML或_IEBodyReadHTML提取网页源码,正则从源码中直接提取相关信息,示 ...
gczxhzb 发表于 2013-8-16 15:27

恩,看来我多了一步。一个是考虑到 用通用的方式,写入txt文件后再提取到excel表格。第二因为有很多个网页,所以没有直接写入。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-1 03:41 , Processed in 0.080278 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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