SlideShare a Scribd company logo
Python:
инструменты решения
типичных задач
sapronov.alexander92@gmail.com
@sapronovalex92
pynsk.nsk@gmail.com
vk.com/pynsk
facebook.com/PyNskCom
@py_nsk
Александр Сапронов:
В начале был... Гвидо!
В феврале 1991 года
опубликован код языка
2
Популярность сейчас
6 место
6 место
4 место
1 место
60k+ модулей на
pypi.python.org
3
➔Скриптинг приложений (Blender,
Inkscape)
➔Сетевые приложения (ABC bittorrent
client)
➔Для “склейки” компонентов
➔Web-проекты
➔Игры
➔Системные утилиты
➔GUI-программы
Где Python хорош?
4
Python не подходит для
Задач где:
- нужен максимально быстрый отклик
- требуется крайне низкое потребление
RAM
- надо быстро масштабировать решение
5
Типичные задачи
- Парсеры
- Генерация отчетов
- CMS, простые сайты
- SRM, CRM
- Моделирование (Наука)
- Обработка данных
- Утилиты c GUI
- Утилиты консольные
6
Парсинг
7
stdlib: HTMLParser (2), html.parser (3)
LXML, Beautiful Soup
from html.parser import HTMLParser
class MyHTMLParser(HTMLParser):
def handle_starttag(self, tag, attrs):
print("Encountered a start tag:", tag)
def handle_endtag(self, tag):
print("Encountered an end tag :", tag)
def handle_data(self, data):
print("Encountered some data :", data)
parser = MyHTMLParser()
parser.feed('<html><head><title>Test</title></head>'
'<body><h1>Parse me!</h1></body></html>')
(2) - Python 2.*
(3) - Python 3.*
2. Парсим HTML/XML с помощью
1. Делаем запросы с помощью
urlib, requests
Парсинг по взрослому
grab - http://grablib.org/
scrapy - http://scrapy.org/
8
import scrapy
class BlogSpider(scrapy.Spider):
name = 'blogspider'
start_urls = ['http://blog.scrapinghub.com']
def parse(self, response):
for url in response.css('ul li a::attr("href")').re(r'.*/dddd/dd/$'):
yield scrapy.Request(response.urljoin(url), self.parse_titles)
def parse_titles(self, response):
for post_title in response.css('div.entries > ul > li
a::text').extract():
yield {'title': post_title}
$ scrapy runspider myspider.py
Генерация отчетов
9
Отчет
График PDF Excel
Генерация отчетов
10
Модуль для
создания
графики:
matplotlib
Генерация отчетов
11
PDF
- xhtml2pdf
- pdfkit
- PDFMiner
- PyPDF2
- reportlab
import pdfkit
pdfkit.from_url('http://google.com', 'out.pdf')
pdfkit.from_file('test.html', 'out.pdf')
pdfkit.from_string('Hello!', 'out.pdf')
Генерация отчетов
12
Excel
- xlrd (read)
- xlwt (write)
- xlutils
- XlsxWriter
- openpyxl
import xlsxwriter
workbook = xlsxwriter.Workbook('demo.xlsx')
worksheet = workbook.add_worksheet()
worksheet.set_column('A:A', 20)
bold = workbook.add_format({'bold': True})
worksheet.write('A1', 'Hello')
worksheet.write('A2', 'World', bold)
worksheet.write(2, 0, 123)
worksheet.write(3, 0, 123.456)
worksheet.insert_image('B5', 'logo.png')
workbook.close()
Генерация отчетов
13
Отчет
График PDF Excel
- xhtml2pdf
- pdfkit
- PDFMiner
- PyPDF2
- reportlab
- matplotlib - xlrd (read)
- xlwt (write)
- xlutils
- XlsxWriter
- openpyxl
Web
- CRM
- SRM
- CMS
- Web-store
- Sites
14
Наука и обработка данных
15
Утилиты с GUI
16
Консольные утилиты
- argparse
- optparse
- Clint
- Click
- docopt
- Cli
- Plac
- Cliff
17
import click
@click.command()
@click.option('--count', default=1, help='Number of greetings.')
@click.option('--name', prompt='Your name',
help='The person to greet.')
def hello(count, name):
for x in range(count):
click.echo('Hello %s!' % name)
if __name__ == '__main__':
hello()
$ python hello.py --count=3
Your name: John
Hello John!
Hello John!
Hello John!
18
sapronov.alexander92@gmail.com
@sapronovalex92
pynsk.nsk@gmail.com
vk.com/pynsk
facebook.com/PyNskCom
@py_nsk
PyNSK контакты: Мои контакты:
ru.linkedin.com/in/alexsapronov
Питоны кончились…
Вопросы?

More Related Content

Viewers also liked

Получаем текст веб-страниц из Python и как это работает
Получаем текст веб-страниц из Python и как это работаетПолучаем текст веб-страниц из Python и как это работает
Получаем текст веб-страниц из Python и как это работает
PyNSK
 
Python: легко и просто. Красиво решаем повседневные задачи.
Python: легко и просто. Красиво решаем повседневные задачи.Python: легко и просто. Красиво решаем повседневные задачи.
Python: легко и просто. Красиво решаем повседневные задачи.
Python Meetup
 
Мир Python функционалим с помощью библиотек
Мир Python  функционалим с помощью библиотекМир Python  функционалим с помощью библиотек
Мир Python функционалим с помощью библиотек
PyNSK
 
Commit ускоривший python 2.7.11 на 30% и новое в python 3.5
Commit ускоривший python 2.7.11 на 30% и новое в python 3.5Commit ускоривший python 2.7.11 на 30% и новое в python 3.5
Commit ускоривший python 2.7.11 на 30% и новое в python 3.5
PyNSK
 
Интерфейсы в Python
Интерфейсы в PythonИнтерфейсы в Python
Интерфейсы в Python
Andrew Svetlov
 
Чем Python плох для стартапа?
Чем Python плох для стартапа?Чем Python плох для стартапа?
Чем Python плох для стартапа?
PyNSK
 

Viewers also liked (6)

Получаем текст веб-страниц из Python и как это работает
Получаем текст веб-страниц из Python и как это работаетПолучаем текст веб-страниц из Python и как это работает
Получаем текст веб-страниц из Python и как это работает
 
Python: легко и просто. Красиво решаем повседневные задачи.
Python: легко и просто. Красиво решаем повседневные задачи.Python: легко и просто. Красиво решаем повседневные задачи.
Python: легко и просто. Красиво решаем повседневные задачи.
 
Мир Python функционалим с помощью библиотек
Мир Python  функционалим с помощью библиотекМир Python  функционалим с помощью библиотек
Мир Python функционалим с помощью библиотек
 
Commit ускоривший python 2.7.11 на 30% и новое в python 3.5
Commit ускоривший python 2.7.11 на 30% и новое в python 3.5Commit ускоривший python 2.7.11 на 30% и новое в python 3.5
Commit ускоривший python 2.7.11 на 30% и новое в python 3.5
 
Интерфейсы в Python
Интерфейсы в PythonИнтерфейсы в Python
Интерфейсы в Python
 
Чем Python плох для стартапа?
Чем Python плох для стартапа?Чем Python плох для стартапа?
Чем Python плох для стартапа?
 

Similar to Python инструменты решения типичных задач

Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центрМониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центрsportgid
 
Highload2009 Rybak Badoo Os
Highload2009 Rybak Badoo OsHighload2009 Rybak Badoo Os
Highload2009 Rybak Badoo OsHighLoad2009
 
Андрей Сибирёв "Ваше собственное облако — война за независимость"
Андрей Сибирёв "Ваше собственное облако — война за независимость"Андрей Сибирёв "Ваше собственное облако — война за независимость"
Андрей Сибирёв "Ваше собственное облако — война за независимость"
Yandex
 
Путь к Go на конкретном примере
Путь к Go на конкретном примереПуть к Go на конкретном примере
Путь к Go на конкретном примере
Sergey Xek
 
Язык программирования PHP. EasyCode. Стартовая презентация.
Язык программирования PHP. EasyCode. Стартовая презентация.Язык программирования PHP. EasyCode. Стартовая презентация.
Язык программирования PHP. EasyCode. Стартовая презентация.
Nikolaj Sarry
 
Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...
Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...
Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...
Igor Miniailo
 
Масштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаМасштабируемая архитектура фронтенда
Масштабируемая архитектура фронтенда
Roman Dvornov
 
DevOps для 1С
DevOps для 1СDevOps для 1С
DevOps для 1С
Alexey Lustin
 
Электронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark ScalaЭлектронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark Scala
Roman Zykov
 
Дмитрий Чирков, "Технологический стартап", занятие 4, 28.03.2012
Дмитрий Чирков, "Технологический стартап", занятие 4, 28.03.2012Дмитрий Чирков, "Технологический стартап", занятие 4, 28.03.2012
Дмитрий Чирков, "Технологический стартап", занятие 4, 28.03.2012ideaperm
 
Python-технология которую легко продавать!
Python-технология которую легко продавать!Python-технология которую легко продавать!
Python-технология которую легко продавать!
Aleksey Nakorenko
 
Введение в Python и Django
Введение в Python и DjangoВведение в Python и Django
Введение в Python и Django
Taras Lyapun
 
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
it-people
 
Flame graph: новый взгляд на старое профилирование
Flame graph: новый взгляд на старое профилированиеFlame graph: новый взгляд на старое профилирование
Flame graph: новый взгляд на старое профилирование
Кирилл Борисов
 
AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля...
AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля...AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля...
AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля...
JSC “Arcadia Inc”
 
Когда технологий много - iForum 2013
Когда технологий много - iForum 2013Когда технологий много - iForum 2013
Когда технологий много - iForum 2013Andrey Listochkin
 
Владислав Грязнов "Многозадачность в PHP"
Владислав Грязнов "Многозадачность в PHP"Владислав Грязнов "Многозадачность в PHP"
Владислав Грязнов "Многозадачность в PHP"
Fwdays
 
[RU] Connecting AutoCAD and Python (by Alex Bausk)
[RU] Connecting AutoCAD and Python (by Alex Bausk)[RU] Connecting AutoCAD and Python (by Alex Bausk)
[RU] Connecting AutoCAD and Python (by Alex Bausk)
Alexander Bausk
 
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
AVITO. Решаем проблемы по мере их поступления. Стачка 2013AVITO. Решаем проблемы по мере их поступления. Стачка 2013
AVITO. Решаем проблемы по мере их поступления. Стачка 2013Roman Pavlushko
 
Современный станок верстальщика
Современный станок верстальщикаСовременный станок верстальщика
Современный станок верстальщика
OdessaFrontend
 

Similar to Python инструменты решения типичных задач (20)

Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центрМониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
 
Highload2009 Rybak Badoo Os
Highload2009 Rybak Badoo OsHighload2009 Rybak Badoo Os
Highload2009 Rybak Badoo Os
 
Андрей Сибирёв "Ваше собственное облако — война за независимость"
Андрей Сибирёв "Ваше собственное облако — война за независимость"Андрей Сибирёв "Ваше собственное облако — война за независимость"
Андрей Сибирёв "Ваше собственное облако — война за независимость"
 
Путь к Go на конкретном примере
Путь к Go на конкретном примереПуть к Go на конкретном примере
Путь к Go на конкретном примере
 
Язык программирования PHP. EasyCode. Стартовая презентация.
Язык программирования PHP. EasyCode. Стартовая презентация.Язык программирования PHP. EasyCode. Стартовая презентация.
Язык программирования PHP. EasyCode. Стартовая презентация.
 
Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...
Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...
Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...
 
Масштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаМасштабируемая архитектура фронтенда
Масштабируемая архитектура фронтенда
 
DevOps для 1С
DevOps для 1СDevOps для 1С
DevOps для 1С
 
Электронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark ScalaЭлектронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark Scala
 
Дмитрий Чирков, "Технологический стартап", занятие 4, 28.03.2012
Дмитрий Чирков, "Технологический стартап", занятие 4, 28.03.2012Дмитрий Чирков, "Технологический стартап", занятие 4, 28.03.2012
Дмитрий Чирков, "Технологический стартап", занятие 4, 28.03.2012
 
Python-технология которую легко продавать!
Python-технология которую легко продавать!Python-технология которую легко продавать!
Python-технология которую легко продавать!
 
Введение в Python и Django
Введение в Python и DjangoВведение в Python и Django
Введение в Python и Django
 
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
 
Flame graph: новый взгляд на старое профилирование
Flame graph: новый взгляд на старое профилированиеFlame graph: новый взгляд на старое профилирование
Flame graph: новый взгляд на старое профилирование
 
AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля...
AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля...AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля...
AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля...
 
Когда технологий много - iForum 2013
Когда технологий много - iForum 2013Когда технологий много - iForum 2013
Когда технологий много - iForum 2013
 
Владислав Грязнов "Многозадачность в PHP"
Владислав Грязнов "Многозадачность в PHP"Владислав Грязнов "Многозадачность в PHP"
Владислав Грязнов "Многозадачность в PHP"
 
[RU] Connecting AutoCAD and Python (by Alex Bausk)
[RU] Connecting AutoCAD and Python (by Alex Bausk)[RU] Connecting AutoCAD and Python (by Alex Bausk)
[RU] Connecting AutoCAD and Python (by Alex Bausk)
 
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
AVITO. Решаем проблемы по мере их поступления. Стачка 2013AVITO. Решаем проблемы по мере их поступления. Стачка 2013
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
 
Современный станок верстальщика
Современный станок верстальщикаСовременный станок верстальщика
Современный станок верстальщика
 

More from PyNSK

Нейронные сети и Keras. Часть 1
Нейронные сети и Keras. Часть 1Нейронные сети и Keras. Часть 1
Нейронные сети и Keras. Часть 1
PyNSK
 
Нейронные сети и Keras. Часть 2
Нейронные сети и Keras. Часть 2Нейронные сети и Keras. Часть 2
Нейронные сети и Keras. Часть 2
PyNSK
 
Asyncio для процессинга распределенной базы данных
Asyncio для процессинга  распределенной базы данныхAsyncio для процессинга  распределенной базы данных
Asyncio для процессинга распределенной базы данных
PyNSK
 
Python для GameDev
Python для GameDevPython для GameDev
Python для GameDev
PyNSK
 
Python инструменты для нагрузочного тестирования
Python инструменты для нагрузочного тестированияPython инструменты для нагрузочного тестирования
Python инструменты для нагрузочного тестирования
PyNSK
 
Python, Django и корпоративные информационные системы
Python, Django и корпоративные информационные системыPython, Django и корпоративные информационные системы
Python, Django и корпоративные информационные системы
PyNSK
 
Настрой контент под пользователя!
Настрой контент под пользователя!Настрой контент под пользователя!
Настрой контент под пользователя!
PyNSK
 
Питон в малине
Питон в малинеПитон в малине
Питон в малине
PyNSK
 
Мой Python всегда со мной!
Мой Python всегда со мной!Мой Python всегда со мной!
Мой Python всегда со мной!
PyNSK
 
Как и зачем можно создать DSL на Python
Как и зачем можно создать DSL на PythonКак и зачем можно создать DSL на Python
Как и зачем можно создать DSL на Python
PyNSK
 
Во внутренности Kivy
Во внутренности KivyВо внутренности Kivy
Во внутренности Kivy
PyNSK
 
Зоопарк python веб-фреймворков
Зоопарк python веб-фреймворковЗоопарк python веб-фреймворков
Зоопарк python веб-фреймворков
PyNSK
 
Как Python Дайджест работает с внешней статикой
Как Python Дайджест работает с внешней статикойКак Python Дайджест работает с внешней статикой
Как Python Дайджест работает с внешней статикой
PyNSK
 
Применение behave+webdriver для тестирования Web-проектов
Применение behave+webdriver для тестирования Web-проектовПрименение behave+webdriver для тестирования Web-проектов
Применение behave+webdriver для тестирования Web-проектов
PyNSK
 
Ctypes в игровых приложениях на python
Ctypes в игровых приложениях на pythonCtypes в игровых приложениях на python
Ctypes в игровых приложениях на python
PyNSK
 
Оптимизация производительности Python
Оптимизация производительности PythonОптимизация производительности Python
Оптимизация производительности Python
PyNSK
 
JSON-RPC или когда rest неудобен
JSON-RPC или когда rest неудобенJSON-RPC или когда rest неудобен
JSON-RPC или когда rest неудобен
PyNSK
 
TestRail. Некоторые возможности интеграции.
TestRail. Некоторые возможности интеграции.TestRail. Некоторые возможности интеграции.
TestRail. Некоторые возможности интеграции.
PyNSK
 
"Модифицируй это!" или "Больше магии Python с помощью изменения AST"
"Модифицируй это!" или "Больше магии Python с помощью изменения AST""Модифицируй это!" или "Больше магии Python с помощью изменения AST"
"Модифицируй это!" или "Больше магии Python с помощью изменения AST"
PyNSK
 
Быстрый старт в gDrive API
Быстрый старт в gDrive APIБыстрый старт в gDrive API
Быстрый старт в gDrive API
PyNSK
 

More from PyNSK (20)

Нейронные сети и Keras. Часть 1
Нейронные сети и Keras. Часть 1Нейронные сети и Keras. Часть 1
Нейронные сети и Keras. Часть 1
 
Нейронные сети и Keras. Часть 2
Нейронные сети и Keras. Часть 2Нейронные сети и Keras. Часть 2
Нейронные сети и Keras. Часть 2
 
Asyncio для процессинга распределенной базы данных
Asyncio для процессинга  распределенной базы данныхAsyncio для процессинга  распределенной базы данных
Asyncio для процессинга распределенной базы данных
 
Python для GameDev
Python для GameDevPython для GameDev
Python для GameDev
 
Python инструменты для нагрузочного тестирования
Python инструменты для нагрузочного тестированияPython инструменты для нагрузочного тестирования
Python инструменты для нагрузочного тестирования
 
Python, Django и корпоративные информационные системы
Python, Django и корпоративные информационные системыPython, Django и корпоративные информационные системы
Python, Django и корпоративные информационные системы
 
Настрой контент под пользователя!
Настрой контент под пользователя!Настрой контент под пользователя!
Настрой контент под пользователя!
 
Питон в малине
Питон в малинеПитон в малине
Питон в малине
 
Мой Python всегда со мной!
Мой Python всегда со мной!Мой Python всегда со мной!
Мой Python всегда со мной!
 
Как и зачем можно создать DSL на Python
Как и зачем можно создать DSL на PythonКак и зачем можно создать DSL на Python
Как и зачем можно создать DSL на Python
 
Во внутренности Kivy
Во внутренности KivyВо внутренности Kivy
Во внутренности Kivy
 
Зоопарк python веб-фреймворков
Зоопарк python веб-фреймворковЗоопарк python веб-фреймворков
Зоопарк python веб-фреймворков
 
Как Python Дайджест работает с внешней статикой
Как Python Дайджест работает с внешней статикойКак Python Дайджест работает с внешней статикой
Как Python Дайджест работает с внешней статикой
 
Применение behave+webdriver для тестирования Web-проектов
Применение behave+webdriver для тестирования Web-проектовПрименение behave+webdriver для тестирования Web-проектов
Применение behave+webdriver для тестирования Web-проектов
 
Ctypes в игровых приложениях на python
Ctypes в игровых приложениях на pythonCtypes в игровых приложениях на python
Ctypes в игровых приложениях на python
 
Оптимизация производительности Python
Оптимизация производительности PythonОптимизация производительности Python
Оптимизация производительности Python
 
JSON-RPC или когда rest неудобен
JSON-RPC или когда rest неудобенJSON-RPC или когда rest неудобен
JSON-RPC или когда rest неудобен
 
TestRail. Некоторые возможности интеграции.
TestRail. Некоторые возможности интеграции.TestRail. Некоторые возможности интеграции.
TestRail. Некоторые возможности интеграции.
 
"Модифицируй это!" или "Больше магии Python с помощью изменения AST"
"Модифицируй это!" или "Больше магии Python с помощью изменения AST""Модифицируй это!" или "Больше магии Python с помощью изменения AST"
"Модифицируй это!" или "Больше магии Python с помощью изменения AST"
 
Быстрый старт в gDrive API
Быстрый старт в gDrive APIБыстрый старт в gDrive API
Быстрый старт в gDrive API
 

Python инструменты решения типичных задач