BasiliskJS - Scriptable Headless WebKit
=========================
`BasiliskJS <https://pypi.python.org/pypi/BasiliskJS>`_ Представляет собой WebKit для python, основан на `PhantomJS <http://phantomjs.org>`_ .
Возможность
============
- **Быстрое тестирование**. Возможность быстрого тестирования без браузера!
- **Автоматизация dom**. Простой интерфейс.
- **Работа с js**. Есть возможность выполнять JavaScript, парсинг динамических страниц.
- **Захват экрана**. Возможность сделать снимок страницы любого размера.
Пример работы
-------------
Простой get запрос на https://github.com/lich666dead/BasiliskJS.
.. code-block:: python
>>> 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.
.. code-block:: python
>>> from basilisk import PhantomJS
>>> PhantomJS().post("https://github.com/lich666dead/BasiliskJS", {'post_data': 'post_data'})
{'status': 'success', 'urls': ['https://github.com/lich666dead/BasiliskJS']}
Запрос с выполнением js.
.. code-block:: python
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 библиотеку.
.. code-block:: python
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 контент:
.. code-block:: python
>>> from basilisk import PhantomJS
>>> PhantomJS(content=True).get('http://phantomjs.org/')
Событие закрытие браузер зависит от параметра (conversion). Это количество переходов по ссылки.
Теперь можно переходить по ссылкам, этим параметром нужно пользоваться осторожно,
иначе можно вызвать зацикливание.
Пример работы с параметром:
.. code-block:: python
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. Вы можете увидеть сообщения об ошибках и т.д.
Metadata
Release files for BasiliskJS 0.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| BasiliskJS-0.8.tar.gz | 8.6 kB | Without provenance | Details for BasiliskJS-0.8.tar.gz |
Release files / BasiliskJS-0.8.tar.gz
| Download URL | BasiliskJS-0.8.tar.gz |
|---|---|
| Size | 8.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f42d648b8b4c47e667080dbe8244e352c7a6f5165e72b330e31c85ae45398c9e
|
|
BLAKE2b-256 checksum How to use checksums |
7611aa669e437f0d2ab0a2ffcd8e1517f542965613a4a46d083028e465958531
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Security for BasiliskJS 0.8
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.