<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
	<title>Хабрахабр / Python / Захабренные</title>
	<link>http://habrahabr.ru/rss/hub/python/e7d875f8829bc7f3aac7125b1281ad2b/</link>
	<description><![CDATA[Захабренные посты из хаба «Python» на Хабрахабре]]></description>
	<language>ru</language>
	<managingEditor>editor@habrahabr.ru</managingEditor>
	<generator>habrahabr.ru</generator>
	<pubDate>Sun, 27 May 2012 05:43:25 GMT</pubDate>
	<lastBuildDate></lastBuildDate>
	<image>
		<link>http://habrahabr.ru/</link>
		<url>http://habrahabr.ru/i/logo.gif</url>
		<title>Хабрахабр</title>
	</image>
	
		
			
		
	<item>
		<title><![CDATA[Вещи, о которых следует помнить, программируя на Python]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/post/144614/</guid>
		<link>http://habrahabr.ru/post/144614/</link>
		<description><![CDATA[<h2>Дзэн Питона</h2><br/>
<br/>
Изучение культуры, которая окружает язык, приближает вас на шаг к лучшим программистам. Если вы всё еще не прочли «Zen of Python», то откройте интерпретатор Python и введите <b>import this</b>. Для каждого элемента в списке вы найдете пример <a href="http://artifex.org/~hblanks/talks/2011/pep20_by_example.html">здесь</a><br/>
<br/>
Однажды моё внимание привлекло: <a href="http://habrahabr.ru/post/144614/#habracut">Читать дальше &rarr;</a>]]></description>
		
		<pubDate>Sat, 26 May 2012 18:59:58 GMT</pubDate>
		<author>yurtaev</author>
		<category><![CDATA[Переводы]]></category><category><![CDATA[Python]]></category>
		<category><![CDATA[python]]></category><category><![CDATA[zen of python]]></category><category><![CDATA[перевод]]></category>
	</item>
	
	
	
	
	
	

		
	
	<item>
		<title><![CDATA[[Из песочницы] Logging — библиотека для удобного ведения логов в Python]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/post/144566/</guid>
		<link>http://habrahabr.ru/post/144566/</link>
		<description><![CDATA[В любой разработке приходится рано или поздно вести логи, ведь не отдашь же заказчику программу где отладочные сообщения выводятся с помощью print, да и в дальнейшем если у заказчика что то пойдет не так то можно просто попросит показать лог и понять в чем проблема(в большинстве случаев), так вот в питоне есть очень мощная и удобная библиотека и дальше я попробую про нее рассказать.<br/>
 <a href="http://habrahabr.ru/post/144566/#habracut">Читать дальше &rarr;</a>]]></description>
		
		<pubDate>Fri, 25 May 2012 14:31:46 GMT</pubDate>
		<author>FenixGnom</author>
		<category><![CDATA[Python]]></category>
		<category>python*</category>
	</item>
	
	
	
	
	

		
	<item>
		<title><![CDATA[Python-биндинги для libsass. Эксклюзивно для Хабра]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/post/144419/</guid>
		<link>http://habrahabr.ru/post/144419/</link>
		<description><![CDATA[В топике <a href="http://habrahabr.ru/post/144309/">SASS против LESS</a> хабраюзер <a href="http://habrahabr.ru/users/morr/" class="user_link">morr</a> упомянул интересный <a href="https://github.com/hcatlin/libsass">libsass</a> — реализацию SASS на C++<br/>
<blockquote>На минувшем Railsconf 2012 был отдельный доклад про sass, где анонсировали фичи над которыми сейчас ведётся работа, и которые появятся в следующем релизе:<br/>
1. libsass — написанный на C компилятор sass в css, работающий быстрее на порядки нынешнего скрипта на руби. Для крупных проектов это очень существенно — большие объёмы стилей при деплое компилируются ну очень долго(полминуты и дольше). Так же это позволит написать биндинги для libsass к другим языкам, что означает более простое встраивание sass во фрейморки питона/ноды/дотнета/пхп.<br/>
…<br/>
</blockquote><br/>
<br/>
А я взял и сделал для libsass биндинги для Python. Встречайте, любите и пользуйтесь <a href="https://github.com/pistolero/python-scss">python-sass</a><br/>
<br/>
 <a href="http://habrahabr.ru/post/144419/#habracut"></a>]]></description>
		
		<pubDate>Wed, 23 May 2012 18:06:25 GMT</pubDate>
		<author>rushman</author>
		<category><![CDATA[Веб-разработка]]></category><category><![CDATA[Python]]></category><category><![CDATA[CSS]]></category>
		<category><![CDATA[python]]></category><category><![CDATA[sass]]></category><category><![CDATA[scss]]></category><category><![CDATA[binding]]></category><category><![CDATA[libsass]]></category>
	</item>
	
	
	
	
	
	

		
	
	<item>
		<title><![CDATA[[Из песочницы] Argparse — парсим аргументы и параметры командной строки с легкостью]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/post/144416/</guid>
		<link>http://habrahabr.ru/post/144416/</link>
		<description><![CDATA[Начиная с версии Python 2.7, в набор стандартных библиотек была включена библиотека argparse для обработки аргументов (параметров, ключей) командной строки. Хотелось бы остановить на ней Ваше внимание.<br/>
 <a href="http://habrahabr.ru/post/144416/#habracut">Читать дальше &rarr;</a>]]></description>
		
		<pubDate>Thu, 24 May 2012 02:58:51 GMT</pubDate>
		<author>w1cked</author>
		<category><![CDATA[Python]]></category>
		<category>python</category><category>argparse</category><category>optparse</category><category>parser</category><category>парсер</category>
	</item>
	
	
	
	
	

		
	<item>
		<title><![CDATA[Django, Staticfiles, Windows и UnicodeDecodeError]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/post/144121/</guid>
		<link>http://habrahabr.ru/post/144121/</link>
		<description><![CDATA[Разработчикам, не сидящим все время под windows, но иногда там появляющимся оная операционка частенько преподносит сюрпризы. Столкнувшись с одним из них спешу поделиться, ибо метод лечения крайне неочевиден. На понимание, что ни Django ни ваш код не виноваты может уйти не один час…<br/>
 <a href="http://habrahabr.ru/post/144121/#habracut">Читать дальше &rarr;</a>]]></description>
		
		<pubDate>Sat, 19 May 2012 10:31:27 GMT</pubDate>
		<author>xenolog</author>
		<category><![CDATA[Python]]></category><category><![CDATA[Django]]></category>
		<category><![CDATA[Django]]></category><category><![CDATA[windows]]></category><category><![CDATA[UnicodeDecodeError]]></category>
	</item>
	
	
	
	
	
	

		
	<item>
		<title><![CDATA[Мультиаплоад файлов, версия N]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/post/144052/</guid>
		<link>http://habrahabr.ru/post/144052/</link>
		<description><![CDATA[Еще с давних времен, когда интернет был молодым и медленным, самым распространенным браузером был не IE, а Mosaic, в интернет не ходили, а дозванивались… меня часто мучал вопрос — почему в файловых диалогах можно выбрать всего один файл? Почему если в форме есть три файловых поля, то в каждое из них надо тыкать? Неужели нельзя удобнее?<br/>
Шло время, появился javascript, CGI, но файлополя были все также эгоистичны. Потом появился флеш, html5, ситуация начала меняться, но… Файловое поле имеет ту-же самую суть — файл, а не файл<b>ы</b>! Хотя есть множество обходных методов…<br/>
 <a href="http://habrahabr.ru/post/144052/#habracut">Читать дальше &rarr;</a>]]></description>
		
		<pubDate>Fri, 18 May 2012 16:26:16 GMT</pubDate>
		<author>xenolog</author>
		<category><![CDATA[Python]]></category><category><![CDATA[Django]]></category>
		<category><![CDATA[django]]></category><category><![CDATA[plupload]]></category><category><![CDATA[мультизагрузка файлов]]></category><category><![CDATA[multiupload]]></category>
	</item>
	
	
	
	
	
	

		
	
	<item>
		<title><![CDATA[[Из песочницы] Пишем модуль для авторизации в VK API]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/post/143972/</guid>
		<link>http://habrahabr.ru/post/143972/</link>
		<description><![CDATA[На днях возникла необходимость сохранить все фотографии из своего фотоальбома ВКонтакте на жесткий диск. Естественно, вариант, с сохранением фотографий по одной, меня не устроил. Тут вспомнилось, что у ВКонтакте есть <a href="http://vk.com/developers.php">API</a>. Пять минут чтения мануалов, и все нужные функции найдены. Единственная проблема – не существует нормального способа, для получения доступа к API. В <a href="http://vk.com/developers.php?id=-1_37230422&amp;s=1">документации</a> сказано следующее:<br/>
<blockquote>Процесс авторизации приложения состоит из 3-х шагов:<br/>
<ol>
<li>Открытие окна браузера для аутентификации пользователя на сайте ВКонтакте.</li>
<li>Разрешение пользователем доступа к своим данным.</li>
<li>Передача в приложение ключа access_token для доступа к API.</li>
</ol><br/>
</blockquote><br/>
На первый взгляд, набросать простенький портабельный скрипт не получится. Хотя, что мешает нам притвориться браузером?<br/>
 <a href="http://habrahabr.ru/post/143972/#habracut">Читать дальше &rarr;</a>]]></description>
		
		<pubDate>Wed, 16 May 2012 13:49:42 GMT</pubDate>
		<author>dzhioev</author>
		<category><![CDATA[Вконтакте API]]></category><category><![CDATA[Python]]></category>
		<category>vkontakte api</category><category>вконтакте api</category><category>python</category>
	</item>
	
	
	
	
	

		
	
	
	
	<item>
		<title><![CDATA[[Перевод] Я неправильно работаю с HTTP]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/post/143871/</guid>
		<link>http://habrahabr.ru/post/143871/</link>
		<description><![CDATA[Пару месяцев назад я пришел к выводу, что я неправильно работаю с HTTP. И я настолько глубоко в этой кроличьей норе, что уже практически невозможно что либо исправить.<br/>
<br/>
Главная проблема в том, что я никогда не добавлял достаточно абстракций в свои HTTP-библиотеки.<br/>
Объекты запроса и ответа (request и response) практически не скрывают деталей HTTP. Я имею в виду, что вы не можете просто сериализовать эти объекты и ожидать что все будут работать. Сериализация возможно работает для response объектов в werkzeug (веб фреймворк автора) и других библиотеках и фреймворках. Если вы хорошо знаете внутренности своей библиотеки, то вы возможно сможете сериализовать и Request объект.<br/>
Но главное, что это не было предусмотрено при проектировании этих фреймворков — все они тонкие обертки над внешними ресурсами — над TCP соединением с браузером.<br/>
 <a href="http://habrahabr.ru/post/143871/#habracut">Читать дальше &rarr;</a>]]></description>
		
		<pubDate>Tue, 15 May 2012 10:52:12 GMT</pubDate>
		<author>Deepwalker</author>
		<category><![CDATA[Веб-разработка]]></category><category><![CDATA[Python]]></category>
		<category>веб-разработка</category><category>api</category><category>python</category>
	</item>
	
	
	

		
	<item>
		<title><![CDATA[Делаем бэкап музыкальной базы vkontakte с помощью Python]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/post/143860/</guid>
		<link>http://habrahabr.ru/post/143860/</link>
		<description><![CDATA[Год назад я захотел в машину флешку с винегретом из музыки, которая была у меня в плейлисте контакта. А там, к слову, почти 1400 треков. <br/>
<br/>
Итак, первое, что я сделал — октрыл список расширений оперы и набрал в поиске «vkontakte». Но вот оказия, все приложения предлагали качать по одному треку, в основном добавляя рядом с ним кнопочку «скачать». В принципе, это удобно, если надо стянуть оттуда один-два трека, но вот если их 1400… <br/>
<br/>
Следующий моим шагом было открытие страницы с музыкой и внимательная медитация над ней, с целью распарсить страницу, выдрав оттуда ссылки и названия. Слегка подумав, я решил, а почему бы снова не использовать вконтактовый API? Ведь опыт использования у меня уже есть (писал десктопный плеер на Qt). Но лепить полноценное приложение, тем более на плюсах или каком-либо другом языке, мне показалось слегка не умным решением. И тут я подумал — черт возьми, есть же python, наклепаю скрипт и стяну все. Итак, выбор сделан, начинаем кодить. <br/>
<br/>
Открываем Geany и пишем первые строчки… И вот тут-то моя фантазия и желание лепить комбайны из ничего опять разыгрались. Дальше под катом.<br/>
 <a href="http://habrahabr.ru/post/143860/#habracut">Читать дальше &rarr;</a>]]></description>
		
		<pubDate>Tue, 15 May 2012 06:24:02 GMT</pubDate>
		<author>Zhbert</author>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[python]]></category>
	</item>
	
	
	
	
	
	

		
	
	<item>
		<title><![CDATA[[Из песочницы] Конвертируем Selenium веб-драйвер для Python 3.x]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/post/143355/</guid>
		<link>http://habrahabr.ru/post/143355/</link>
		<description><![CDATA[Итак, вы задались целью отладить своё веб-приложение. Вам хочется, чтобы браузер «сам тыкал» на кнопочки, ходил по ссылкам и при этом ещё и проверял состояние элементов. Словом хочется вам интеграционного тестирования, чтобы некий скрипт задавал сценарий действий пользователя и при этом параллельно проверял состояние элементов и изменения в базе данных.<br/>
<br/>
Допустим вы находите или где-то уже слышали, или даже давно хотели попробовать специальный инструментарий для этих дел, зовущийся Selenium WebDriver. Вы идёте на сайт Selenium и радостно прыгаете от восторга: поддерживается ваш любимый скриптовый язык Python! Но увы, как и в случае с Django у разработчиков ещё не дошли руки до Python 3.x. Так что все вкусные синтаксические куски рафинада, а также встроеная поддержка UTF-8 по умолчанию не поддерживаются.<br/>
<br/>
Однако, вооружившись знаниями о различиях между Python 2 и 3, а также стандартной утилитой 2to3.py мы в два счёта поборем всё то, что мешает нашему счастью и всеобщему прогрессу в разработке тестовых скриптов для интеграционного тестирования.<br/>
 <a href="http://habrahabr.ru/post/143355/#habracut">Читать дальше &rarr;</a>]]></description>
		
		<pubDate>Sat, 05 May 2012 11:08:03 GMT</pubDate>
		<author>Qualab</author>
		<category><![CDATA[Песочница]]></category><category><![CDATA[Веб-разработка]]></category><category><![CDATA[Python]]></category>
		<category>selenium</category><category>webdriver</category><category>python3</category><category>python</category><category>firefox</category><category>интеграционное тестирование</category><category>integration testing</category>
	</item>
	
	
	
	
	

		
	<item>
		<title><![CDATA[Inbox.py: самый простой SMTP-сервер]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/post/143241/</guid>
		<link>http://habrahabr.ru/post/143241/</link>
		<description><![CDATA[Кеннет Райтц из компании Heroku продолжает создавать элегантные библиотеки с упрощёнными API. Предыдущей разработкой была библиотека <a href="http://habrahabr.ru/post/126262/">Requests</a> для HTTP-запросов. Теперь он выпустил простой SMTP-сервер <a href="https://github.com/kennethreitz/inbox.py">Inbox.py</a>, который элементарно прикрутить к веб-приложению для осуществления прямых почтовых рассылок и приёма/обработки почты, без мучений с макросами sendmail.<br/>
<br/>
<pre><code class="python">from inbox import Inbox

inbox = Inbox()

@inbox.collate
def handle(to, sender, body):
    ...

# Bind directly.
inbox.serve(address='0.0.0.0', port=4467)</code></pre><br/>
 <a href="http://habrahabr.ru/post/143241/#habracut">Читать дальше &rarr;</a>]]></description>
		
		<pubDate>Thu, 03 May 2012 14:01:53 GMT</pubDate>
		<author>alizar</author>
		<category><![CDATA[Серверное администрирование]]></category><category><![CDATA[Веб-разработка]]></category><category><![CDATA[Python]]></category>
		<category><![CDATA[Inbox.py]]></category><category><![CDATA[SMTP-сервер]]></category><category><![CDATA[почтовый сервер]]></category><category><![CDATA[sendmail]]></category>
	</item>
	
	
	
	
	
	

		
	<item>
		<title><![CDATA[Распознаём изображение с токена при помощи камеры]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/post/143102/</guid>
		<link>http://habrahabr.ru/post/143102/</link>
		<description><![CDATA[В организации, где я тружусь в свободное от отдыха время, очень высокие требования к безопасности. Везде, где только можно, для аутентификации пользователей используются <a href="http://ru.wikipedia.org/wiki/%D0%A2%D0%BE%D0%BA%D0%B5%D0%BD_(%D0%B0%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8)">токены</a>. Мне выдали вот такую вот штуку:<br/>
<img src="http://habrastorage.org/storage2/0c0/503/267/0c05032679888cdf5ccbe1fa00a58260.jpg"/><br/>
и сказали: жмёшь кнопку, смотришь цифры, вводишь пароль и радуешься. «Безопасность, конечно, превыше всего, но и о комфорте забывать не следует» — примерно так подумал я и провёл ревизию имеющегося у меня электронного хлама.<br/>
 <a href="http://habrahabr.ru/post/143102/#habracut">Читать дальше &rarr;</a>]]></description>
		
		<pubDate>Tue, 01 May 2012 00:19:18 GMT</pubDate>
		<author>Dreadatour</author>
		<category><![CDATA[Python]]></category><category><![CDATA[Arduino]]></category>
		<category><![CDATA[python]]></category><category><![CDATA[opencv]]></category><category><![CDATA[arduino]]></category>
	</item>
	
	
	
	
	
	

		
	<item>
		<title><![CDATA[Добавляем поддержку Windows Live Writer (Meta Weblog API) в блог на Django]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/post/143100/</guid>
		<link>http://habrahabr.ru/post/143100/</link>
		<description><![CDATA[<img src="http://habrastorage.org/storage2/2a4/72a/cb1/2a472acb1b194589ee35b23f43d302ef.jpg"/><br/>
Пару лет назад посчастливилось мне иметь блог на WordPress. До наших дней блог, как и вся база постов к моему сожалению не дожила, но рассказать я хочу не о самом блоге, а о том с помощью чего вся информация публиковалась. В то время Microsoft не так давно запустила Windows 7, а вместе с ней и пакет приложений Windows Live. Вот и я решил взглянуть – чего в этом пакете вкусного? Больше всего мне приглянулось приложение Windows Live Writer – программа позволяющая набирать и форматировать тексты, и публиковать их в блог. Удобный интерфейс, множество инструментов для форматирования, возможность хранить черновики локально, и многое другое – я влюбился. Спустя некоторое время свой блог без Windows Live Writer я уже не представлял. <br/>
 <a href="http://habrahabr.ru/post/143100/#habracut">И чего же было дальше?</a>]]></description>
		
		<pubDate>Mon, 30 Apr 2012 22:08:10 GMT</pubDate>
		<author>S0ulReaver</author>
		<category><![CDATA[Windows]]></category><category><![CDATA[Python]]></category><category><![CDATA[Django]]></category>
		<category><![CDATA[Django]]></category><category><![CDATA[Windows live writer]]></category><category><![CDATA[Python]]></category><category><![CDATA[Meta Weblog API]]></category>
	</item>
	
	
	
	
	
	

		
	<item>
		<title><![CDATA[Unity линза для поиска видео ВКонтакте]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/post/143030/</guid>
		<link>http://habrahabr.ru/post/143030/</link>
		<description><![CDATA[<a href="http://ubuntuone.com/5DSTvfgRLRAU41fpuGj4K0"><img src="http://ubuntuone.com/7bNB0nRj9awyZghXrFTjiQ"/></a><br/>
<br/>
В unity очень удобные линзы, в ВКонтакте много видео, а flash в новой ubuntu превращает все фильмы в аватар. Поэтому я сделал линзу для поиска видео в ВКонтакте, открывающую их в totem. <a href="http://habrahabr.ru/post/143030/#habracut">Читать дальше &rarr;</a>]]></description>
		
		<pubDate>Sun, 29 Apr 2012 16:25:41 GMT</pubDate>
		<author>nvbn</author>
		<category><![CDATA[Убунтариум]]></category><category><![CDATA[ВКонтакте]]></category><category><![CDATA[Python]]></category>
		<category><![CDATA[ubuntu]]></category><category><![CDATA[unity]]></category><category><![CDATA[python]]></category><category><![CDATA[вконтакте]]></category>
	</item>
	
	
	
	
	
	

		
	
	<item>
		<title><![CDATA[[Из песочницы] Нахождение максимальной общей подпоследовательности]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/post/142825/</guid>
		<link>http://habrahabr.ru/post/142825/</link>
		<description><![CDATA[В настоящей статье я хотел бы сделать обзор популярных алгоритмов для решения задачи нахождения максимальной общей подпоследовательности или LCS (longest common sequense). Так как акцент сделан на обучении, а не на реальном использовании, в качестве языка для реализации выбран Python, что позволит сократить количество кода и сконцентрироваться на основных идеях.<br/>
 <a href="http://habrahabr.ru/post/142825/#habracut">Читать дальше &rarr;</a>]]></description>
		
		<pubDate>Wed, 25 Apr 2012 19:20:35 GMT</pubDate>
		<author>hamst</author>
		<category><![CDATA[Песочница]]></category><category><![CDATA[Алгоритмы]]></category><category><![CDATA[Python]]></category>
		<category>алгоритмы</category>
	</item>
	
	
	
	
	

		
	<item>
		<title><![CDATA[Кодим безумный пассивный сниффер в виде модуля для Python]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/post/142816/</guid>
		<link>http://habrahabr.ru/post/142816/</link>
		<description><![CDATA[<img src="http://habrastorage.org/storage2/212/360/e28/212360e2802cb3a2bc1ac8139ed1c573.jpg" align="left"/><br/>
<br/>
Сразу скажу: то, чем мы с вами будем здесь заниматься, не претендует, скажем, на какую-то промышленную применимость. Более того, я признаю, что мой код в данном примере может быть ужасен, страшен и ненужен. И тем не менее — почему бы не поперехватывать пакеты посреди недели? Так, слегка.<br/>
<br/>
Итак, сегодня мы вот что наколдуем:<br/>
<br/>
1. Реализуем простейший пассивный перехватчик пакетов для TCP и UDP<br/>
2. Засунем его в C-библиотеку в виде расширения для Python<br/>
3. Приделаем ко всему этому интерфейс итератора, дабы байты сыпались, как из рога изобилия<br/>
4.…<br/>
5. PROFIT! <a href="http://habrahabr.ru/post/142816/#habracut">Берите стул, садитесь ближе к камину</a>]]></description>
		
		<pubDate>Thu, 26 Apr 2012 08:01:05 GMT</pubDate>
		<author>enchantner</author>
		<category><![CDATA[Сетевые технологии]]></category><category><![CDATA[Программирование]]></category><category><![CDATA[Python]]></category>
		<category><![CDATA[python]]></category><category><![CDATA[c]]></category><category><![CDATA[сокеты]]></category><category><![CDATA[сниффер]]></category>
	</item>
	
	
	
	
	
	

		
	<item>
		<title><![CDATA[Что такое Grab:Spider?]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/post/142288/</guid>
		<link>http://habrahabr.ru/post/142288/</link>
		<description><![CDATA[Никак не могу дописать документацию по Grab:Spider — это часть библиотеки <a href="http://grablib.org/">Grab</a> — для написания асинхронных пауков. Подумал выкладывать куски документации на хабрахабр. Думаю, с некоторым фидбэком дело быстрей пойдёт. На данный момент в документации есть лишь введение, описывающие в общих чертах, что за это за зверь такой Grab:Spider. Его и выкладываю. <a href="http://habrahabr.ru/post/142288/#habracut">Читать дальше &rarr;</a>]]></description>
		
		<pubDate>Wed, 18 Apr 2012 03:30:54 GMT</pubDate>
		<author>itforge</author>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[grab]]></category><category><![CDATA[spider]]></category><category><![CDATA[парсинг сайтов]]></category><category><![CDATA[grablab]]></category>
	</item>
	
	
	
	
	
	

		
	<item>
		<title><![CDATA[Использование Grab:Spider для парсинга сайтов]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/post/142212/</guid>
		<link>http://habrahabr.ru/post/142212/</link>
		<description><![CDATA[Всем привет! <br/>
<br/>
Я активный пользователь open-source фрэймворка <a href="http://grablib.org/">Grab</a> (<a href="http://habrahabr.ru/users/itforge/" class="user_link">itforge</a> уже писал о нем <a href="http://habrahabr.ru/blogs/python/127584/">здесь</a> и <a href="http://habrahabr.ru/blogs/python/134918/">здесь</a>) и 1/2 проекта <a href="http://grablab.org/">GrabLab</a> (который занимается собственно коммерческой эксплуатацией фрэймворка). Т.к. парсим сайты мы часто, помногу и задания как правило совершенно не похожи друг на друга, хотелось бы поделится своим опытом в вопросе построения типичного парсинг проекта.<br/>
<br/>
<h5>Немного про инструментарий который помогает мне в работе</h5><br/>
В качестве рабочего браузера я использую FireFox с плагинами <b>HttpFox</b> (анализировать входящий/исходящий http трафик), <b>XPather</b> (позволяет проверять xpath выражения), <b>SQLite Manager</b> (просмотр sqlite таблиц), код набираю в emacs, где активно использую сниппеты (YASnippets) для часто встречающихся конструкций.<br/>
<br/>
Из-за специфики фрэймворка, как правило, на первом этапе сайт полностью (или если данных много — то частично, для удобства последующей разработки) сохраняется в локальный кэш на базе mongodb, что очень экономит время, т.к. считывание страниц идет из кэша.<br/>
<br/>
 <a href="http://habrahabr.ru/post/142212/#habracut">Читать дальше &rarr;</a>]]></description>
		
		<pubDate>Tue, 17 Apr 2012 06:07:30 GMT</pubDate>
		<author>istinspring</author>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[grab]]></category><category><![CDATA[парсинг сайтов]]></category><category><![CDATA[grablab]]></category>
	</item>
	
	
	
	
	
	

		
	<item>
		<title><![CDATA[Вышел PyCharm 2.5 с поддержкой удаленных интерпретаторов, улучшенным virtualenv, SVN 1.7 и пр]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/post/142188/</guid>
		<link>http://habrahabr.ru/post/142188/</link>
		<description><![CDATA[<a href="http://www.jetbrains.com/pycharm"><img align="right" src="http://habrastorage.org/storage2/80a/ecc/b37/80aeccb377dbf4712218a49cdd151554.png"/></a>В пятницу, не смотря, что она была еще и 13 апреля, команда создающая <b>PyCharm</b>, передовую <a href="http://www.jetbrains.com/pycharm">IDE для Python</a> от JetBrains, выпустила очередное обновление своего продукта — <b>версию 2.5</b>.<br/>
В этот релиз вошли важные нововведения по работе с Python-окружением и не только:<br/>
 <a href="http://habrahabr.ru/post/142188/#habracut">Читать дальше &rarr;</a>]]></description>
		
		<pubDate>Mon, 16 Apr 2012 17:36:24 GMT</pubDate>
		<author>topka</author>
		<category><![CDATA[Блог компании JetBrains]]></category><category><![CDATA[Python]]></category><category><![CDATA[Django]]></category>
		<category><![CDATA[pycharm]]></category><category><![CDATA[jetbrains]]></category><category><![CDATA[virtualenv]]></category><category><![CDATA[interpreter]]></category><category><![CDATA[svn]]></category><category><![CDATA[python]]></category><category><![CDATA[django]]></category><category><![CDATA[environment]]></category>
	</item>
	
	
	
	
	
	

		
	
	
	
	<item>
		<title><![CDATA[[Перевод] PHP: фрактал плохого дизайна]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/post/142140/</guid>
		<link>http://habrahabr.ru/post/142140/</link>
		<description><![CDATA[<h1>Предисловие</h1><br/>
Я капризный. Я жалуюсь о многих вещах. Многое в мире технологий мне не нравится и это предсказуемо: программирование — шумная молодая дисциплина, и никто из нас не имеет ни малейшего представления, что он делает. Учитывая <a href="http://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%BA%D0%BE%D0%BD_%D0%A1%D1%82%D0%B0%D1%80%D0%B4%D0%B6%D0%BE%D0%BD%D0%B0">закон Старджона</a>, у нас достаточно вещей для постижения на всю жизнь.<br/>
<br/>
Тут другое дело. PHP не просто неудобен в использовании, плохо мне подходит, субоптимален или не соответствует моим религиозным убеждениям. Я могу рассказать вам много хороших вещей о языках, которых я стараюсь избегать, и много плохих вещей о языках, которые мне нравятся. Вперёд, спрашивайте! Получаются интересные обсуждения.<br/>
<br/>
PHP — единственное исключение. Фактически каждая деталь PHP в какой-то мере поломана. Язык, структура, экосистема: всё <strong>плохо</strong>. И даже нельзя указать на одну убийственную вещь, настолько дефект систематичный. Каждый раз, когда я пытаюсь систематизировать недостатки PHP, я теряюсь в поиске в глубину обнаруживая всё больше и больше ужасных мелочей(отсюда фрактал).<br/>
<br/>
PHP — препятствие, отрава моего ремесла. Я схожу с ума от того, насколько он сломан и насколько воспеваем каждым уполномоченным любителем нежелающим научиться чему-либо ещё. У него ничтожно мало оправдывающих положительных качеств и я бы хотел забыть, что он вообще существует.<br/>
 <a href="http://habrahabr.ru/post/142140/#habracut">Читать дальше &rarr;</a>]]></description>
		
		<pubDate>Mon, 16 Apr 2012 04:58:13 GMT</pubDate>
		<author>siasia</author>
		<category><![CDATA[Программирование]]></category><category><![CDATA[Python]]></category><category><![CDATA[PHP]]></category>
		<category>php</category><category>programming</category><category>python</category><category>дизайн языков программирования</category>
	</item>
	
	
	

		
		
		
		
		
		
	

	
</channel>
</rss>

