Парсер-паук перелинкованных топиков форумов.
Сроки - СРОЧНО!
Будет файл конфига (в нем софт будет определять движок форума и гулять по ссылкам)
ТЗ на примере 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).
Ну и последним, указываем в настройках чекером:
Добавлять результат к основной базе [ ]
== Если добавлять, то те ссылки на топики другим форумов (уникальные), что мы собрали с первого форума, просто добавятся вниз файла. Но тут тоже как-то на уникальность проверять надо хоста. Что бы не было - что один форум пару раз парсился.
Вот пока всё, для остальных движков сделаем уже после этого - там всё по аналогии.