Докладчик:
Александр Сапронов
Описание:
Мы вместе пройдем по популярным задачам — от парсинга сайтов до научных вычислений и рассмотрим мощь языка Python
5. Python не подходит для
Задач где:
- нужен максимально быстрый отклик
- требуется крайне низкое потребление
RAM
- надо быстро масштабировать решение
5
6. Типичные задачи
- Парсеры
- Генерация отчетов
- CMS, простые сайты
- SRM, CRM
- Моделирование (Наука)
- Обработка данных
- Утилиты c GUI
- Утилиты консольные
6
7. Парсинг
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
8. Парсинг по взрослому
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