【已解决】如何用正则表达式获取网页源码的某一个字段
本帖最后由 .個朲綉√ 于 2010-9-20 11:59 编辑If $Var = 1 Then
$Date_a_x = StringReplace($Date_a,"%2F","/")
$Date_b_x = StringReplace($Date_b,"%2F","/")
$zfy = _Search($Log_txt, '总费用:</td><tdalign="left"bgcolor=#ffffff>(.*?)元</td>')
GUICtrlSetData($Edit_Log, "[" & $Num & "]总费用(" & $zfy & ")元 " & $Date_a_x & " 到 " & $Date_b_x & @CRLF, 1)
Else
$Date_a_x = StringReplace($Date_a,"%2F","/")
$zfy = _Search($Log_txt, '总费用:</td><tdalign="left">(.*?)元')
GUICtrlSetData($Edit_Log, "[" & $Num & "]总费用(" & $zfy & ")元 " & $Date_a_x & @CRLF, 1)
EndIf
Func _Search($Txt, $Condition);表达式函数
Local $Result
$array = StringRegExp($Txt, $Condition, 2, 1)
For $i = 0 To UBound($array) - 1
$Result = $array[$i]
Next
Return $Result
EndFunc ;==>_Search
用这段代码中的正则表达式,可以获取总费用,我用相同的办法,怎么获取不到总时长呢?
下面就是网页源码的一部分,包括总费用,总时长,总流量,请大家帮我看看正则该怎么写?
谢谢大家。<td align="right" bgcolor="#ffffff" width=90>
总记录数:
</td>
<td align="left" bgcolor="#ffffff">
44
</td>
<td align="right" bgcolor="#ffffff" width=90>
总费用:
</td>
<td align="left" bgcolor=#ffffff>
0元
</td>
<td align="right" bgcolor="#ffffff" width=90>
总时长:
</td>
<td align="left" bgcolor="#ffffff">
98362秒
</td>
<td align="right" bgcolor="#ffffff" width=90>
总流量:
</td>
<td align="left" bgcolor=#ffffff>
1081090.53KB
</td>
$Str = _
'<td align="right" bgcolor="#ffffff" width=90>' & @CRLF & _
' 总记录数:' & @CRLF & _
'</td>' & @CRLF & _
'<td align="left" bgcolor="#ffffff">' & @CRLF & _
' 44' & @CRLF & _
'</td>' & @CRLF & _
'<td align="right" bgcolor="#ffffff" width=90>' & @CRLF & _
' 总费用:' & @CRLF & _
'</td>' & @CRLF & _
'<td align="left" bgcolor=#ffffff>' & @CRLF & _
' 0元' & @CRLF & _
'</td>' & @CRLF & _
'<td align="right" bgcolor="#ffffff" width=90>' & @CRLF & _
' 总时长:' & @CRLF & _
'</td>' & @CRLF & _
'<td align="left" bgcolor="#ffffff">' & @CRLF & _
' 98362秒' & @CRLF & _
'</td>' & @CRLF & _
'<td align="right" bgcolor="#ffffff" width=90>' & @CRLF & _
' 总流量:' & @CRLF & _
'</td>' & @CRLF & _
'<td align="left" bgcolor=#ffffff>' & @CRLF & _
' 1081090.53KB' & @CRLF & _
'</td>'
Msgbox(0, '原字符串', $str)
$sR = StringRegExp($str, '\s+(.+)\s+\<', 3)
#include <Array.au3>
_ArrayDisplay($sR, UBound($sR)) 本帖最后由 水木子 于 2010-9-20 10:16 编辑
这是我做的,和afan前辈的比起来差远了,向前辈学习!!!
Local $sRet
Local $a = ['总记录数:', '总费用:', '总时长:', '总流量:']
$aReg = StringRegExp(FileRead('Text.txt'), '"?#ffffff"?>\r\n\s+(.+)', 3) ;文本保存在脚本同目录下 Text.txt 文件内
For $i = 0 To UBound($aReg) - 1
$sRet &= $a[$i] & ':' & $aReg[$i] & @CRLF
Next
MsgBox(0, '', $sRet) 这是我做的,和afan前辈的比起来差远了,向前辈学习!!!
水木子 发表于 2010-9-20 10:15 http://www.autoitx.com/images/common/back.gif
高手都很谦虚 谦虚都是高手 谢谢各位,原来电信的源码有点变动,总费用,总流量,bgcolor="#ffffff"
bgcolor="#ffffff"这一句都没有双引号,偏偏总时长带个双引号,没注意。
<td align="left" bgcolor="#ffffff"> 学习了 很详细 学习了 很详细
页:
[1]