Пишемо і компілюємо консольний htmlunit-браузер для допомоги google в індексації javascript-контенту

З Java-розробкою на Ubuntu справи йдуть непогано. Досить встановити пакет з Eclipse зі сховищ, щоб отримати повноцінну середу розробки. Автоматично завантажить і встановляться всі необхідні Java-пакети.

В Ubuntu 11.10 встановиться Eclipse 3.7. При першому запуску Eclipse попросить вказати каталог, де за замовчуванням будуть зберігатися проекти (наприклад, / home / user / workspace). Після запуску Eclipse вибираємо в верхньому меню File -> New -> Java Project. У діалоговому вікні створення проекту вказуємо його ім'я (наприклад, htmlunit), переконуємося, що вибрано оточення JRE JavaSE-1.6 і тиснемо кнопку «Finish». Тепер в каталозі / home / user / workspace / htmlunit у нас знаходиться новий проект для нашого майбутнього headless-браузера.

Далі йдемо на офіційний сайт HtmlUnit і викачуємо останню версію бібліотеки. На момент написання статті це була версія 2.9. Розпаковуємо архів з HtmlUnit куди-небудь, наприклад, в каталог з нашим проектом: / home / user / workspace / htmlunit / src / lib. Потім потрібно включити бібліотеки HtmlUnit в наш проект. Для цього у верхньому меню Eclipse вибираємо Project -> Properties. У діалоговому вікні властивостей проекту вибираємо розділ Java Build Path, потім натискаємо на вкладку Libraries і за допомогою кнопки «Add External JARs» додаємо до бібліотеки JRE System Library [java-6-openjdk] бібліотеки HtmlUnit.

Тепер у нас є повністю налаштована середовище розробки Java-додатків з бібліотеками HtmlUnit, і ми можемо приступити безпосередньо до написання коду. Для цього створимо головний і єдиний файл класу в нашому проекті. Вибираємо в головному меню File -> New -> Class і в діалоговому вікні вказуємо назву (Name) нашого нового класу (наприклад, htmlunit), після чого Eclipse створить новий файл /home/user/workspace/htmlunit/src/htmlunit.java.

Після цього залишається тільки зануритися в приклади програм на офіційному сайті HtmlUnit і написати додаток, відповідне нашим вимогам. Тому консольний додаток для автоматичної генерації статичних html-сторінок (snapshots) має відповідати наступним вимогам:

В результаті дотримання цих вимог у мене вийшов наступний код для самого простого headless-браузера на HtmlUnit:

Ось і ми майже і дісталися до нашої мети - додаток написано, залишилося його скомпілювати і отримати в результаті виконуваний JAR-файл, який можна буде запускати в консолі. Для цього у верхньому меню Eclipse вибираємо File -> Export, в першому діалоговому вікні вибираємо Java -> Runnable JAR File, а в другому - в рядку Export Destination вказуємо розташування і назва JAR-файлу, і в Library handling відзначаємо «Package required libraries into generated JAR ».

Запустити наш headless-браузер з консолі Linux досить просто:

Особливу увагу зверніть на рядок «putenv ( 'LANG = ru_RU.UTF-8');" - без неї не вийде коректно вивести в консоль текст в кодуванні UTF-8, отриманий від консольного застосування.

Це всього лише простий приклад використання бібліотеки HtmlUnit. У неї величезна кількість можливостей. І наведений код headless-браузера можна поліпшити під свої власні цілі.

Вихідний код проекту і відкомпільований JAR-файл можна завантажити зі сховищ на Github.