Поиск по блогу

среда, 4 февраля 2009 г.

Общие слова о парсинге сообщений с форумов

Давно не обновляла блог, так как во всю занимаюсь непосредственно программированием и на писанину лишнего времени нет.

Этот материал я подготовила в рамках ряда статей по теме автоматизации первоначального наполнения форумов. В последнее время на фрилансе часто появляются проекты по наполнению форумов. За один пост предлагают смешные цены — $0,03 - $0,05. Но еще более смешным является то, что исполнители на такие проекты находятся. Уж не знаю, то ли на них как-то по-особому отразился кризис, то ли они готовы на все за отзыв. В любом случае, ручное выполнение такой работы — труд неблагодарный. А вот автоматизировать этот процесс — еще какой благодарный! ;)

Итак, задача: разработать программу для парсинга тем и сообщений с форумов-"доноров", их изменение и постинг на форумы-"акцепторы". Сразу посоветую: не стоит полностью копировать ветки чужих форумов, пусть даже разных, на свой ресурс. Лучше потратить некоторое время и изменить сообщения. Так же не стоит брать последние темы, можно и обойтись старыми (если, конечно, ваш форум просто для общения, а не для обсуждения каких-либо новинок). Примеры форумов "неактуальных тематик" (я имею в виду тех, большая часть вопросов которых не устаревает или устаревает незначительно по прошествии довольно длительного времени): "женские" форумы, некоторые программистские форумы, кулинарные форумы, форумы о саде-огороде, о здоровьи и т.д..

Итак, с тематикой своего форума вы определились. Далее блуждаете по сети и подыскиваете ресурсы, которые станут донорами. Кстати, если вы все-таки собрались открыть форум, идеальным вариантом будет тематика, интересная и близкая вам. Не стоит заводить форум по аквариумным рыбкам, если с рыбой вы имеете дело только за обедом.

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

После того, как выбрали форумы-доноры, требуется написать их парсер. Под каждый форум составляются регулярные выражения для парсинга разделов, тем, сообщений и авторов сообщений. Это самая, на мой взгляд, трудоемкая и рутинная задача. Но главное — правильно разработать структуру БД, в которой все темы и сообщения потом будут храниться.



На следующем этапе парсится содержимое форума и сохраняется в базе. Алгоритм обхода форума интуитивно прост. С главной страницы в базу заносятся все разделы, потом обходим все разделы для сбора тем и сообщений в каждой теме.

После того, как все сообщения оказались у вас в руках, можно приступать к подготовке данных для размещения на ваш форум. Если форум ваш собственный, то регистрируете банду ботов напрямую инсертами в базу (ники, аватары, краткая информация). Если же форум не ваш — все это проделываете вручную. Темы и сообщения изменяются и импортируются в определенном формате в файлы. В отдельный файл импортируются данные о юзерах/паролях, от лица которых будет осуществляться постинг. Сообщения будут появляться на форуме постепенно, по расписанию. Это создаст иллюзию реального общения стабильной аудитории. А если темы будут интересными — новые пользователи не замедлят подтянуться. Еще один важный момент, который я предусматривала при разработке, — как можно более широкие возможности по управлению контентом на стадии подготовки к постингу. Каждое сообщение можно менять вручную (после изменения оно помечается и вы всегда видите, что меняли, а что нет), исходная спарсенная ветка остается в оригинале, а для постинга готовится ее копия, так что можно менять и не бояться :) Так же можно в любое место добавить произвольные сообщения или удалить из списка ненужные.

Подробнее о форматах и механизме постинга напишу потом.
___

Чтобы быть в курсе обновлений блога, можно подписаться на RSS.

Статьи схожей тематики:



