Добрый день!
у меня есть небольшой скрипт который переходит по ссылкам их списка url (в отдельном файле) и выгружает результаты.
Все бы хорошо, только сайт с которого скачиваю информацию не всегда стабильно работает
При работе скрипта, когда он переходит по ссылке - иногда загружается страница где написано либо "Сервер временно недоступен..", либо "Превышен лимит обращений к серверу..."
такое происходит в двух вариантах:
1. когда скрипт переходит по ссылке и сразу выскакивает страница с ошибкой
2. либо когда скрипт нажимает на Выгрузить результаты поиска.
Помогите пожалуйста решить проблему, нужно сделать проверку в обоих случаях.
Т.е. если выскакиевает ошибка, то просто повторно перейти по этому же URL из списка
Я смог сделать только 10ти секундную задержку на загрузку страницы, но смысла в ней нет, так как он же не проверяет какая страница загрузилась- с результатами или с ошибкой.
пример ошибки
у меня есть небольшой скрипт который переходит по ссылкам их списка url (в отдельном файле) и выгружает результаты.
Все бы хорошо, только сайт с которого скачиваю информацию не всегда стабильно работает
При работе скрипта, когда он переходит по ссылке - иногда загружается страница где написано либо "Сервер временно недоступен..", либо "Превышен лимит обращений к серверу..."
такое происходит в двух вариантах:
1. когда скрипт переходит по ссылке и сразу выскакивает страница с ошибкой
2. либо когда скрипт нажимает на Выгрузить результаты поиска.
Помогите пожалуйста решить проблему, нужно сделать проверку в обоих случаях.
Т.е. если выскакиевает ошибка, то просто повторно перейти по этому же URL из списка
Я смог сделать только 10ти секундную задержку на загрузку страницы, но смысла в ней нет, так как он же не проверяет какая страница загрузилась- с результатами или с ошибкой.
Код:
#include <IE.au3>
$sStartUrl = 'http://zakupki.gov.ru' ; ссылка свернутого окна
$sSplitter = ',' ; разделитель
$oIE = _IECreate($sStartUrl, 1)
$aUrl = StringRegExp(FileRead(@ScriptDir & '\url.txt'), '(.+?)' & $sSplitter & '([^\s]+)', 3)
For $i = 0 To UBound($aUrl) - 2 Step 2
_go_to_url($aUrl[$i], $aUrl[$i + 1])
Next
Func _go_to_url($sUrl, $sName)
Do
_IENavigate($oIE, $sUrl)
Until _IELoadWait($oIE,0,10000)
_IELinkClickByText($oIE, "Выгрузка результатов поиска")
Sleep(2000)
While 1
Select
Case WinExists("Загрузка файла", "Со&хранить") And WinActive("Загрузка файла", "Со&хранить")
ControlClick("Загрузка файла", "Со&хранить", "[CLASS:Button; INSTANCE:2]")
Case WinExists("Сохранить как", "Со&хранить") And WinActive("Сохранить как", "Со&хранить")
ControlSetText("Сохранить как", "", "[CLASS:Edit; INSTANCE:1]", $sName & ".csv")
ControlClick("Сохранить как", "Со&хранить", "[CLASS:Button; INSTANCE:2]")
Case WinExists("Сохранить как", "&Да") And WinActive("Сохранить как", "&Да")
;~ если файл уже существует, то он переписывается
ControlClick("Сохранить как", "&Да", "[CLASS:Button; INSTANCE:1]")
Case WinExists("Загрузка завершена.") And WinActive("Загрузка завершена.")
ControlClick("Загрузка завершена.", "", "[CLASS:Button; INSTANCE:4]")
ExitLoop
EndSelect
WEnd
EndFunc ;==>_go_to_url
пример ошибки