Обертка для Curl : grab
Многие (почти все) используют такую замечательную библиотеку как curl (ну, или в нашем случае pycurl), работать с ней конечно можно – но не слишком удобно. Приходится думать о разных вещах – куках, установке параметров и т.д. а ведь это время и в конечном итоге – деньги. Как правило, на определенном этапе многие пишут свои "функции" разной степени кривости облегчающие работу с curl'ом .
Однако грамотные программисты предпочитают реюзать чужой код и не изобретать колесо, особенно в том случае если он хорошо написан и часто обновляется.
Итак, GRAB
(установка в убунте – sudo pip install grab)
Grab идеально подходит для большинства типичных задач (парсинг, регистрации), фактически освобождая программиста от рутины прямой работы с курлом и значительно сокращает размер кода. Я бы сказал, что Grab в какой-то степени эмулирует браузер (естественно без js). Итак, что внутри?
- Отправка разных HTTP запросов
- Обработка HTTP ответа
- Парсинг и заполнение HTML форм
- Работа с HTML DOM через XPath.
- XPath для обхода html
Использование XPath сильно упрощает задачу выбора элементов, это гораздо более удобно чем иметь дело с мутными регулярками.
Более подробно про XPath -http://www.w3schools.com/xpath/default.asp
В качестве примера – простой код.
1 | # выделяем каждый элемент td с классом "postbody" |
2 | for item in document.xpath( '//td[@class="postbody"]//' ): |
3 | print item.text |
Документация по Grab достаточно подробна, примеры использованиятут и тут (в этих примерах граб создается в объекте parser). Как орудовать самим грабом можно посмотреть тут (парсинг форума), пример не рабочий, сразу предупреждаю, служит только для наглядной демонстрации того как можно его использовать.
No comments:
Post a Comment