BasiliskJS

Web browser emulator, based on PhantomJS


Keywords
python, webkit
License
GPL-3.0
Install
pip install BasiliskJS==0.8

Documentation

BasiliskJS - Scriptable Headless WebKit

BasiliskJS Представляет собой WebKit для python, основан на PhantomJS .

Возможность

  • Быстрое тестирование. Возможность быстрого тестирования без браузера!
  • Автоматизация dom. Простой интерфейс.
  • Работа с js. Есть возможность выполнять JavaScript.
  • Захват экрана. Возможность сделать снимок страницы любого размера.

Пример работы

Простой get запрос на https://github.com/lich666dead/BasiliskJS.

>>> from basilisk import PhantomJS
>>> PhantomJS().get("https://github.com/lich666dead/BasiliskJS")
{'status': 'success', 'urls': ['https://github.com/lich666dead/BasiliskJS']}

Простой post запрос на https://github.com/lich666dead/BasiliskJS.

>>> from basilisk import PhantomJS
>>> PhantomJS().post("https://github.com/lich666dead/BasiliskJS", {'post_data': 'post_data'})
{'status': 'success', 'urls': ['https://github.com/lich666dead/BasiliskJS']}

Запрос с выполнением js.

from basilisk import PhantomJS

js = '''
var temp = {};
for (var i = 0; i != document.getElementsByClassName('nav-item-name').length; i++) {
    temp[i] = document.getElementsByClassName('nav-item-name')[i].innerText;
 }
 return temp;
 '''
 bs = PhantomJS()

 bs.evaluate(js)

 print(bs.get("http://phantomjs.org/documentation/"))

 result = {
 'status': 'success',
 'js': {
      '0': 'Download', '1': 'Build',
      '2': 'Releases', '3': 'Release Names',
      '4': 'REPL', '5': 'Quick Start',
      '6': 'Headless Testing', '7': 'Screen Capture',
      '8': 'Network Monitoring', '9': 'Page Automation',
      '10': 'Inter Process Communication', '11': 'Command Line Interface',
      '12': 'Troubleshooting', '13': 'FAQ',
      '14': 'Examples', '15': 'Best Practices',
      '16': 'Tips and Tricks', '17': 'Supported Web Standards',
      '18': 'Buzz', '19': "Who's using PhantomJS?",
      '20': 'Related Projects', '21': 'Contributing',
      '22': 'Source Code', '23': 'Test Suite',
      '24': 'Release Preparation', '25': 'Crash Reporting',
      '26': 'Bug Reporting'
      },
 'urls': ['http://phantomjs.org/documentation/']
 }

Метод include_js позволяет ипортировать любую js библиотеку.

from basilisk import PhantomJS

js = '''
var $loginForm = $('form#login');
$loginForm.find('input[name="username"]').value('phantomjs');
$loginForm.find('input[name="password"]').value('c45p3r');'''

bs = PhantomJS()

bs.include_js("https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js")

bs.evaluate(js)

bs.get("http://phantomjs.org/documentation/")

Показать html контент:

>>> from basilisk import PhantomJS
>>> PhantomJS(content=True).get('http://phantomjs.org/')

Событие закрытие браузер зависит от параметра (conversion). Это количество переходов по ссылки. Теперь можно переходить по ссылкам, этим параметром нужно пользоваться осторожно, иначе можно вызвать зацикливание. Пример работы с параметром:

from basilisk import PhantomJS

js = '''
document.getElementById('projectUrl1').value = 'phantomjs.org';
document.getElementById('button1').click();'''

bs = PhantomJS(conversion=2)

bs.evaluate(js)

print(bs.get("https://altrumseo.ru/"))

result = {'status': 'success', 'js': None, 'urls': ['https://altrumseo.ru/', 'https://altrumseo.ru/analitics/']}

Как видно у нас в масиве 2 url, закрытие браузер работает на событие, зависищие от параметра (conversion). Например если параметра conversion=3, то выполнение просто не зациклится!

Параметры инициализатора:

  • url. - url для get запроса.
  • content. - Паказать content, по умолчанию( False ).
  • image_size. - Размер изоброжения по умолчанию( {'width': 1920, 'height': 1080} ).
  • add_cookie. - Дает возможность изменить cookie.
  • screenshot. - Сделать скриншот, по умолчанию( False ).
  • image_name. - Путь, название выходного изображения.
  • get_cookies. - Получить cookies, по умолчанию( False ).
  • user_agent. - Изменить user-agent.
  • load_images. - Загрузка изображений на странице, по умолчанию( False ).
  • command. - Параметр отвечает за путь к браузеру phantomjs.
  • conversion. - Количество переходов на странице.

Развитие

На данный момент я на стадии Pre-Alpha. Вы можете увидеть сообщения об ошибках и т.д.