Error Ie

Autoit.NET(Interface Web, sustituye a Gui)
Interface deL Navegador(IE, Firefox... de Linux, WinCe, Palm, PDA, Mac) Es 100% Autoit tipo PHP/CGI de Servidor.Compatible JavaScript.
ary666
Mensajes: 4
Registrado: 31 Ago 2011, 19:43

Error Ie

Mensaje por ary666 »

Hola cree un código para poder obtener los datos de anuncios de una pagina el tema es que para poder obtener el teléfono tengo que entrar a cada uno de los link es decir por cada anuncio tengo que entrar para obtener el teléfono.
Este código esta pronto pero me salta un error dentro del IE
El código es el siguiente

Código: Seleccionar todo

#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <String.au3>
#include <IE.au3>
#include <GuiComboBox.au3>



#Region ### START Precedimentos internos ### Form=form1.kxf
	$mPag_PagInicio =  _IECreate("http://www.gallito.com.uy/autos/automoviles",0,0)
	$SubIE ="";
	$mString_HtmlInicio =  _IEDocReadHTML($mPag_PagInicio);Inicia el Componente
	_IELoadWait ($mPag_PagInicio)
	$html_Format = _IEFormGetCollection ($mPag_PagInicio, 0)


	$mCanTotalArticulos = 0 ; Cantidad de articulos de la pagina
	$mCanTotalPaginas = 0; La cantidad de paginas que tiene que abrir para optener los anuncion
	$mPagActual = 1;
	$mCanAnun_X_Pagina = 0; Cantidad de anuncios por pagina
	$mCanPagSelec = 1; Cantidad de paginas seleccionadas a descargar
	$mCanAnunSelec = 0; Ctidad de anuncios a descargar

	$mFileDestino = ""
	setCanPage ()
	$mCanAnunSelec = $mCanAnun_X_Pagina

	Func _StringTrimLeft($pString)
		Local  $xSubString = "";

		for $i = 1 to StringLen($pString) Step 1
			$xSubString = StringLeft($pString,$i)
			if StringIsSpace($xSubString) == 0 Then
				Return StringTrimLeft($pString,$i - 1)
			EndIf
		Next
		return $pString
	EndFunc

	Func _StringTrimRight($pString)
		Local  $xSubString = "";

		for $i = 1 to StringLen($pString) Step 1
			$xSubString = StringRight($pString,$i)
			if StringIsSpace($xSubString) == 0 Then
				Return StringTrimRight($pString,$i - 1)
			EndIf
		Next
		return $pString
	EndFunc

	Func _StringTrim($pString)
		$pString = _StringTrimLeft($pString)
		$pString = _StringTrimRight($pString)
		Return $pString
	EndFunc

	FUNC setCanPage ()
		Local $xSubHTML = StringRegExp($mString_HtmlInicio,'Pag:(.*?)avisos</a>',1)

		$xSubHTML = StringReplace ($xSubHTML[0], "de", "")
		$xSubHTML = StringReplace ($xSubHTML, "|", "")

		$xSubHTML = StringRegExp($xSubHTML," (.*?) ",3)

		$mCanTotalArticulos = Int ($xSubHTML[2])
		$mCanTotalPaginas = Int ($xSubHTML[1])
		$mPagActual = Int ($xSubHTML[0])



		$mCanAnun_X_Pagina = Round($mCanTotalArticulos/$mCanTotalPaginas)

	EndFunc

	;Me retorna una cadena con el formato adecuado para el combo box en la cual posee nuemors correlativos del 1 a xCant
	Func getItemComB ($xCant)
		Local $xSepara = "" ;Separador
		Local $xRespuesta = ""

		For $i = 1 to $xCant Step 1
			$xRespuesta = $xRespuesta & $xSepara & $i
			$xSepara = "|"

		Next

		Return $xRespuesta
	EndFunc

	;Comando que carga los topes de que pagina asta que pagina ba a optener los datos
	Func calRanPagina ($pComB_Asta, $pLbl_Anuncios)
		Local  $xResto = 0;

		$mCanPagSelec = _GUICtrlComboBox_GetCurSel($pComB_Asta) + 1

		If $mCanPagSelec = $mCanTotalPaginas Then
			$xResto = Mod ($mCanTotalArticulos,$mCanAnun_X_Pagina)
			if $xResto <> 0 Then
				$xResto = $mCanAnun_X_Pagina - $xResto;
			EndIf

		EndIf

		$mCanAnunSelec = $mCanPagSelec * $mCanAnun_X_Pagina - $xResto

		GUICtrlSetData($pLbl_Anuncios, $mCanAnunSelec)
	EndFunc

	Func IniciarProceso ($pPrB_Descarga, $pPrB_Pros, $pLbl_Destino, $pComB_Asta, $pLbl_Anuncios)
		Local $xPors, $xPors2, $i, $i2, $array;
		if StringCompare($mFileDestino, "") == 0 Then
			setDestino ($pLbl_Destino)
			if StringCompare($mFileDestino, "") == 0 Then
				MsgBox(0,"Error","Debe ingresar un destino para los anuncios")
				Return
			EndIf
		EndIf

		setCanPage()
		calRanPagina($pComB_Asta,$pLbl_Anuncios)

		FileDelete($mFileDestino)

		$xPors =  100 / $mCanPagSelec

		$SubIE = _IECreate("http://www.google.com.uy/",0,0)

		for $i = 1 to $mCanPagSelec Step 1

			$array = StringRegExp($mString_HtmlInicio,'<div id="grillaavisos">(.*?)</span></div></div>',1)
			$array = StringRegExp($array[0],'href="(.*?)"',3)

			$LinkSigiente = _IEGetObjById($html_Format, "rptPager_lnkPage_13")
			_IEAction($LinkSigiente, "click")

			$xPors2 =  100 /  UBound($array)

			for $i2 = 0 to UBound($array) -1 Step 2
				FileWrite($mFileDestino,prosURL($array[$i2]))
				GUICtrlSetData($pPrB_Pros, Round($xPors2 * $i2))
			Next
			GUICtrlSetData($pPrB_Pros, 0)
			GUICtrlSetData($pPrB_Descarga, Round($xPors * $i))
			$mString_HtmlInicio =  _IEDocReadHTML($mPag_PagInicio);Inicia el Componente
		Next

		_IEQuit($SubIE)

		_IEQuit($mPag_PagInicio)
		$mPag_PagInicio =  _IECreate("http://www.gallito.com.uy/autos/automoviles",0,0)
		$mString_HtmlInicio =  _IEDocReadHTML($mPag_PagInicio);Inicia el Componente
		_IELoadWait ($mPag_PagInicio)
		$html_Format = _IEFormGetCollection ($mPag_PagInicio, 0)

		setCanPage ()

		GUICtrlSetData($pPrB_Descarga, 0)
	EndFunc

	Func prosURL($pURL)