14 комментариев:

  1. Интересная задумка, есть уже готовое решение?!
    А то устал нанимать я школьников ;)

    ОтветитьУдалить
  2. Еще не совсем готовое. Занимаюсь программой уже давно, но времени получается уделять немного. Парсинг практически готов, остальное — только продумано :)

    ОтветитьУдалить
  3. Сейчас занимаюсь подобной задачей. Masha, я так понимаю, выобрабатываете непосредственно html-код. Почему не dom-объекты браузера? При помощи чего получаете html-код, если не секрет :)
    Я сталкнулся с такой неприятностью: события OnDocumentComplete и OnNavigateComplete2 наступают раньше чем страница полностью загрузится в WebBrowser. Это влечет за собой ряд неудобств. Не подскажете, как подругому отследить окончание загрузки страницы?

    ОтветитьУдалить
  4. С регулярками мне как-то проще) Сначала думала о dom-е, поанализировала различные движки форумов (стандартные и не очень) и решила, что универсальней будет пропарсить все регулярками.

    Что касается html. Можно получать его разными способами, я писала об этом на блоге. Но мне почему-то привычнее сохранить страницу на диске.

    Насчет OnDocumentComplete... не знаю, может поможет этот материал? http://www.blogok.ru/2009/01/09/readystate-in-twebbrowser/

    ОтветитьУдалить
  5. Спасибо! Конструкция
    repeat
    Application.ProcessMessages;
    until WebBrowser.ReadyState = READYSTATE_COMPLETE;
    И впрям работает :)

    ОтветитьУдалить
  6. //offtop.
    Нахаа начала рекламную кампанию, смотрю, банера на сео- и околосео блогах замелькали. Интересно, сумеет ли выжить очередная биржа ссылок в наше суровое время :-D

    ОтветитьУдалить
  7. Zoah, да ладно, пусть висит, мне не жалко: повесила и забыла. Если найдутся желающие разместить на сайте свой банер - рассмотрю любые предложения))

    ОтветитьУдалить
  8. Хороший пост)) А еще можно подумать о том, где есть форумы или подобие форумов, куда не заглядывает гугаль. то есть контент получается уник 100%. ;)

    ОтветитьУдалить
  9. mr.Hide, а что тут особо думать? :) Из форумов можно брать "нить разговора" в теме, а уж срерайтить — не составит труда. По-моему, главный положительный момент автоматизации здесь — это то, что сообщения будут автоматически поститься от имени разных людей. Если брать за сообщение центов 10, а наполнение для форумов производить в промышленных масштабах — получится очень даже неплохо.
    Если контент не хочется переписывать — пожалуйста, никто не запрещает парсить сообщения из групп vkontakte, допустим. Но я решила все-таки поработать с форумами. Уже спарсила форум по кулинарии и "женский" форум. Постинг уже работает, но надо кое-что отладить и натереть до блеска :) А потом, может, выложу где-нибудь предложение подобной услуги. Естественно, в предложении не надо говорить, что все автоматизировано и требует только одного нажатия на кнопку: зачем демпинговать тех, кто логинится и постит вручную? ;))

    ОтветитьУдалить
  10. Хорошая задумка, и смотрю есть решение. А конечный результат?

    ОтветитьУдалить
  11. miraz, конечного результата еще нет :)

    ОтветитьУдалить
  12. Сергей - HappyOyster13 марта 2009 г., 12:57

    Здравствуйте Маша!
    Набрел на Ваш блог и с огромным удовольствием изучаю. Я занимаюсь примерно тем-же, что и Вы, т.е. "граблю немного интернета, изменяю и наполняю свои ресурсы". Ваши заметки особенно интересны мне потому, что я тоже использую Делфи для создания десктопных приложений.

    А теперь позвольте задать вопрос по сути. Вы отмечаете тот факт, что используете регулярные выражения для получения нужных элементов из сырого html кода. Это делается прямо в Делфи? Т.е. есть возможность использовать их в коде на паскале?

    Просто я обрабатываю html через строки на самом примитивном уровне (через Pos и Copy), а хотелось бы применять более прогрессивные технологии.

    Спасибо.

    ОтветитьУдалить
  13. Сергей - HappyOyster13 марта 2009 г., 13:09

    Виноват
    Все нашел сам
    http://parsing-and-i.blogspot.com/2008/08/blog-post_25.html

    Спасибо огромное за интереснейшие посты!

    ОтветитьУдалить

Комментарии модерируются, вопросы не по теме удаляются, троллинг тоже.

К сожалению, у меня нет столько свободного времени, чтобы отвечать на все частные вопросы, так что, может, свой вопрос лучше задать на каком-нибудь форуме?

Поделиться