Perl WWW::Mechanize:: Реализация времени ожидания Firefox

Я использую WWW::Mechanize::Firefox вместе с плагином MozRepl в Firefox. Код работает правильно для получения контента с сайтов, отправляя им HTTP-запрос GET.

Я просматриваю список URL-адресов и отправляю HTTP-запрос GET каждому из них.

Однако, если запрос зависает на определенном URL, он продолжает ждать.

Обратите внимание, что я имею в виду случаи, когда часть содержимого веб-страницы загружается, а часть содержимого еще не завершена. Это происходит в тех случаях, когда веб-страница загружает много контента со сторонних сайтов, и если один из ресурсов (например, изображение) не может быть загружен, браузер продолжает ждать его.

Я хочу, чтобы запрос истекал через 'n' секунд, чтобы я мог прочитать следующий URL из списка и продолжить выполнение кода.

В модуле WWW::Mechanize perl конструктор поддерживал параметр времени ожидания, как показано ниже:

$mech=WWW::Mechanize->new(timeout => 10);

Однако я не смог найти подобную опцию в документации для модуля Perl, WWW::Mechanize::Firefox здесь:

http://metacpan.org/pod/WWW::Mechanize::Firefox

Я попробовал это:

$mech=WWW::Mechanize::Firefox->new(timeout => 10);

Но я думаю, что это не работает, так как есть еще сайты, на которые висит запрос.

1 ответ

WWW::Mechanize::Firefox использует Mozrepl для соединения с браузером Firefox, поэтому вам не нужно объявлять параметр timeout, потому что Firefox будет ждать загрузки страницы.

Если вы хотите проверить, действительно ли сайт полностью загружен, вы должны проверить, что элемент, который вы хотите (например, div) настоящее:

while (!$mech->is_visible( xpath => '//div[@class="myDivClassAtHtml"]')) {
          sleep 1;
}; 
# do something with your page
Другие вопросы по тегам