2016-09-14 94 views
0

假設有一些數字/字符不斷變化。#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,並繼續(如果可能)

他們都失敗了下!我通讀了所有_IE函數和常規函數。

您能否給我一些提示?

回答

0

我認爲最好使用Invisible IE窗口。你可以使用一個不活動的,儘量減少它,但爲什麼要經歷這個麻煩。

下面的代碼將使用隱藏的IE窗口讀取結果,因此無法獲得焦點。它查看HTML類並獲取名稱和價格,並將其顯示在消息框中。由於名稱不完整,您的唯一標識符可能是div class =「pla-unit-title」下的鏈接

#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 
+0

哇,你是天才! 我其實也不知道隱形IE的存在! 謝謝soooo bro! – pita