сайты, чтобы узнать существует страница или нет. То есть получить код ответа: 200 — страница существует, 404 — нет страницы.
Использую код Value.Metadata( Web.Contents( [Ссылка на сайт], [Timeout = #duration(0, 0, 0, 2), ManualStatusHandling={200,400,401,403,404,429,500,503}] ) )[Response.Status]
С единичными сайтами работает отлично, но у меня в таблице более 1000 ссылок на несколько десятков сайтов. Столкнулся с тем, что PQ может тупить и не всегда получает код ответа. Решил это повторным «простукиванием» ссылок по которым нет результата.
Но сейчас возникла новая проблема. Есть сайт www.ari-on.ru на котором PQ знатно зависает. Обнаружил, что ровно 64 ссылки на этот сайт PQ обрабатывает быстро и нормально, а на 65-й ссылке начинает висеть. Ограничил время ожидания ответа 2 секундами (Timeout), чтобы PQ не ждал каждый раз 100 секунд. В итоге PQ очень бодро проверяет первые 64 ссылки, потом тратит на каждую последующую 2 секунды. Иногда получает ответ, иногда нет.
Короче мой вопрос. Можно ли как-то сделать так, чтобы PQ стучался на сайт не так активно, а по одной ссылке раз в несколько секунд? То есть чтобы при переходе на новую строку, где лежит новая ссылка PQ делал паузу. У меня одно догадка, что сайт блокирует такие частые запросы. А чтобы проверить это нужна задержка (Timeout такой задержкой не является, как я понимаю). Или как-то по другому может быть можно проверить массово коды ответа страниц?
Function.InvokeAfter для задержки
я понимаю, что для PQ ответ странный, но не проще этот блок делать на питоне и возвращать результат хоть массивом, хоть апдейтом таблицы?
Прошлым летом мучился, надо было парсить данные СМЕ (выдирать часть в БД на своем сервере), а там стоит туповатый, но блочок на скриптовые запросы. Причем подлый такой - не отрубает, а возвращает пустой массив. В итоге добавили эмуляцию запроса через Selenium, все работает скоро год как (ттт).
Ох, как-нибудь надо будет изучить всё это конечно)
Обсуждают сегодня