Архивы для категории ‘Мысли’.
28th Ноябрь 2008, 11:40 дп
Долго я ничего не писал, но на это были объективные причины - было ОЧЕНЬ много интересной и сложной работы. И именно эта работа позволила добиться больших результатов и создать интересные наработки, о которых я буду писать в следующих постах.
А пока первое нововведение - защита от спама. Когда у меня собралось 1800 комментов на модерацию, то я понял, что надо как-то защищаться от тупорылых комментов наподобии “автор молодец” или “красиво пишешь” и для этого поставил простой плагин, который просит вас ввести сумму сложения двух чисел. Надеюсь это не испугает моих постоянных читателей
Правда в процессе очистки от мусора были утеряны и некоторые интересные комменты, но это уже операционные накладки. Зато теперь всем (и особенно мне) будет легче и проще посты и комменты к ним.
Ну поехали понемногу. Будем разгоняться.
5th Апрель 2008, 08:35 пп
На днях на одном из популярных порталов о поиске работы для фрилансеров weblancer.net заметил интересный проект, который дословно называется Сбор информации.
Если особо не вникать в проект, то может показаться, что это халтурная работа для людей у которых по ночам “простаивает” комп и инет. Но в то же время, я, как человек предоставляющий услуги в этой же области, задумался, а кому надо тратить дополнительные деньги, пусть и небольшие, на то, чего и так валом (инет и компы)? Нет ли тут какого-то подлога? Не отрубят ли вас потом от инета за нарушение каких-то авторских прав или еще чего-то подобного?
Советую людям, которые оставили комменты к данному проекту, задуматься над этими вопросами. Потому что я, например, никогда не прибегал бы к помощи сторонних людей, потому что это вводит в систему сбора информации еще один и достаточно неконтролируемый фактор - человеческий (без учета человеческого фактора самого себя
).
Думайте! И не ошибитесь!
28th Декабрь 2007, 06:17 пп
Поздравляю всех своих клиентов, подписчиков, партнеров и друзей с Новым Годом. Я уверен, что в этом году вы добились многого, но я верю, что Новый Год откроет перед вами бесчисленные горизонты возможностей и вы достигнете всех поставленных целей и осуществите свои самые заветные мечты.
Отдельно я хотел бы поздравить своих клиентов, которые доверили свои проекты моим рукам и оставили столь приятные отзывы о моей работе на Weblancer.net и Webmoney.ru. Спасибо вам огромное! Обещаю, что Новый Год мы с вами встретим с новой парсинг-платформой, которая позволит собирать и обрабатывать миллионы записей в сутки.
Поздравляю всех! УДАЧИ!
P.S. До 6ого января я буду в отпуске, поэтому прошу всех моих великолепных заказчиков немного потерпеть. Когда я вернусь с новыми силами я удивлю вас своей производительностью! 
13th Декабрь 2007, 12:48 дп
Наконец-то удалось немного разгрести гору заказов и написать.
На прошлой неделе очень интересно получилось с моим тестом-сравнением скорости работы preg_replace() и str_replace(). Я провел измерения, результаты были вполне предсказуемые, но YS.PRO подкинул новый опыт, по результатам которого скорость str_replace() превысила preg_replace() в 24 раза! Конечно, это больше чем я ожидал, хотя также вполне прогнозируемо.
И после этого у меня было четкое намерение провести последний тест, в котором я хотел циклично применять вышеуказанные функции к разному контенту, но сейчас я решил отказаться от этой затеи, четко понимая, что результат останется в том же диапазоне, а я потрачу свое время.
Поэтому пока никаких больше тестов. Надо завершить все проекты, подготовиться к Новому Году и уехать куда-то отдыхать!
В связи с этим я хочу проинформировать моих заказчиков, что до Нового Года у меня осталось всего 2 места в моем проджект лайне и более я, к сожалению, буду не в силах выполнить. Поэтому если кто-то затеял сделать что-то гениальное, то стучитесь прямо сейчас, потому что через пару дней уже будет поздно.
На этом все. Удаляюсь. В следующих постах обещаю рассказать об интересных функциях curl и умном взвешивании результатов при сборе картинок.
Удачи!
25th Ноябрь 2007, 10:13 пп
В последнее время я заметил, что очень многим заказчикам необходим сбор большого объема изображений, аудио- и видеоконтента. Поэтому я решил выделить данный вид работы в отдельную услугу.
Спецификой работы по сбору подобного контента является то, что БД имеет второстепенное значение, в то время как выдвигаются дополнительные требования к дисковой системе и скорости интернет-канала. Все эти особенности учтены в разработанной мной системе GrabVIA, предназначенной ИСКЛЮЧИТЕЛЬНО для сбора вышеуказанного контента.
ТТХ услуги:
- 2 сервера (для очень крупных заказов возможно выделение до 4 серверов);
- неограниченное время сбора информации (24/7/365);
- сбор информации блоками до 100 Гб (100 Гб собрали -> отгрузили заказчику -> приступили к сбору очередных 100 Гб).
В качестве входных параметров для начала предоставления данной услуги могут выступать:
- текстовый файл с адресами файлов для скачивания;
- парсинг страниц для нахождения контента для скачивания.
Также возможна автоматизация работы:
- вы даете мне параметры для доступа к FTP и весь собранный контент, с указанной вами регулярностью, синхронизируется с вашим сервером (также возможно настроить синхронизацию БД, если попутно со сбором контента будет собираться какая-то информация или параметры).
18th Ноябрь 2007, 04:33 пп
За прошедшие несколько месяцев парсинг, граббинг и сбор информации показали себя как достаточно актуальные и востребованные услуги на современном рынке IT-услуг.
В связи с этим я хочу еще более расширить список клиентов компании ParserPro и в качестве первого шага на этом нелегком пути я представляю партнерскую программу.
С сегодняшнего дня в нашей компании действует партнерская программа на следующих условиях:
- За каждого приведенного мне клиента участник партнерской программы получает 20% от стоимости заказа клиента.
- Если участник партнерской программы привел более 5 клиентов, то он получает 25% от стоимости заказа с каждого последующего заказа.
Для регистрации в партнерской программе вы должны отписать мне на ICQ, либо на емейл (смотрите контакты), либо оставить комментарий к данному посту. От вас требуются следующие данные: ФИО, контактные данные.
Вот так все просто. Вы приводите заказчиков для нашей компании и зарабатываете деньги!
17th Ноябрь 2007, 10:48 пп
На очередном заказе я поставил новый личный рекорд по количеству собранных данных (отдельно собранные ссылки, картинки и прочее в счет не берем):
230 000 записей!
База собиралась изначально в 2 потока, а потом в 5 в течении 3х дней. В процессе работы над этим заказом я понял:
- Что мне нужно купить новый компьютер
(что я уже удачно и сделал);
- Что для каждого проекта нужно писать контроллер процесса выполнения, чтобы случайная остановка сайта-источника на пару часов не останавливала процесс сбора информации и не привела к искривлению данных в базе;
- Что в php memory_limit нужно ставить в значение 64М и постоянно вести мониторинг ресурсов, а то кто бы что не говорил, но php “течет” и это факт, доказанный практикой;
- Что нужно проводить оптимизацию регулярных выражений (этому я думаю посвятить отдельную статью).
Думаю, что некоторые из этих мыслей могут быть полезны другим про в области сбора информации.
Особенно важным моментом является контроль процесса выполнения. В каждом конкретном случае его можно реализовать по разному и я вот сейчас работаю над созданием универсального класса. Как только будут первые наработки - я сразу же отпишу про это в очередной заметке.
24th Октябрь 2007, 12:16 пп
Данную заметку я написал для людей, которые всерьез занимаются парсингом и сбором информации.
Я читаю очень много профильных изданий на тему парсинга и вижу, что профи в этой области беспокоятся лишь об одном - чтобы их скрипты не забанил источник информации.
Как по мне это совершенно неправильно, ведь помните как говорится - “Поступай с ближним так, как ты хочешь чтобы он поступал с тобой”. И исходя из этого изречения я постарался сформулировать несколько тезисов для профипарсеров:
- Перед началом работы проанализируйте статистику сайта-источника и выберите оптимальное для парсинга время.
В настоящее время сделать это достаточно просто, так как большинство интересных и стоящих сайтов участвуют во множестве рейтингов, где можно увидеть их посещаемость не только по дням, но и по часам, что особенно важно. Благодаря этому вы можете подобрать время, когда сервер максимально разгружен. Чаще всего это период между 3-7 часами утра.
Но это не значит, что вы должны в 3 часа утра сидеть перед компом. От вас требуется всего лишь нормально настроить свой компьютер, веб-сервер, поставить на компе будильник (есть такая опция в BIOS Setup) и правильно настроить крон для запуска скриптов.
А если вы используете сервер хостера, то и того проще - просто поставить скрипт на крон.
У этого совета есть еще и практически полезная сторона - в ненагруженные часы вы будете получать ответы от сервера-источника на порядок быстрее, чем в “час-пик”, что ускорить парсинг информации и поможет избежать перегрузок на второй стороне.
- Разбивайте процесс парсинга на максимальное количество независимых процессов.
Очень часто процесс парсинга является двухуровневым или даже трехуровневым (или еще лучше сказать двухпроходным или трехпроходным), то есть происходит в несколько этапов: сбор ссылок -> парсинг страницы или проход каталога -> сбор ссылок (или прочих параметров) -> парсинг конечных страниц.
И я в своей работе каждый этап стараюсь реализовать разными скриптами и запускать их в разные промежутки времени, чтобы снизить нагрузку на конечный сервер.
Это очень удобно и в практическом плане позволяет разделить логику работы скрипта, что несомненно улучшает контроль за процессом и позволяет сделать этапы сбора информации независимыми.
Конечно же минусом такого разбиения является увеличение времени разработки. Но поверьте, если проект крупный, то затраченное на этой стадии время окупится вам с лихвой.
- Ставьте паузы между запросами.
Это важный момент (и парсеры поисковиков знают о чем я говорю :)). И вам не стоит его игнорировать.
Если ваш парсинг предполагает обработку большого объема информации, то вам стоит добавить между запросами небольшие паузы, которые помогут разгрузить удаленный сервер. В противном случае вы можете забить пул запросов и сайт-источник может плавно умереть. И это поверьте мне это очень плохо, потому что тогда ваши действия могут трактовать как (D)DoS-атаку, а это уже уголовно наказуемо.
В своей работе работе я, в основном, использую паузы длиной 100-500 мск.
- Используйте весь возможный инструментарий для снижения объемов передаваемой информации.
При возможности (если это позволяет сервер-источник) используйте Content-Range в своих HTTP запросах (у curl для этого есть опция CURLOPT_RANGE). Это позволит вам сэкономить как свой траффик, так и траффик сервера-источника.
К моему удивлению, Яндекс чего-то не захотел обрабатывать данный HTTP запрос.
Это основные правила, которых, как я считаю, должен придерживаться каждый профи и в основе которых лежит уважение к работе других.
И на последок хочу напомнить, что ваш парсер/граббер в определенный промежуток времени создает нагрузку на порядок больше, чем броузер обычного пользователя. Ведь у парсера не тратится время на рендеринг, парсер не подгружает картинки (если вы ему этого не сказали) и поэтому парсер “листает” страницы сайта-источника на порядок быстрее, чем пользователь. Поэтому не стоит наращивать скорости, потому что вы можете просто “завалить” сервер-источник.
Дополнительные ссылки:
15th Октябрь 2007, 09:22 пп
Данная статья призвана помочь начинающим программистам (или даже их менеджерам), которые всерьез решили заняться сбором и обработкой информации.
Для работы над любым удачным проектом по сбору и обработке информации нужно:
- Определить все значимые параметры собираемой информации.
Это очень важный этап, который все непонятно почему пытаются пройти как можно быстрее (наверное хотят побыстрее заработать).
Пример.
Заказчик попросил вас собрать базу компаний и вы без особых размышлений кинулись в бой.
Но тут не стоит спешить. Надо уточнить:
- по какому региональному признаку отбирать компании?
- каким видом деятельности должны заниматься отбираемые компании?
- какой юридической формы собственности надо отбирать предприятия?
Нужно собрать как можно больше значимых признаков.
Тут я привел очень простой пример, но на практике даже небольшое уточнение поможет сделать вашу работу быстрее и лучше.
- Найти источник информации
На данном этапе следует произвести детальный поиск источника (источников) информации, который максимально удовлетворил бы всем значимым параметрам, которые вы определили в пункте 1. И поверьте мне, это не так уж и просто, как может показаться на первый взгляд. Поэтому я советую вам не концентрироваться на поиске какого-то одного идеального источника, а составить какую-то небольшую таблицу вариантов, из которых вы потом сможете выбрать самый лучший.
- Определить форму представления информации
Если вам надо собирать все подряд и как попало, то этот этап вы можете смело откинуть.
В противном случае стоит определить какие параметры вам стоит собирать, а какие не стоит.
Например, очень часто у меня появляются заказы на сбор базы данных людей. Например, IT специалистов. Источником для такой информации выступают сайты поиска работы и профессиональные сайты. Но на том же сайте поиска работы в IT специалисты попадают даже наборщики текстов, которые, понятное дело, не нужны моему заказчику. Поэтому на основе данных, полученных в пункте 1, я составляю список совпадений и исключений, который и использую при сборе и анализе информации.
- Выбрать средства для сбора информации
Для меня это очень просто – настроил парсер (хотя мне больше нравится слово паук) и в бой.
А если у вас нет соответствующих навыков, то вы можете заказать подобную услугу у профессионалов, либо прибегнуть к каким-то программным средствам, которые уже далеко не редкость.Тут главное подобрать что-то достаточно гибкое и быстрое. Скорости стоит уделить особое внимание, потому что порой приходится собирать базы в миллионы записей и промедления даже в доли секунды на таких объемах будут значимыми.
Вот и все. Надеюсь, что мне удалось дать вам понимание процесса качественного сбора и анализа информации.
Если у вас будут вопросы, заказы или предложения – свяжитесь со мной.
Удачи!
6th Октябрь 2007, 11:16 пп
Приступая к работе, я решил проанализировать состояние рынка услуг в сфере парсинга и грабинга информации.
Оказалось, что основными потребителями услуг в сфере парсинга (по мнению Гугла) являются оптимизаторы, которые используют данные инструменты в целях парсинга выдач поисковиков.
И соответственно отношение к подобным услугам в интернете сложилось “немного” негативное. Хотя я и не могу понять почему.
Для того, чтобы хоть как-то оправдать парсинг/грабинг приведу базовые концепции построение крупных проектов.
В основе построения крупных проектов могут лежать следующие 3 фундамента:
- комьюнити: жж, форумы, социальные сети
- команда: профессиональные журналисты, который постоянно пишут за деньги
- грабинг/парсинг информации: новостные агрегаторы, порталы…
Очень часто используется смесь 2х или 3х этих инструментов.
Вывод: парсинг - один из высокоэффективных инструментов построения крупных сайтов с динамическим контентом. Если использовать данный инструмент с умом, то он никак не повредит вашей репутации и не повлечет за собой плачевных последствий.