;~
		Local $SubHTML, $array, $SubS_Telefono = "", $SugS_Ubicacion = "" , $SubS_Precio= "", $SubS_Veiculo = "", $SubString;
                Sleep(5000)
		_IENavigate($SubIE,$pURL)

		$SubHTML = _IEDocReadHTML($SubIE);Inicia el Componente


		$array = _StringBetween($SubHTML, '<div id="ficha_cabezal">', '</span> </div>')
		if UBound($array) = 0 Then
			FileWrite(@ScriptDir &"\Salida_E.txt",$pURL & chr(13))
			return ""
		EndIf

		$SubString = $array[0]
		$SubString = $SubString & '</span>'

		$array = StringRegExp($SubString,'<span id="ficha_titulo">(.*?)</span>',1)

		if UBound($array) > 0 Then $SubS_Veiculo = $array[0]


		$array = _StringBetween($SubString, '<span id="ficha_precio">', '</span>')
		if UBound($array) > 0 Then $SubS_Precio = StringReplace ($array[0]," ","")


		$array = _StringBetween($SubString, '<span id="ficha_ubicacion">', '</span>')
		if UBound($array) > 0 Then $SugS_Ubicacion = $array[0]


		$array = _StringBetween($SubString, '<span id="ficha_telefono">', '</span>')
		if UBound($array) > 0 Then $SubS_Telefono = $array[0]

		return $SubS_Veiculo & " " & $SubS_Precio & " " & $SugS_Ubicacion & " " & $SubS_Telefono & Chr(13)


	EndFunc

	Func setDestino ($pLbl_Destino)
		$mFileDestino = FileSaveDialog("Destino", @ScriptDir, "Texto (*.Txt)", 16)
		If StringCompare($mFileDestino, "") = 1 and StringRight($mFileDestino, 4) <> ".Txt" Then $mFileDestino = $mFileDestino & ".Txt"
		GUICtrlSetData($pLbl_Destino, $mFileDestino)

	EndFunc

	Func _Salir ()
		_IEQuit($mPag_PagInicio)
		Exit
	EndFunc

#EndRegion ### END Precedimentos internos ###




