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

18
Python: инструменты решения типичных задач sapronov.alexander92@gmail .com @sapronovalex9 2 [email protected] vk.com/pynsk facebook.com/PyNskCom @ py_nsk Александр Сапронов:

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

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

Python: инструменты решения

типичных задач

[email protected]

@sapronovalex92

[email protected]

vk.com/pynsk

facebook.com/PyNskCom

@py_nsk

Александр Сапронов:

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

В начале был... Гвидо!

В феврале 1991 года опубликован код языка

2

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

Популярность сейчас

6 место

6 место

4 место

1 место

60k+ модулей на pypi.python.org

3

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

➔Скриптинг приложений (Blender, Inkscape)

➔Сетевые приложения (ABC bittorrent client)

➔Для “склейки” компонентов➔Web-проекты➔Игры ➔Системные утилиты ➔GUI-программы➔Обработка данных➔Научное моделирование

Где Python хорош?

4

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

Python не подходит для

Задач где:

- нужен максимально быстрый отклик

- требуется крайне низкое потребление RAM

- надо быстро масштабировать решение

5

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

Типичные задачи- Парсеры- Генерация отчетов- CMS, простые сайты- SRM, CRM- Моделирование (Наука)- Обработка данных- Утилиты c GUI- Утилиты консольные

6

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

Парсинг

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

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

Парсинг по взрослому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'.*/\d\d\d\d/\d\d/$'):

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

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

Генерация отчетов

9

Отчет

График PDF Excel

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

Генерация отчетов

10

Модуль для создания графики:

matplotlib

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

Генерация отчетов

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')

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

Генерация отчетов

12

Excel- xlrd (read)- xlwt (write) - xlutils - XlsxWriter- openpyxl

import xlsxwriterworkbook = 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()

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

Генерация отчетов

13

Отчет

График PDF Excel- xhtml2pdf- pdfkit- PDFMiner- PyPDF2- reportlab

- matplotlib - xlrd (read)- xlwt (write) - xlutils - XlsxWriter- openpyxl

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

Web

- CRM- SRM- CMS- Web-store- Sites

14

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

Наука и обработка данных

15

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

Утилиты с GUI

16

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

Консольные утилиты- argparse- optparse- Clint- Click- docopt- Cli- Plac- Cliff

17

import [email protected]()@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=3Your name: JohnHello John!Hello John!Hello John!

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

18

[email protected]

@sapronovalex92

[email protected]

vk.com/pynsk

facebook.com/PyNskCom

@py_nsk

PyNSK контакты: Мои контакты:

ru.linkedin.com/in/alexsapronov

Питоны кончились…Вопросы?