Статья является примером использования программы «Парсер сайтов и файлов» для сбора данных с веб-страниц

Инструкция по добавлению файла настроек в программу

Парсер форума littleone.ru — отслеживание новых сообщений

Задача: 

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

В отдельных столбцах отобразить текст сообщения автора, и, если есть, цитируемое сообщение (и автора цитаты)

ВложениеРазмерЗагрузкиПоследняя загрузка
Настройки парсера: forum.littleone.ru.xlp12.82 КБ7633 часа 59 минут назад
Пример создаваемой таблицы Excel52 КБ0Ещё не загружался
Алгоритм работы парсера605.82 КБ12821 день 4 часа назад
Описание: 

Изначально, парсер берёт из исходных данных ссылку на тему на форуме, загружает эту страницу,
и на ней ищет количество страниц в теме (там указано что-то вроде «страница 1 из 670»)

Обратите внимание, что программа добавляет в ссылку (URL) дополнительный параметр &pp=30
Для движка форума (vBulletin) это означает, что надо выводить по 30 постов на страницу.
Это позволит нам ускорить обработку темы (так как быстрее загрузить 670 страниц по 30 постов, чем 2000 страниц по 10 постов)

После этого, программа формирует массив значений — целых чисел от 670 до 1,
и для каждого из значений прогружает соответствующую страницу форума
(обработка начинается с последней страницы, где самые свежие посты, т.к. требуется добавить в файл только новые сообщения)

С каждой страницы, путем поисков тегов li класса postbitlegacy, мы получаем массив из нескольких элементов (отдельных постов).
Действием «Переставить элементы массива в обратном порядке» мы получаем список постов, следующий от самого нового к более старым.

В выводе на лист, — ничего особенного, просто извлечение нужных данных из HTML-кода сообщений

Поскольку даты последних постов на форуме выводятся в формате «сегодня, в 18:47» и «вчера, в 21:15», а хотелось бы видеть даты в нормальном формате,
при помощи действия «Заменить часть текста» мы меняем текст «сегодня» на текущую дату {time=DD.MM.YYYY},
а текст «вчера» — на вчерашнюю дату {time-1=DD.MM.YYYY}

Перед выводом очередно строки на лист, в «столбце 20» с названием ID (столбец не выводится на лист, а только участвует в расчетах, — т.к. в настройках этого столбца снята галочка «выводить значение на лист»), вычисляется ID (уникальный идентификатор) сообщения на форуме.
Программа выполняет поиск этого ID в первом столбце листа, и, если такой ID найден (ранее это сообщение уже выводилось на лист), — то парсер останавливается.

При остановке парсера (или при штатном завершении его работы, когда все страницы темы обработаны), автоматически выполняется набор действий с названием «Parser_Finish»
(этот набор действий можно настроить на вкладке «Дополнительно — Наборы действий»)
При этом, выполняется сортировка таблицы по первому столбцу (чтобы новые сообщения в результатах отображались сверху таблицы),
после чего файл Excel сохраняется.

ВНИМАНИЕ: в настройках прикреплённого парсера, на вкладке «Вывод на лист — Настройки листа для вывода», установлена галочка «При запуске, создавать новый файл для вставки данных».
Поэтому, парсер будет каждый раз загружать ВСЕ сообщения со всех страниц форума (а не только новые)

Если вы хотите, чтобы в СУЩЕСТВУЮЩУЮ ТАБЛИЦУ подгружались ТОЛЬКО НОВЫЕ СООБЩЕНИЯ, - то снимите эту галочку.
Но, в этом случае, перед запуском парсера файл Excel (хотя бы пустой) должен быть открыт (в него будут добавляться новые записи)

Комментарии

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Подтвердите, пожалуйста, что вы - человек:
  _  _            __   __               _     
| || | _ __ \ \ / / ___ ____ | |
| || |_ | '_ \ \ V / / _ \ |_ / | |
|__ _| | |_) | | | | __/ / / | |___
|_| | .__/ |_| \___| /___| |_____|
|_|
Введите код, изображенный в стиле ASCII-арт.