2016-09-14 2 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. (가능한 경우) 그들 모두가,532에서 실패

$에서 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 많은 형제 감사합니다! – pita