Этот материал я подготовила в рамках ряда статей по теме автоматизации первоначального наполнения форумов. В последнее время на фрилансе часто появляются проекты по наполнению форумов. За один пост предлагают смешные цены — $0,03 - $0,05. Но еще более смешным является то, что исполнители на такие проекты находятся. Уж не знаю, то ли на них как-то по-особому отразился кризис, то ли они готовы на все за отзыв. В любом случае, ручное выполнение такой работы — труд неблагодарный. А вот автоматизировать этот процесс — еще какой благодарный! ;)
Итак, задача: разработать программу для парсинга тем и сообщений с форумов-"доноров", их изменение и постинг на форумы-"акцепторы". Сразу посоветую: не стоит полностью копировать ветки чужих форумов, пусть даже разных, на свой ресурс. Лучше потратить некоторое время и изменить сообщения. Так же не стоит брать последние темы, можно и обойтись старыми (если, конечно, ваш форум просто для общения, а не для обсуждения каких-либо новинок). Примеры форумов "неактуальных тематик" (я имею в виду тех, большая часть вопросов которых не устаревает или устаревает незначительно по прошествии довольно длительного времени): "женские" форумы, некоторые программистские форумы, кулинарные форумы, форумы о саде-огороде, о здоровьи и т.д..
Итак, с тематикой своего форума вы определились. Далее блуждаете по сети и подыскиваете ресурсы, которые станут донорами. Кстати, если вы все-таки собрались открыть форум, идеальным вариантом будет тематика, интересная и близкая вам. Не стоит заводить форум по аквариумным рыбкам, если с рыбой вы имеете дело только за обедом.
Проект по парсингу одних и наполнению других форумов у меня получается очень громоздким, здесь я не буду описывать все в деталях, ограничусь общим планом.
После того, как выбрали форумы-доноры, требуется написать их парсер. Под каждый форум составляются регулярные выражения для парсинга разделов, тем, сообщений и авторов сообщений. Это самая, на мой взгляд, трудоемкая и рутинная задача. Но главное — правильно разработать структуру БД, в которой все темы и сообщения потом будут храниться.
На следующем этапе парсится содержимое форума и сохраняется в базе. Алгоритм обхода форума интуитивно прост. С главной страницы в базу заносятся все разделы, потом обходим все разделы для сбора тем и сообщений в каждой теме.
После того, как все сообщения оказались у вас в руках, можно приступать к подготовке данных для размещения на ваш форум. Если форум ваш собственный, то регистрируете банду ботов напрямую инсертами в базу (ники, аватары, краткая информация). Если же форум не ваш — все это проделываете вручную. Темы и сообщения изменяются и импортируются в определенном формате в файлы. В отдельный файл импортируются данные о юзерах/паролях, от лица которых будет осуществляться постинг. Сообщения будут появляться на форуме постепенно, по расписанию. Это создаст иллюзию реального общения стабильной аудитории. А если темы будут интересными — новые пользователи не замедлят подтянуться. Еще один важный момент, который я предусматривала при разработке, — как можно более широкие возможности по управлению контентом на стадии подготовки к постингу. Каждое сообщение можно менять вручную (после изменения оно помечается и вы всегда видите, что меняли, а что нет), исходная спарсенная ветка остается в оригинале, а для постинга готовится ее копия, так что можно менять и не бояться :) Так же можно в любое место добавить произвольные сообщения или удалить из списка ненужные.
Подробнее о форматах и механизме постинга напишу потом.
___
Чтобы быть в курсе обновлений блога, можно подписаться на RSS.
Интересная задумка, есть уже готовое решение?!
ОтветитьУдалитьА то устал нанимать я школьников ;)
Еще не совсем готовое. Занимаюсь программой уже давно, но времени получается уделять немного. Парсинг практически готов, остальное — только продумано :)
ОтветитьУдалитьСейчас занимаюсь подобной задачей. Masha, я так понимаю, выобрабатываете непосредственно html-код. Почему не dom-объекты браузера? При помощи чего получаете html-код, если не секрет :)
ОтветитьУдалитьЯ сталкнулся с такой неприятностью: события OnDocumentComplete и OnNavigateComplete2 наступают раньше чем страница полностью загрузится в WebBrowser. Это влечет за собой ряд неудобств. Не подскажете, как подругому отследить окончание загрузки страницы?
С регулярками мне как-то проще) Сначала думала о dom-е, поанализировала различные движки форумов (стандартные и не очень) и решила, что универсальней будет пропарсить все регулярками.
ОтветитьУдалитьЧто касается html. Можно получать его разными способами, я писала об этом на блоге. Но мне почему-то привычнее сохранить страницу на диске.
Насчет OnDocumentComplete... не знаю, может поможет этот материал? http://www.blogok.ru/2009/01/09/readystate-in-twebbrowser/
Спасибо! Конструкция
ОтветитьУдалитьrepeat
Application.ProcessMessages;
until WebBrowser.ReadyState = READYSTATE_COMPLETE;
И впрям работает :)
//offtop.
ОтветитьУдалитьНахаа начала рекламную кампанию, смотрю, банера на сео- и околосео блогах замелькали. Интересно, сумеет ли выжить очередная биржа ссылок в наше суровое время :-D
Zoah, да ладно, пусть висит, мне не жалко: повесила и забыла. Если найдутся желающие разместить на сайте свой банер - рассмотрю любые предложения))
ОтветитьУдалитьХороший пост)) А еще можно подумать о том, где есть форумы или подобие форумов, куда не заглядывает гугаль. то есть контент получается уник 100%. ;)
ОтветитьУдалитьmr.Hide, а что тут особо думать? :) Из форумов можно брать "нить разговора" в теме, а уж срерайтить — не составит труда. По-моему, главный положительный момент автоматизации здесь — это то, что сообщения будут автоматически поститься от имени разных людей. Если брать за сообщение центов 10, а наполнение для форумов производить в промышленных масштабах — получится очень даже неплохо.
ОтветитьУдалитьЕсли контент не хочется переписывать — пожалуйста, никто не запрещает парсить сообщения из групп vkontakte, допустим. Но я решила все-таки поработать с форумами. Уже спарсила форум по кулинарии и "женский" форум. Постинг уже работает, но надо кое-что отладить и натереть до блеска :) А потом, может, выложу где-нибудь предложение подобной услуги. Естественно, в предложении не надо говорить, что все автоматизировано и требует только одного нажатия на кнопку: зачем демпинговать тех, кто логинится и постит вручную? ;))
:D
ОтветитьУдалитьХорошая задумка, и смотрю есть решение. А конечный результат?
ОтветитьУдалитьmiraz, конечного результата еще нет :)
ОтветитьУдалитьЗдравствуйте Маша!
ОтветитьУдалитьНабрел на Ваш блог и с огромным удовольствием изучаю. Я занимаюсь примерно тем-же, что и Вы, т.е. "граблю немного интернета, изменяю и наполняю свои ресурсы". Ваши заметки особенно интересны мне потому, что я тоже использую Делфи для создания десктопных приложений.
А теперь позвольте задать вопрос по сути. Вы отмечаете тот факт, что используете регулярные выражения для получения нужных элементов из сырого html кода. Это делается прямо в Делфи? Т.е. есть возможность использовать их в коде на паскале?
Просто я обрабатываю html через строки на самом примитивном уровне (через Pos и Copy), а хотелось бы применять более прогрессивные технологии.
Спасибо.
Виноват
ОтветитьУдалитьВсе нашел сам
http://parsing-and-i.blogspot.com/2008/08/blog-post_25.html
Спасибо огромное за интереснейшие посты!