Хочу собрать в этом топике ссылки на инструменты для парсинга сайтов и анализа данных. Если знаете какую-нибудь библитеку, напишите об этом! Пожалуйста указывайте сразу краткое описание библиотеки и ссылку на документацию. От одного названия толка мало будет.
Парсинг сайтов, работа с HTTP запросами
urllib и urllib2 - стандартные библиотеки языка python для работы с сетью
requests - популярная библиотека для работы с HTTP протоколом, не требует дополнительных зависимостей.
Grab - фреймворк для парсинга сайтов, позволяет работать как с одиночными запросами (а ля requests), так и писать сложные асинхронные пауки для сайтов (а ля scrapy). Требует pycurl и lxml.
scrapy - асинхронный фреймворк для парсинга сайтов. Требует twisted.
Парсинг HTML и XML
lxml - эффективная библиотека для парсинга HTML, поддерживает Xpath запросы, предоставляет DOM и SAX парсеры для XML.
cssselect - парсинг XML/HTML с помощью css-запросов (требует lxml)
pyquery - парсинг XML/HTML с помощью jquery-запросов (требует lxml)
BeautifulSoup - глючная тормозная библиотека для парсинга XML/HTML, не поддерживающая xpath запросы, плюсом является то, что она написана на чистом питоне.
html5lib - парсинг и сериализация HTML по спецификации WHATWG (на неё ориентируются современные веб-браузеры). Возможно выбрать для построения DOM-дерева, как встроенные средства питона, так и библиотеки lxml или BeautifulSoup.
feedparser - парсинг RSS и ATOM фидов.
Bleach - библиотека для очистки HTML (требует html5lib)
Эмуляторы браузеров
selenium - средство для тестирования веб-интерфейсов с помощью реальных браузеров: google chrome, opera, firefox, IE. Можно и сайты через него парсить. Есть некоторые неудобства, связанные с идеологией инструмента - он позволяет эмулировать внешние действия пользователя. Например, задать свой собственный Referer - это уже проблема. Не требует дополнительных зависимостей.
Ghost.py - обёртка над QtWebKit (требует PyQt или PySide)
Spynner - ещё одна обёртка над QtWebKit, более ничего не знаю про эту либу :)
Параллельная многозадачность
threading - встроенный в python модуль для реализации многозадачности с помощью тредов (объекты языка, выполняющиеся в одном процессе). Минусы подхода в том, что вы не можете загрузить вычислениями более одного ядра.
multiprocessing - встроенный в python модуль для реализации многозадачности с помощью процессов
celery - навороченная реализация очереди задач, поддерживающая различные бэкенды для хранения этой самой очереди задач.
RQ - легковесная очередь задач, использующая redis
Облачные вычислениях
picloud - выполнение python-кода в облаке
dominoup.com - выполнение R, Python и matlab кода в облаке