AutoIt 3 WebページのJS生成データの収集


1年以上のウェブページのデータ収集をした後、途中で数ヶ月止まって、今日マネージャーは1つの任務を説明して、収集しますhttp://www.365rili.com/huangliQuery.html 2011年1月1日は旧暦11月廿七  庚寅年戊子月丙辰日」.最初は自作のウェブページAPIで採集できると思っていたが、ソースコードを分析したところ、中のデータはすべてJSで動的に生成されており、現在のウェブページ解析クラスライブラリではそのウェブページのデータを取得するのは難しく、htmlutil APIを使用してjsエンジンを起動し、マウスイベントをシミュレートしても、そのウェブページのデータを採集するのは難しいことが分かった.     キースプライトソフトウェアには、Web分析ツール「Webキースプライト」があり、Webロード後のソースコードを分析したり、Autoit 3がIEブラウザを操作したりできるので、JSで生成されたデータもよく収集できます.以下は私がこのページJSデータを収集する準備とソースコードです.     準備は:windowシステム、ieブラウザ、Webボタンの精霊、autoit 3の4つの部分がクラスvbコードを書くことで、autoit上で実行することができます.コンソールに収集した「旧暦の日付」情報を印刷できます.     ソース:


;  2011        :1 1       11                

#include <IE.au3> 

;    IE   ,        ,          ,       ,             ,     
$oIE = _IECreate ("http://www.365rili.com/huangliQuery.html",1,1,1,0)

;             INPUT DIV  DOC    
$oButtons = _IETagNameGetCollection ($oIE, "input")
$oInputs = _IETagNameGetCollection ($oIE, "div")

;  ID    DOM  
$oMonSelect=_IEGetObjById($oIE, "oth_month")
$oDaySelect=_IEGetObjById($oIE, "oth_day")


For $mon=1 to 12 
	;  11        
	if $mon<=7 Then
		if mod($mon,2)=1 Then
			$day=31			
		Else 			
			if $mon=2 Then
				$day=28
			Else
				$day=30	
			EndIf			
		EndIf					
	else 
		if mod($mon,2)=0 Then
			$day=31
		Else 
			$day=30
		EndIf
	EndIf
	
	;    option          
	_IEFormElementOptionSelect ($oMonSelect, $mon & "", 1, "byText")

	For $today=1 to $day
		
		;    
		;ConsoleWrite($mon & "-" & $today & @CRLF)
		
		;    option          
		_IEFormElementOptionSelect ($oDaySelect, $today & "", 1, "byText")
			
		;###########################
		;          input   
		;###########################
		;$oButtons = _IETagNameGetCollection ($oIE, "input")
		$j=0;
		For $oButton In $oButtons
			If $j=0 Then				
				_IEAction ($oButton, "click")
			EndIf
			$j=$j+1
		Next

		;###########################
		;          div    text
		;###########################
		;$oInputs = _IETagNameGetCollection ($oIE, "div")
		$i=0;
		For $oInput In $oInputs
			If $i=27 Then
				ConsoleWrite($mon & "-" & $today &"  "&_IEPropertyGet($oInput, "innertext") & @CR)
			EndIf
			$i=$i+1
		Next			
		
		Sleep(500);  0.5 
	Next

Next

;                

1-1    11                
1-2    11                
1-3    11                
1-4    12                
1-5    12                


注意:(1)ソースコードはwindowプラットフォームでのみ実行でき、ieブラウザをインストールする必要があります.(2)Webボタンスプライトはボタンスプライトのサブソフトであり,ここではロードされたWebページを解析するために用いられ,idやname属性が設定されていないタグを特定すると,Webボタンスプライト上のWebページの解析とF 9を押すだけでWebページの解析を開始することができ,各タグのページ番号をよく知ることができる.(3)autoit 3プログラムはexeファイルを送信できず、windowプラットフォームで実行できます.(4)autoit 3とボタン精霊はいずれもソフトウェアであるが,それぞれ偏重があり,autoitはオフィスの自動化に偏り,ボタン精霊はゲームの自動化に偏る.(5)autoit 3の機能はとても強くて、私はただそのデータ収集の方面の応用に専念します.