31 дек. 2012 г.

Scrapy + MongoDB: Пишем парсер Amazon (part3)

В первой и второй части статьи, мы разработали паука, который способный собирать данные с Amazon, по запросу Books.

Теперь нам нужно организовать запись данных в MongoDB. Надеюсь она у вас установлена, если нет, то можете перейти на эту страницу и посмотреть все возможные варианты.

P.S. Как и в случае с Scrapy. На официальном сайте MongoDB содержится отличная документация. Потому, невозможно сделать полное описание этой СУБД, в рамках статьи. Мы просто ограничимся вещами, нужными для завершения нашей, ознакомительной работы...

Связка Scrapy + MongoDB удобна тем, что полученный класс item(см. вторую часть мануала) имеет JSON-подобную структуру. А MongoDB ориентируется на работу с такими данными, благодаря NoSQL архитектуре. Потому работа практически сводится к прямой передаче полученных данных, через драйвер, в базу данных.

Scrapy + MongoDB: Пишем парсер Amazon (part2)

Продолжение первой части.

Переходим в созданный вначале проект, далее в папку spiders и создадим там файл amazon_spider_books.py

Кстати, небольшое уточнение. Если мы назовем нашего паука, как и проект, то будут трудности, при импорте класса items. Нужны разные названия...

Scrapy + MongoDB: Пишем парсер Amazon (part1)

Почти все люди сталкиваются с необходимостью сбора информации. Для спецов, работающих у WEB-сфере, такая задача ставиться очень часто.

Python + community предоставляют массу интересных решений для работы, среди которых можно найти и достаточно простые библиотеки и целые комбайны. Сегодня речь пойдет о гиганте, а именно Scrapy.

В статье нереально описать все возможности, да и не нужно это. Полная документация лежит на официальном сайте продукта.

Давайте разберем базовую работу, на примере парсера Amazon. Определим сразу основные задачи:

1) Заточить скрипт под Amazon.com;
2) Собирать по запросу Books: названия товаров, ссылки на них и текущие цены;
4) Сохранить результаты в MongoDB;

30 дек. 2012 г.

Ubuntu: Связать *.py файлы c IDLE

Для начала нужно определить, какую версию вы используете. 
Для Python 2.7 - нужно использовать команду idle-python2.7.desktop
Для Python 3 - нужно использовать idle3.desktop
У меня 2.7, потому выбираю первый пример.

29 дек. 2012 г.

IDLE: Ставим темный шаблон

IDLE - отличная среда разработки на Python. Конечно функционал далеко не максимальный, к примеру, нету удобного менеджмента проектов. Но так или иначе, её можно с легкостью можно использовать, для изучения языка и написания небольших скриптов.

Многие разработчики не любят работать на светлом бекграунде, так как, при таких таких тонах, глаза очень быстро устают. К сожалению, встроенных цветовых конфигов в этой IDE нету, а править руками - муть еще та ...

Потому вам предлагается готовый конфиг, как устанавливаем:

5 нояб. 2012 г.

Нюанс при построении xpath-запроса для использования lxml

С использованием замечательной библиотеки lxml, cбор данных с web-ресурсов превратился в сплошное удовольствие. Теперь можно обойтись без муторных регулярок и получать данные с DOM-дерева.

Кто хочет ознакомится с синтаксисом запросов Xpath - Welcome

А для особо ленивых подойдет Chrome(Chromium) Debugger. Который отдает точный и правильный путь, к нужным данным. К тому же он определяет классы и потому путь может сократится к:


//*[@id="class1"]/tbody/tr[5]

6 окт. 2012 г.

Ubuntu: конвертация mp4 в avi

Вариант №1:

Устанавливаем пакет ffmpeg и libavcodec-extra-53:

sudo apt-get install ffmpeg
sudo apt-get install libavcodec-extra-53

И для начала процесса вбиваем в терминал:

ffmpeg -i in.mp4 -vcodec libxvid -b 1200k -acodec libmp3lame -ab 128k out.avi

5 окт. 2012 г.

Lenovo и Ubuntu: Проблема со встроенным микрофоном.

На ноутбуке Lenovo, под управлением Ubuntu 12.04 я столкнулся со сложностью, а именно нерабочим встроенным микрофоном. После чтения форумов оказалось, что эта проблема уже тянется пару лет, начиная с Ubuntu 10.* версий.

Решение задачи:

26 сент. 2012 г.

Неплохие обертки для работы с WEB

Вся работа в сети строится по принципу вопрос/ответ. Что-то принимает, а что-то отвечает.

Так и пошло разделение на клиент/сервер. Клиент посылает свои данные и запрос, сервер в свою очередь обрабатывает все это и отдает что может. Это само собой реализуется через протоколы.

Python и сообщество предлагает отличные решения для работы с серверами, а именно: pycurl, urllib и httplib.

Pycurl и httplib - низкоуровневые библиотеки, в которых можно более тонко задавать маршруты и сообщения, при взаимодействии.

Urllib - предоставляет высокоуровневый доступ. Имея массу обработчиков, мы можем "как два пальца ..." обходить редиректы, обрабатывать куки, составлять понятные заголовки и ... При этом все делается почти без нашего участия и в 10 строк кода.

Ubuntu, PIP: Проблема с установкой lxml

При потребности установить пакет lxml, через pip, вы можете столкнутся с ошибкой:

command 'gcc' failed with exit status 1

Связано это с тем, что в стандартные пакеты Ubuntu входит Python, но отсутствуют некоторые development библиотеки.

Устраняем проблему с помощью терминала и:

sudo apt-get install python2.7-dev
sudo apt-get install libxml2-dev
sudo apt-get install libxslt1-dev

И после этого спокойно устанавливаем lxml.