PHP: я хочу создать страницу, которая извлекает изображения из ветки форума, выполнимо? CodeIgniter? - PullRequest
0 голосов
/ 28 декабря 2008

У вас есть форум (vbulletin), на котором есть куча изображений - насколько легко было бы иметь страницу, которая посещает поток, проходит по каждой странице и пересылает пользователю (через ajax или что-то еще) изображения. я не спрашиваю о фильтрации (это легко, конечно).

выполнимо за день? :)

У меня есть сайт, который также использует codeigniter - было бы еще проще с его помощью?

Ответы [ 4 ]

2 голосов
/ 28 декабря 2008

при условии, что это должно быть выполнено на сервере, curl + regexp - ваши друзья ... и да .. выполнимо за день ...

есть также некоторые парсеры HTML с открытым исходным кодом , которые могут сделать это чище

0 голосов
/ 28 декабря 2008

Да, выполнимо в день

Поскольку у вас уже есть рабочая настройка CI, я бы использовал ее.

Я бы использовал следующий подход:

1) Сделать модель в КИ, способную:

  • вход в vbulletin (изображения часто добавляются как вложения, и вам необходимо войти в систему, прежде чем вы сможете их скачать). Используйте что-то вроде snoopy .
  • сбор URL для «последней кнопки» с использованием preg_match (), парсинг URL с помощью parse_url () / и parse_str () и генерация ссылок со страницы 1 на страницу последнюю
  • сбор html со всех сгенерированных ссылок. Все еще использую snoopy.
  • поиск всех изображений в html с помощью preg_match_all ()
  • загрузка всех изображений. Все еще использую Snoopy.
  • перемещение загруженного изображения из каталога tmp в другой каталог, переименовывая его в imagename_01, imagename_02 и т. Д., Если такое же имя изображения уже существует.
  • сохранение имени изображения и точного размера байта в таблице базы данных. Тогда вы можете избежать загрузки одного и того же изображения более одного раза.

2) Создайте метод в контроллере, который собирает все изображения

3) Установите cronjob, который собирает изображения через равные промежутки времени. wget -o /tmp/useless.html http://localhost/imageminer/collect должно работать хорошо

4) Напишите код, который выводит симпатичный HTML-код для конечного пользователя, используя таблицу db для получения изображений.

0 голосов
/ 28 декабря 2008

При этом обязательно ограничьте скорость получения. Вы не хотите перегружать сервер форума, запрашивая много страниц в секунду. Самый простой способ сделать это, вероятно, просто поспать по X секунд между каждой выборкой.

0 голосов
/ 28 декабря 2008

Зависит от того, где работает ваш скриптовый скрипт.

Если он работает на том же сервере, что и программное обеспечение форума, вы можете напрямую обратиться к базе данных и проверить там ссылки на изображения. Я не знаком с vbulletin, но, вероятно, он предлагает API плагина, который обеспечивает доступ к базе данных высокого уровня. Это упростит запросы ко всем сообщениям в теме.

Если, однако, ваш скрипт выполняется на другом компьютере (или, другими словами, не связан с программным обеспечением форума), он должен действовать как клиент http. Он может извлекать все страницы потока (либо автоматически путем поиска СЛЕДУЮЩЕЙ ссылки на странице, либо вручную, указав все страницы в качестве параметров) и искать в HTML-коде теги изображений (<img .../>). Затем можно использовать регулярное выражение для извлечения URL-адресов изображений. Наконец, сценарий может использовать эти URL-адреса изображений для создания другой страницы, отображающей все эти изображения, или может загрузить их и создать пакет.

Во втором случае скрипт фактически действует как «паук», поэтому он должен учитывать такие вещи, как robots.txt или метатеги.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...