Что нового

Поиск текста на сайте

viter

Новичок
Сообщения
40
Репутация
1
Здравствуйте, сделал скрипт для вытаскивания необходимой инфы с сайта, но есть проблема. Если я знаю и задаю точное кол-во совпадений на странице все ок, но если это неизвестно упираюсь в ошибку.
Код:
#include <Array.au3>
#include <IE.au3>
#include <Excel.au3>
#include <Inet.au3>

$sFiless = @ScriptDir & '\Adres.txt'
$hFiless = FileOpen($sFiless)
$sStringss = FileRead($hFiless)
FileClose($hFiless)
$aURLglob=StringSplit(StringStripCR($sStringss), @LF, 2)
$oExcel = _ExcelBookOpen("D:\2.xlsx")

For $vgl=0 to UBound($aURLglob)-1
$sURL = $aURLglob[$vgl]       

$aPar = StringRegExp(_INetGetSource($sURL),'(?i)<td>(.*?)</td>',3) 
if UBound($aPar)>0 Then
For $i = 0 To UBound($aPar)
_ExcelWriteCell($oExcel, $aPar[$i], $vgl, $i)
Next
EndIf
Next


Ошибка:
_ExcelWriteCell($oExcel, $aPar[$i], $vgl, $i)
_ExcelWriteCell($oExcel, ^ ERROR
Error: Array variable has incorrect number of subscripts or subscript dimension range exceeded.

Помогите пожалуйста :'(
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Код:
#include <Array.au3>
#include <IE.au3>
#include <Excel.au3>
#include <Inet.au3>

$sFiless = @ScriptDir & '\Adres.txt'
$aURLglob = FileReadToArray($sFiless)
$oExcel = _ExcelBookOpen("D:\2.xlsx")

For $vgl = 0 To UBound($aURLglob) - 1
  $aPar = StringRegExp(_INetGetSource($aURLglob[$vgl]), '(?i)<td>(.*?)</td>', 3)
  If Not @error Then
    For $i = 0 To UBound($aPar) - 1
      _ExcelWriteCell($oExcel, $aPar[$i], $vgl, $i)
    Next
  EndIf
Next
 
Автор
V

viter

Новичок
Сообщения
40
Репутация
1
Для использования функции FileReadToArray обновил autoit, а там как выяснилось функции _ExcelWriteCell уже нет, как задать неявно адрес ячейки в _Excel_RangeWrite я так и не понял.
Код:
_Excel_RangeWrite($oExcel, $oExcel.Activesheet, $aPar[$i], $vgl & $i)

не работает

Откатил и вставил конструкцию If Not @error Then в свой код
Код:
$sFiless = @ScriptDir & '\Adres.txt'
$hFiless = FileOpen($sFiless)
$sStringss = FileRead($hFiless)
FileClose($hFiless)
$aURLglob=StringSplit(StringStripCR($sStringss), @LF, 2)
$oExcel = _ExcelBookOpen("D:\2.xlsx")

For $vgl=0 to UBound($aURLglob)-1
$sURL = $aURLglob[$vgl]      

$aPar = StringRegExp(_INetGetSource($sURL),'(?i)<tr>(.*?)</tr>',3)
  If Not @error Then
For $i = 0 To UBound($aPar)
_ExcelWriteCell($oExcel, $aPar[$i], $vgl, $i)
Next
EndIf
Next

Ошибка все та же
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
viter
Для использования функции FileReadToArray обновил autoit, а там как выяснилось функции _ExcelWriteCell уже нет
В версии 3.3.10.х есть и то и другое. В любом случае во всех версиях есть
Код:
_FileReadToArray()
Кстати, у вас в профиле указана версия 3.3.14.0, в которой нет функции _ExcelWriteCell ;)

Ошибка все та же
Внимательно смотрим на границы цикла
Код:
For $i = 0 To UBound($aPar) - 1 ; минус один !
 
Автор
V

viter

Новичок
Сообщения
40
Репутация
1
Огромное спасибо, до самого уже дошло про цикл, залез извинятся а вы тут уже мне бестолковому все обьяснили :smile:
ps
Давно автоитом не пользовался, и уже забыл какой тут и на автохоткее хорошие форумы. Жаль что с js так дела не обстоят, сколько раз не обращался за помощью, результат таков что либо пишут что ты тупой и если выложил то что сам смог сделать это говнокод, причем не предолгая решений, либо уперто пытаются тебя убедить что поставленная тобой задача тебе не нужна...
 
Верх