Saturday, May 21st, 2011
Многие (почти все) используют такую замечательную библиотеку как curl (ну, или в нашем случае pycurl), работать с ней конечно можно – но не слишком удобно. Приходится думать о разных вещах – куках, установке параметров и т.д. а ведь это время и в конечном итоге – деньги. Как правило, на определенном этапе многие пишут свои “функции” разной степени кривости облегчающие работу с curl’ом .
Однако грамотные программисты предпочитают реюзать чужой код и не изобретать колесо, особенно в том случае если он хорошо написан и часто обновляется.
(установка в убунте – sudo pip install grab)
Grab идеально подходит для большинства типичных задач (парсинг, регистрации), фактически освобождая программиста от рутины прямой работы с курлом и значительно сокращает размер кода. Я бы сказал, что Grab в какой-то степени эмулирует браузер (естественно без js). Итак, что внутри?
- Отправка разных HTTP запросов
- Обработка HTTP ответа
- Парсинг и заполнение HTML форм
- Работа с HTML DOM через XPath.
- XPath для обхода html
Использование XPath сильно упрощает задачу выбора элементов, это гораздо более удобно чем иметь дело с мутными регулярками.
Более подробно про XPath - http://www.w3schools.com/xpath/default.asp
В качестве примера – простой код.
# выделяем каждый элемент td с классом "postbody"
for item in document.xpath('//td[@class="postbody"]//'):
print item.text
Документация по Grab достаточно подробна, примеры использования тут и тут (в этих примерах граб создается в объекте parser). Как орудовать самим грабом можно посмотреть тут (парсинг форума), пример не рабочий, сразу предупреждаю, служит только для наглядной демонстрации того как можно его использовать.
Posted in Code, OpenSource, Python | No Comments »
Thursday, November 25th, 2010
Фантастика! А такие есть…. Пару дней назад рассматривая бегающих туда-сюда по блогу ботов наткнулся на – http://www.majestic12.co.uk/
Majestic-12 усердно работает над созданием World Wide Web поисковика основанного на концепции распределенных вычислений, таким же образом как и проекты типа SETI@home.
т.е. проект работает за счет того, что энтузиасты по всему миру расшаривают вычислительные ресурсы своих компьютеров помогая поисковику индексировать страницы. Отсюда следует немаловажный вывод – ботов нельзя отсечь используя список IP адресов, и бывает они создают достаточно серьезную нагрузку на ресурс который индексируют, заблокировать ботом можно только через robots.txt. Скачать клиента можно тут :
http://www.majestic12.co.uk/projects/dsearch/download.php
Поисковые технологии потихоньку развиваются, гуглу приходится все труднее т.к. со все сторон его атакуют различные набольшие проекты, конечно вряд ли он сдаст свои позиции в скором времени, но тем не менее здоровая конкуренция всегда идет на пользу рынку. У гугла сейчас есть крайне неприятная проблема – сайты контент-помойки, вроде ehow, mahalo и т.д. Уже недостаточно написать хорошую статью чтобы оказаться в топе поисковика, нужны кучи бэклинков – обычный человек никогда не будет этим заниматься, в то время как в топах зависают сайты с миллионами входящих бэков контент для которых пишут дешевые копирайтеры-индусы. В итоге что-то действительно полезное найти становится все труднее. И это как говорится – suck.

http://www.majestic12.co.uk/projects/dsearch/stats.php
Индекс Majestic-12 уже достаточно внушителен и динамика развития проекта радует глаз. Не такая уж новая идея распределенных вычислений идея была реализована и теперь у разработчиков в руках находится огромное кол-во данных для анализа. И они извлекают из этого какую-то прибыль – продают доступ на сервис http://www.majesticseo.com/
Posted in Cool Story Bro, Search Engine | No Comments »
Saturday, November 13th, 2010
Заметил сегодня у себя в статистике бота который представлялся как dotBot и имел адрес http://www.dotnetdotcom.org/.
Наши цели.
Наши цели довольно просты. Мы хотим сделать интернет настолько открытым – насколько это возможно. На текущий момент только несколько избранных корпораций имеют полный и подходящий для использования иденкс веба. Наша цель – изменить этот факт, для этого наш бот собирает данный о вебе и мы публикуем как можно более полную информацию о структуре и контенте всемирной паутины. Мы планируем делать это так, чтобы перекрывать наши расходы (продажа индекса) и релизить его бесплатно – полезная штука для вебмастеров. Очевидно эта цель имеет множество потенциальных проблем с технической частью, легальностью, финансами и этикой. Вообщем мы пока будем работать и стараться сделать интернет среду как можно более открытой.
Техническая составляющая системы написана на C/Python с использованием libcurl. Авторы передают респект всему open source сообществу.
www.example.com/ HTTP/1.1 200 OK
Date: Sat, 20 Sep 2008 15:43:15 GMT
Server: Apache/2.0.52 (CentOS)
X-Powered-By: PHP/4.3.9
Content-Length: 557
Connection: close
Content-Type: text/html; charset=UTF-8
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>I am an example.</title>
</head>
<body>
...
<body>
</html>
www.example2.com/ HTTP/1.1 200 OK
Date: Sat, 20 Sep 2008 15:43:15 GMT
Server: Apache/2.0.52 (CentOS)
X-Powered-By: PHP/4.3.9
Content-Length: 557
Connection: close
Content-Type: text/html; charset=UTF-8
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>I am a different example.</title>
</head>
<body>
...
<body>
</html>
Там же можно скачать текущий индекс. Это 3.2 гигабайта в запакованном виде и более 14 гигов в распакованном. На данный момент индекс грубо говоря представляет собой урл и http-response (т.е. хтмл код страницы). Но даже из этого в принципе можно получить достаточно много интересной инфы, правда база достаточно большая и обработка её даже простыми операциями (например подсчет ссылок) может занять длительное время )
Posted in Cool Story Bro, Search Engine | No Comments »