#autoit阅读'不断变化的'字符串

时间:2016-09-14 07:15:20

标签: string internet-explorer text autoit

假设有些数字/字符不断变化。

我的目标是在“非活动窗口”下阅读这些值:

#include <IE.au3>
Global $fb1 = _IECreate(https://www.google.ca/?gfe_rd=cr&ei=oPLYV6qlMMbM8ge3xqiYDg#q=tennis+racquet+price)

sample screen

网球拍的价格很可能会改变,我希望得到价值。

我的愚蠢计划是:

  1. 获取$的位置并阅读右侧的文本(如果可能)
  2. 找到行号并读取整个字符串以提取值
  3. 将字符串从$抓取到sport chek,然后继续(如果可能)
  4. 所有这些都在inactive window下失败了!我通过所有_IE函数和常规函数阅读。

    你可以给我一些提示吗?

1 个答案:

答案 0 :(得分:0)

我认为最好使用Invisible IE窗口。你可以使用一个非活动的,只是最小化它,但为什么要经历这个麻烦。

下面的代码将使用隐藏的IE窗口读取结果,因此无法获得焦点。它查看HTML类并获取名称和价格,并在消息框中显示它们。由于名称不完整,您的唯一标识符可能是div class =&#34; pla-unit-title&#34;

下的链接
#include <IE.au3>
#include <MsgBoxConstants.au3>
#include <StringConstants.au3>
Global $fb1 = _IECreate("https://www.google.ca/?gfe_rd=cr&ei=oPLYV6qlMMbM8ge3xqiYDg#q=tennis+racquet+price",0,0)
sleep(2000);wait for all data to load
$fullHtml = _IEDocReadHTML ($fb1)

$racketNames = StringRegExp($fullHtml,"(?s)(?U)<div class=""pla-unit-title.*>(.*)</div>",3)
$racketPrices = StringRegExp($fullHtml,"(?s)(?U)<div class=""_QD.*>(.*)</div>",3)

_IEQuit($fb1);
For $i = 0 To UBound($racketPrices) - 1
   $racketName = getTextBetweenTags($racketNames[$i])
   $racketPrice = getTextBetweenTags($racketPrices[$i])
    MsgBox($MB_SYSTEMMODAL, "Racket:" & $i,$racketName & " priced at " &  $racketPrice)
Next
func getTextBetweenTags($html)
    $value = StringTrimLeft($html,StringInStr($html,">"))
    $value = StringLeft($value,StringInStr($value,"<")-1)
    return $value;
EndFunc