找回密码
 加入
搜索
查看: 5344|回复: 7

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

  [复制链接]
发表于 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>

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 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))

评分

参与人数 2威望 +10 金钱 +70 收起 理由
.個朲綉√ + 20 谢谢。
水木子 + 10 + 50 学习了!

查看全部评分

发表于 2010-9-20 10:15:53 | 显示全部楼层
本帖最后由 水木子 于 2010-9-20 10:16 编辑

这是我做的,和afan前辈的比起来差远了,向前辈学习!!!

Local $sRet
Local $a[4] = ['总记录数:', '总费用:', '总时长:', '总流量:']
$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)

评分

参与人数 2金钱 +50 收起 理由
.個朲綉√ + 20 谢谢。
afan + 30 学习了:)

查看全部评分

发表于 2010-9-20 11:01:55 | 显示全部楼层
这是我做的,和afan前辈的比起来差远了,向前辈学习!!!
水木子 发表于 2010-9-20 10:15



    高手都很谦虚
发表于 2010-9-20 11:31:01 | 显示全部楼层
谦虚都是高手
 楼主| 发表于 2010-9-20 11:57:27 | 显示全部楼层
谢谢各位,原来电信的源码有点变动,总费用,总流量,bgcolor="#ffffff"
bgcolor="#ffffff"这一句都没有双引号,偏偏总时长带个双引号,没注意。
<td align="left" bgcolor="#ffffff">
发表于 2010-12-5 10:49:33 | 显示全部楼层
学习了 很详细
发表于 2010-12-5 10:49:34 | 显示全部楼层
学习了 很详细
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-15 16:35 , Processed in 0.090430 second(s), 29 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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