BAS вылетает по таймауту на действии «Проверить существование» (я сойду с ума с этой проблемой!)



  • У меня скрипт собирает телефоны из объявлений на olx.pl.
    Вот пример странички с объявлениями:
    https://www.olx.pl/rolnictwo/produkty-rolne/q-ziemniaki/?view=list&page=1
    Скрипт последовательно заходит в каждое объявление и нажимает на кнопку «Получить телефон».
    Это делается на каждой страничке (внизу пейджинация).

    После того, как скрипт обходит примерно 10 страничек, собрав примерно 350 телефонов, скрипт вылетает по таймауту на действии «Проверить существование».

    0_1551427214641_1.png

    Странность в том, что действие это не зависит от ответа сервера. Допустим, предположительно на olx.pl есть защита, которая отрубает коннект к серваку, если видит, что этот браузер собирает слишком много телефонов.
    НО!!!!!! Даже если такое происходит, никто не должен помешать BAS'у выполнить поиск элемента на уже загруженном html коде! А на практике выходит, что BAS как будто зависает намертво.

    Как я пытался решить эту проблему.

    Для начала я обернул действие «Проверить существование» в блок игнорирования ошибок.

    Попытка 1
    Сделал так, чтобы при возникновении ошибки автоматом выполнялся код яваскрипт для обновления странички и потом снова выполнялась попытка выполнить действие «Проверить существование»:

    0_1551427793820_2.PNG

    При этом по таймауту вылетает на действии «Яваскрипт».

    Попытка 2
    Сделал так, чтобы при возникновении ошибки автоматом закрывался браузер, затем снова открывался, загружалась страничка и потом снова выполнялась попытка выполнить действие «Проверить существование».

    0_1551427964902_3.PNG

    При этом после загрузки браузера скрипт не продолжается вообще (есть подозрение, что браузер не открывается должным образом).

    Вот что я вижу после того, как браузер откроется:

    0_1551428117086_4.png

    Попытка 3
    Отключил антивирус Касперского. Думал, может быть он как-то блокирует BAS.
    Но и это не помогло!!!!!

    Инет на компе стабильный, Windows не засыпает вообще никогда.

    У меня подозрение, что по прошествии какого-то времени браузерный движок намертво зависает. Да так, что не может выполнить яваскрипт и даже не помогает переоткрытие самого браузера.

    Я сойду с ума с этой проблемой!!!!! Помогите!!!!! С меня пиво, если всё заработает!
    Админ, если нужен скрипт полностью - пишите в личку, не хотел бы пока обнародовать его.



  • @morozover
    Ошибки можно игнорировать не только соответствующим действием, но и путём перезапуска потока.
    Пробовали?



  • @xclsv Можно поподробнее, как это сделать?



  • @morozover
    Ставите в настройках скрипта -1 в параметрах количества неудач. В случае если вылетит ошибка, поток просто перезапустится.
    Учтите, что фактически это равноценно перезапуску скрипта. Чтобы продолжать действия с учетом предыдущих, распределяйте данные через ресурсы.



  • @Fox Очень бы хотелось, чтобы вы обратили внимание на эту проблему!



  • @morozover said in BAS вылетает по таймауту на действии «Проверить существование» (я сойду с ума с этой проблемой!):

    @Fox Очень бы хотелось, чтобы вы обратили внимание на эту проблему!

    Оборачиваешь в игнор и при ошибке меткой вернись и загрузи еще раз страницу через действие загрузить. Причем само действие загрузить тоже надо в игнор.
    не надо через reload ява скрипт обновлять, там он лажает дико.



  • @morozover said in BAS вылетает по таймауту на действии «Проверить существование» (я сойду с ума с этой проблемой!):

    @Fox Очень бы хотелось, чтобы вы обратили внимание на эту проблему!

    Раз пагинация происходит на одной и той же странице, то перед переходом на следующую страницу удалите какой нибудь элемент на странице, а после клика ожидайте появления этого элемента. Скидывайте скрипт, покажу нагляднее.


    В этой теме, в конце, прикрепил тестовый скрипт с этой же логикой.


Log in to reply
 

  • 9
  • 5
  • 12
  • 17
  • 9
  • 4
  • 1
  • 8