#Region ### START Koda GUI section ### Form=form1.kxf
$Form1_1 = GUICreate("Gallito luis", 840, 255, 192, 178)
GUISetIcon(@ScriptDir &"\Cabriolet.ico", -1)
$PrB_Descarga = GUICtrlCreateProgress(16, 120, 807, 17)
$Group1 = GUICtrlCreateGroup("Origen", 128, 16, 321, 73)
$Label3 = GUICtrlCreateLabel("Cantidad", 144, 40, 54, 17)
GUICtrlSetFont(-1, 9, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, 0x3399FF)
$Lbl_CanP = GUICtrlCreateLabel($mCanTotalPaginas, 144, 56, 54, 17)
GUICtrlSetFont(-1, 9, 800, 0, "MS Sans Serif")
GUICtrlSetBkColor(-1, 0xFFFFE1)
$Group3 = GUICtrlCreateGroup("", 208, 24, 233, 57)
$Btn_Cargar = GUICtrlCreateButton("", 408, 31, 32, 49, $BS_ICON)
GUICtrlSetImage(-1, @ScriptDir & "\IM\button-synchronize.ico", -1)
$Label5 = GUICtrlCreateLabel("Anuncios", 344, 36, 56, 17)
GUICtrlSetFont(-1, 9, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, 0x3399FF)
$Lbl_Anuncios = GUICtrlCreateLabel($mCanAnunSelec, 344, 56, 56, 17)
GUICtrlSetFont(-1, 9, 800, 0, "MS Sans Serif")
GUICtrlSetBkColor(-1, 0xFFFFE1)
$Label1 = GUICtrlCreateLabel("Paginas", 218, 36, 112, 17)
GUICtrlSetFont(-1, 9, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, 0x3399FF)
$ComB_Asta = GUICtrlCreateCombo("", 216, 56, 113, 25, BitOR($GUI_SS_DEFAULT_COMBO,$CBS_SIMPLE))
GUICtrlSetData(-1, getItemComB($mCanTotalPaginas), "1")
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Label6 = GUICtrlCreateLabel("Paginar rebisadas", 16, 95, 807, 17)
GUICtrlSetFont(-1, 9, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, 0x3399FF)
$Label7 = GUICtrlCreateLabel("Anuncios descargados", 16, 143, 807, 17)
GUICtrlSetFont(-1, 9, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, 0x3399FF)
$PrB_Pros = GUICtrlCreateProgress(16, 168, 807, 17)
$Btn_Inicoi = GUICtrlCreateButton("Iniciar", 8, 208, 139, 33)
$Btn_Detener = GUICtrlCreateButton("Detener", 676, 208, 139, 33)
$Btn_Salir = GUICtrlCreateButton("Salir", 232, 208, 347, 33)
$Pic1 = GUICtrlCreatePic(@ScriptDir & "\IM\GL.jpg", 24, 16, 92, 68)
$Group2 = GUICtrlCreateGroup("Destino", 456, 16, 369, 73)
$Label12 = GUICtrlCreateLabel("Anuncios", 464, 40, 344, 17)
GUICtrlSetFont(-1, 9, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, 0x3399FF)
$Lbl_Destino = GUICtrlCreateLabel("", 464, 58, 320, 25)
GUICtrlSetFont(-1, 9, 800, 0, "MS Sans Serif")
GUICtrlSetBkColor(-1, 0xFFFFE1)
$Btn_Destino = GUICtrlCreateButton("...", 784, 58, 27, 25)
GUICtrlCreateGroup("", -99, -99, 1, 1)

GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			_Salir()
		Case $Btn_Cargar
			calRanPagina($ComB_Asta,$Lbl_Anuncios)
		Case $Btn_Salir
			_Salir()
		Case $Btn_Inicoi
			GUICtrlSetState($Btn_Inicoi, $GUI_DISABLE)
			IniciarProceso ($PrB_Descarga, $PrB_Pros, $Lbl_Destino, $ComB_Asta, $Lbl_Anuncios)
			GUICtrlSetState($Btn_Inicoi, $GUI_ENABLE)
		Case $Btn_Destino
			setDestino ($Lbl_Destino)
	EndSwitch
WEnd 
A mi parecer el error me esta dando dentro del método Func prosURL($pURL)
Yo intenté colocarle un Sleep(5000) antes del _IENavigate($SubIE,$pURL) para darle un poco de tiempo ya que creo que es ese el problema

El mensaje que me da es el siguiente:

>"C:\Program Files\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "C:\Users\Martin García\Dropbox\Compartido con Ary\Gallito luis\Gallito luis.au3" /UserParams
+>01:54:03 Starting AutoIt3Wrapper v.2.1.0.33 Environment(Language:0C0A Keyboard:0000040A OS:WIN_7/ CPU:X64 OS:X86)
>Running AU3Check (1.54.22.0) from:C:\Program Files\AutoIt3
+>01:54:03 AU3Check ended.rc:0
>Running:(3.3.8.1):C:\Program Files\AutoIt3\autoit3.exe "C:\Users\Martin García\Dropbox\Compartido con Ary\Gallito luis\Gallito luis.au3"
--> Press Ctrl+Alt+F5 to Restart or Ctrl+Break to Stop
C:\Program Files\AutoIt3\Include\IE.au3 (2034) : ==> The requested action with this object has failed.:
Return SetError($_IEStatus_Success, 0, $o_object.document.documentElement.outerHTML)
Return SetError($_IEStatus_Success, 0, $o_object.document.documentElement.outerHTML^ ERROR
->02:15:30 AutoIT3.exe ended.rc:1
>Exit code: 1 Time: 1288.906
Responder