Парсер-паук перелинкованных топиков форумов.

Андрей19 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
05.03.2014

Сроки - СРОЧНО!

Будет файл конфига (в нем софт будет определять движок форума и гулять по ссылкам)

ТЗ на примере PHPBB

Корм софту список ссылок, вида:

http://oceanica.brookscv.bget.ru/viewtopic.php?f=15&t=78865&p=341861#p341861

http://www.itforumas.puslapiai.lt/viewtopic.php?f=7&t=328154

и т.п.

Файл конфига софта, где будем указывать признак движка, config.sys

1. Задаем в конфиге регулярку, которые будут сопоставляться к движкам и номерам топиков\подфорумов.

---

MAIN

---

viewtopic|viewforum|viewthread|topic|thread|showthread|showtopic|showforum|board \\я регулярки не знаю, короче брать те ссылки (только исходящие с форума, в которых есть эти слова. Берем ТОЛЬКО исходящие ссылки других форумов. Ссылки донора - не берутся)

^https?://[^/]*?\.(?:ru|ua|by) \\ и вот это регулярка с другой программы, т.е. берем всё бурж форумы, кроме тех, где есть .ru, .by и .ua

Дальше в конфиге задаем признак движка, вот у нас были ссылки:

http://oceanica.brookscv.bget.ru/viewtopic.php?f=15&t=78865&p=341861#p341861

http://www.itforumas.puslapiai.lt/viewtopic.php?f=7&t=328154

---

PHPBB

---

viewtopic.php \\признак движка

?f=*cat* \\после = идёт номер категории. *cat* = номер категории донора

&t=*topic* \\номер темы

[host]/viewforum.php?f=*cat* \\ ссылка движка до категории

Все остальные параметры, если будут в ссылке - игнорируются.

--------

2. Задаем в скрипте количество тем, которые брать от последнего.

Брать тем: 5000

--

Это означает, что мы берем только 5000 последних тем.

Как узнать какое количество тем?

На примере PHPBB

http://oceanica.brookscv.bget.ru/viewtopic.php?f=15&t=78865&p=341861#p341861

у нас был определен номер категории = 15 (f=15)

Переходим по ссылке, http://oceanica.brookscv.bget.ru/viewforum.php?f=15 и смотрим несколько последних тем (бывает старые темы наверху подняты и номер будет меньшим последнего).

На данном примере последняя тема была: http://oceanica.brookscv.bget.ru/viewtopic.php?f=15&t=310397

t=310397

---

Теперь просто вычитаем из этих цифр 5000 (указывали в настройках), и долбим каждую тему. Нули в ссылке не объязательны.

http://oceanica.brookscv.bget.ru/viewtopic.php?f=15&t=310397

...

http://oceanica.brookscv.bget.ru/viewtopic.php?f=15&t=305399

http://oceanica.brookscv.bget.ru/viewtopic.php?f=15&t=305398

http://oceanica.brookscv.bget.ru/viewtopic.php?f=15&t=305397

Собираем ссылки перелинкованные. Я думаю, использовать может sql файловый (не помню точно), можно же проверять быстро на дубли? Какие дубли тоже в настройках указывать (по хосту или по номеру топика). Что бы одинаковые топики не собирались или одинаковые форумы).

И последнее в настройках указывать - Глубинный парсинг [] - тут писать 0,1,2,3, например поставили 2.

1. Зашли в топик текущего форума.

1.1. Собрали ссылки в этой топике уникальные (не по хосту, а по строчке), сразу же перешли по этим ссылкам на другие форумы. Собрали оттуда топики уникальные ещё раз. И ещё рза так же перешли на другие форумы и опять собрали (это глубина 2).

Ну и последним, указываем в настройках чекером:

Добавлять результат к основной базе [ ]

== Если добавлять, то те ссылки на топики другим форумов (уникальные), что мы собрали с первого форума, просто добавятся вниз файла. Но тут тоже как-то на уникальность проверять надо хоста. Что бы не было - что один форум пару раз парсился.

Вот пока всё, для остальных движков сделаем уже после этого - там всё по аналогии.