Генератор парсеров BrowserExt

loadpage

Загружает страницу по заданному url и выполняет операторы и функции заданные в теле loadpage.

[@multi] loadpage(url, [method = 'get', [params = dict(), [encoding = 'UTF-8', [headers = array()]]]]) {
    тело loadpage
}
    

Параметры:

url Строка с адресом страницы или массив строк с адресами.
method Строка, задающая метод загрузки страницы. Может быть 'get' или 'post'.
params Параметры, передаваемые при загрузке страницы. Если method = 'get', параметры будут автоматически добавлены к url.
encoding Оригинальная кодировка страницы на сервере. Требуется для правильной передачи параметров при post запросе.
headers Заголовки, передаваемые при загрузке страницы. Массив строк. Через этот параметр можно, например, передать cookie.

Если url является массивом, то loadpage по очереди загружает страницы, и для каждой страницы выполняется тело. Внутри тела доступен словарь pageparams c параметрами загруженной страницы:

pageparams['page'] Строка, содержащая html-код страницы
pageparams['url'] url загруженной страницы. Если страница загружалась методом get и были указаны параметры через params, то url содержит также и параметры
pageparams['effectiveurl'] Окончательный url загруженной страницы. Окончательный url отличается от заданного url если, например, был redirect страницы. При запуске в Редакторе скрипта данный параметр не поддерживается.
pageparams['domain'] Домен загруженной страницы. Например для страницы http://site.com/123.html домен будет http://site.com/
pageparams['encoding'] Оригинальная кодировка страницы на сервере. Страница, загруженная через loadpage, всегда перекодируется в UTF-8
pageparams['headers'] Строка заголовков, которые были переданы при загрузке страницы. При запуске в Редакторе скрипта данный параметр не поддерживается.

Тело loadpage обладает локальной областью видимости, поэтому переменные, объявленные внутри loadpage, видны только внутри данного тела и не видны как за его пределами, так и в теле вложенного loadpage.

Если задана директива @multi, то загрузка будет производиться параллельно, если в качестве параметра передан массив ссылок.

Для сбора данных с загруженной страницы используются get-функции (gettext, getlink и другие). Если в теле loadpage необходимо добавить адреса в очередь загрузки, то используется функция continue. Для генерации по шаблону массива адресов страниц можно воспользоваться функцией generateurl.

Пример 1. Простая загрузка страницы и получение всех ссылок:

Пример 2. Загрузка страницы с параметрами:

Есть возможность передать параметр в тело loadpage, для этого необходимо после списка параметров указать значение или переменную в квадратных скобках. Значение этого параметра будет доступно в теле loadpage как значение переменной passparams. Также параметр в очередной loadpage можно передать при помощи второго параметра функции continue.

Пример 3. Передача параметра в тело loadpage: