.個朲綉√ 发表于 2010-9-20 09:57:04

【已解决】如何用正则表达式获取网页源码的某一个字段

本帖最后由 .個朲綉√ 于 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>

afan 发表于 2010-9-20 10:10:03

$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:15:53

本帖最后由 水木子 于 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)

liufenglg 发表于 2010-9-20 11:01:55

这是我做的,和afan前辈的比起来差远了,向前辈学习!!!
水木子 发表于 2010-9-20 10:15 http://www.autoitx.com/images/common/back.gif


    高手都很谦虚

lpxx 发表于 2010-9-20 11:31:01

谦虚都是高手

.個朲綉√ 发表于 2010-9-20 11:57:27

谢谢各位,原来电信的源码有点变动,总费用,总流量,bgcolor="#ffffff"
bgcolor="#ffffff"这一句都没有双引号,偏偏总时长带个双引号,没注意。
<td align="left" bgcolor="#ffffff">

girl829475 发表于 2010-12-5 10:49:33

学习了 很详细

girl829475 发表于 2010-12-5 10:49:34

学习了 很详细
页: [1]
查看完整版本: 【已解决】如何用正则表达式获取网页源码的某一个字段