Error Ie
Publicado: 18 Ago 2012, 17:02
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
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
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
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