:point_left: Click on this link to run the latest Spyder version in your browser.
:point_left: Click on this link to check the next Spyder 5 version.
:point_left: Click on this link to test changes in our master branch.
How Spyder looks
Help support Spyder, the community-developed scientific IDE!
Spyder development is made possible by contributions from our global user community, along with organizations like NumFOCUS and Quansight. There are numerous ways you can help, many of which don’t require any programming. If you’d like to make a donation to help fund further improvements, we’re on OpenCollective.
Thanks for all you do to make the Spyder project thrive! More details
Overview
Spyder is a powerful scientific environment written in Python, for Python, and designed by and for scientists, engineers and data analysts. It offers a unique combination of the advanced editing, analysis, debugging, and profiling functionality of a comprehensive development tool with the data exploration, interactive execution, deep inspection, and beautiful visualization capabilities of a scientific package.
Мальчик Удивил Человека-Паука и Хищника #shorts
Beyond its many built-in features, its abilities can be extended even further via its plugin system and API. Furthermore, Spyder can also be used as a PyQt5 extension library, allowing you to build upon its functionality and embed its components, such as the interactive console, in your own software.
For more general information about Spyder and to stay up to date on the latest Spyder news and information, please check out our new website.
Core components
- Editor Work efficiently in a multi-language editor with a function/class browser, real-time code analysis tools ( pyflakes , pylint , and pycodestyle ), automatic code completion ( jedi and rope ), horizontal/vertical splitting, and go-to-definition.
- Interactive console Harness the power of as many IPython consoles as you like with full workspace and debugging support, all within the flexibility of a full GUI interface. Instantly run your code by line, cell, or file, and render plots right inline with the output or in interactive windows.
- Documentation viewer Render documentation in real-time with Sphinx for any class or function, whether external or user-created, from either the Editor or a Console.
- Variable explorer Inspect any variables, functions or objects created during your session. Editing and interaction is supported with many common types, including numeric/strings/bools, Python lists/tuples/dictionaries, dates/timedeltas, Numpy arrays, Pandas index/series/dataframes, PIL/Pillow images, and more.
- Development tools Examine your code with the static analyzer, trace its execution with the interactive debugger, and unleash its performance with the profiler. Keep things organized with project support and a built-in file explorer, and use find in files to search across entire projects with full regex support.
Documentation
You can read the Spyder documentation online on the Spyder Docs website.
Обучение Spider Project «ИСО» Продакшн ч. 1
Installation
For a detailed guide to installing Spyder, please refer to our installation instructions.
The easiest way to install Spyder on any of our supported platforms is to download it as part of the Anaconda distribution, and use the conda package and environment manager to keep it and your other packages installed and up to date.
If in doubt, you should always install Spyder via this method to avoid unexpected issues we are unable to help you with; it generally has the least likelihood of potential pitfalls for non-experts, and we may be able to provide limited assistance if you do run into trouble.
Other installation options exist, including:
- The WinPython distribution for Windows
- The MacPorts project for macOS
- Your distribution’s package manager (i.e. apt-get , yum , etc) on Linux
- The pip package manager, included with most Python installations
However, we lack the resources to provide individual support for users who install via these methods, and they may be out of date or contain bugs outside our control, so we recommend the Anaconda version instead if you run into issues.
Troubleshooting
Before posting a report, please carefully read our Troubleshooting Guide and search the issue tracker for your error message and problem description, as the great majority of bugs are either duplicates, or can be fixed on the user side with a few easy steps. Thanks!
Contributing and Credits
Spyder was originally created by Pierre Raybaut, and is currently maintained by Carlos Córdoba and an international community of volunteers.
You can join us—everyone is welcome to help with Spyder! Please read our contributing instructions to get started!
See NOTICE.txt for full legal information.
Running from a git clone
Please see the instructions in our Contributing guide to learn how to do run Spyder after cloning its repo from Github.
Dependencies
Important Note: Most or all of the dependencies listed below come with Anaconda and other scientific Python distributions, so you don’t need to install them separately in those cases.
Build dependencies
When installing Spyder from its source package, the only requirement is to have a Python version equal or greater than 3.7.
Runtime dependencies
The basic dependencies to run Spyder are:
- Python 3.7+: The core language Spyder is written in and for.
- PyQt5 5.9+: Python bindings for Qt, used for Spyder’s GUI.
The rest our dependencies (both required and optional) are declared in this file.
Sponsors
Spyder is funded thanks to the generous support of
and the donations we have received from our users around the world through Open Collective:
Источник: pypi.org
Фреймворк для парсинга Grab:Spider
Я автор python библиотеки Grab, которая упрощает написание парсеров веб-сайтов. Я о ней писал вводную статью некоторое время назад на хабре. Недавно я решил вплотную занять парсингом, стал искать free-lance заказы по парсингу и мне понадобился инструмент для парсинга сайтов с большим количеством страниц.
Раньше я реализовывал мультипоточные парсеры с помощью python-тредов с помощью такой вот библиотечки. У threading-подхода есть плюсы и минусы. Плюс в том, что мы запускаем отдельный поток(thread) и делаем в нём, что хотим: можем делать последовательно несколько сетевых вызовов и всё это в пределах одного контекста — никуда не надо переключаться, что-то запоминать и вспоминать. Минус в том, что треды тормозят и жрут память.
Работать с сетевыми ресурсами асинхронно. Есть только один поток выполнения программы, в которм выполняется вся логика обработки данных по мере готовности этих данных, сами данные загружаются асинхронно. На практике это позволяет не особо напрягаясь работать с сетью в несколько сотен потоков, если вы попробуете запустить столько тредов, то они будут нешуточно тормозить.
Так вот, я написал интерфейс к multicurl — это часть библиотеки pycurl, которая позволяет работать с сетью асинхронно. Я выбрал multicurl, потому что Grab использует pycurl и я подумал, что мне удастся использовать его и для работы с multicurl. Так оно и вышло. Я был даже несколько удивлён, что в первый же день экспериментов оно заработало 🙂 Архитектура парсеров на базе Grab:Spider весьма похожа на парсеры на базе фреймворка scrapy, что, в общем, не удивительно и логично.
Приведу пример простейшего паука:
# coding: utf-8 from grab.spider import Spider, Task class SimpleSpider(Spider): initial_urls = [‘http://ya.ru’] def task_initial(self, grab, task): grab.set_input(‘text’, u’ночь’) grab.submit(make_request=False) yield Task(‘search’, grab=grab) def task_search(self, grab, task): for elem in grab.xpath_list(‘//h2/a’): print elem.text_content() if __name__ == ‘__main__’: bot = SimpleSpider() bot.run() print bot.render_stats()
Что тут происходит?
Для каждого URL в `self.initial_urls` создаётся задание с именем initial, после того как multicurl скачивает документ, вызывается обработчик с именем `task_initial`. Самое главное, это то, что внутри обработчика мы получаем Grab-объект связанный с запрошенным документом: мы можем использовать практические любые функции из Grab API. В данном примере, мы используем его работу с формами. Обратите внимание, нам нужно указать параметр `make_request=False`, чтобы форма не отсылалась тут же, ибо мы хотим, чтобы этот сетевой запрос был обработан асинхронно.
В кратце, работа с Grab:Spider сводится к генерации запросов с помощью Task объектов и дальнейшей их обработке в специальных методах. У каждого задания есть имя, именно по нему потом выбирается метод для обработки запрошенного сетевого документа.
Создать Task объект можно двумя способами. Простой способ:
Task(‘foo’, url=’http://google.com’)
После того как документ будет полностью скачан из сети, будет вызван метод с именем `task_foo`
Более сложный способ:
g = Grab() g.setup(. настраиваем запрос как угодно. ) Task(‘foo’, grab=g)
Этим способом мы можем настроить параметры запроса в соответствии с нашими нуждами, выставить куки, специальные заголовки, сгенерировать POST-запрос, что угодно.
В каких местах можно создавать запросы? В любом методе-обработчике можно сделать yield Task объекта и он будет добавлен в асинхроннную очередь для скачивания. Также можно вернуть Task объект через return. Кроме того есть ещё два пути генерации Task объектов.
1) Можно указать в аттрибуте `self.initial_urls` список адресов и для них будут созданы задания с именем ‘initial’.
2) Можно определить метод `task_generator` и yield’ить в нём сколько угодно запросов. Причём новые запросы из него будут браться по мере выполнения старых. Это позволяет например без проблем проитерировать по миллиону строк из файла файла и не засирать, ой простите, засорять, ими всю память.
Первоначально я планировал сделать обработку извлечённых данных как в scrapy. Там это сделано с помощю Pipeline объектов. Например, вы получили страницу с фильмом, пропарсили её и вернули Pipeline объект с типом Movie. А ещё предварительно вы написали в конфиге, что Movie Pipeline должен сохраняться в базу данных или в CSV-файл. Как-то так.
На практике оказалось, что проще не заморачиваться с дополнительной обёрткой и писать данные в БД или в файл сразу в методе обработчике запроса. Конечно, это не будет работать в случае распараллеливания методов по облаку машин, но до этого момента ещё надо дожить, а пока удобнее делать всё непосредственно в методе обработчике.
Task объекту можно передавать дополнительные аргументы. Например, мы делаем запрос в google поиск. Формируем нужный url и создаём Task объект: Task(‘search’, url=’. ‘, query=query) Далее в методе `task_search` мы сможем узнать какой именно запрос мы искали, обратившись к аттрибуту `task.query`
Grab:spider автоматически пытается исправить сетевые ошибки. В случае network timeout он выполняет задание ещё раз. Количество попыток вы можете настраивать с помощью `network_try_limit` опции при создании Spider объекта.
Надо сказать, что писать парсеры в асинхронном стиле мне очень понравилось. И дело не только в том, что асинхронный подход меньше нагружает ресурсы системы, но также в том, что исходный код парсера приобретает чёткую и понятную структуру.
К сожалению, чтобы досконально описать работу Spider модуля потребуется много времени. Просто хотел рассказать армии пользователей библиотеки Grab, коя, я знаю, насчитывает несколько человек, об одной из возможностей, покрытой мраком недодокументации.
Резюме. Если вы используете Grab, поглядите spider модуль, возможно, вам понравится. Если вы не знаете, что такое Grab, возможно вам лучше поглядеть фреймворк scrapy он документирован в сто крат краше нежели Grab.
P.S. Использую mongodb, чтобы хранить результаты парсинга — она просто офигенна 🙂 Только не забудьте поставить 64bit систему, иначе больше двух гигабайт базу не сможете создать.
P.S. Пример реального парсера для парсинга сайта dumpz.org/119395
P.S. Официальный сайт проекта grablib.org (там ссылки на репозиторий, гугл-группу и документацию)
P.S. Пишу на заказ парсеры на базе Grab, подробности тут grablab.org
Источник: habr.com
Спайдер Проджект
Компания Спайдер Проджект является головной компанией группы Spider Project Team, в которую входят партнеры компании в разных городах России, а также в Бразилии, Австралии, Израиле, Казахстане, Румынии, США, Колумбии, Украине.
Спайдер Проджект – ведущая Российская консалтинговая компания в области управления проектами, производитель системы управления проектами Spider Project, занимающей лидирующее положение на рынке профессиональных систем управления проектами.
Деятельность компании охватывает следующие основные направления:
- Разработка и распространение системы управления проектами Spider Project – наиболее функциональной из имеющихся на мировом рынке профессиональных программ для управления проектами.
- Внедрение современных методов и средств управления проектами.
- Консалтинг в области управления проектами.
- Управление проектами в интересах Заказчика.
- Обучение современным технологиям управления проектами.
Компания “Спайдер Проджект” проводит обучение методам и средствам управления проектами не только в России, но и в других странах. Кроме России компания проводила обучение в Белоруссии, Бразилии, Германии, Казахстане, Румынии, США, Турции, Украине, Франции.
Система Spider Project – наиболее мощное и удобное средство управления проектами, оставившее далеко позади западные аналоги. Первая версия системы была выпущена в 1992 году и уже в 1993 году демонстрировалась на выставках в России, а также в Лейпциге и Мюнхене. С тех пор система непрерывно совершенствуется и сейчас не имеет себе равных по функциональным возможностям. Особо отметим оптимизацию планов – расписания реализации проектов, которые составляет Spider Project, получаются короче, чем в западных системах, на 10-15%, что позволяет экономить очень большие средства.
В настоящее время Spider Project используется в 34 странах мира и в большинстве крупных программ России. Среди многих тысяч пользователей системы представители всех отраслей экономики – Мостотрест, СК Мост, Моспромстрой, Трансстрой, Трансюжстрой, Русская Инжиниринговая Компания, концерн Алмаз-Антей, Ракетный Центр им. Макеева, Объединенная Приборостроительная Корпорация, РЖД, Лукойл, Курорты Северного Кавказа, Росморпорт, Арена 2018, Petrobras, Hill International, Odebrecht, Hidroconstructia, Mostogradnja, Thyssen Shachtbau, Embrayer, Van Oord, Romtelecom, FUJIFILM Diosynth Biotechnologies, Brasilia Electric Company и многие другие.
Spider Project – мощный инструмент для внедрения технологии управления проектами. Мы внедряем не только программное обеспечение, но и технологии управления проектами, и такое внедрение часто связано и с бизнес реинжинирингом предприятий, и с решением организационных вопросов, и с обучением сотрудников, и с изменением системы сбора и обработки информации. Только комплексная система управления проектами позволяет добиться максимального эффекта.
Источник: www.spiderproject.ru