LINUX.ORG.RU

[ищется?] бот для работы с сайтами


0

1

Добрый вечер.

Пришла мне в голову такая идея - было бы неплохо иметь программу, которая предоставляет удобный интерфейс для работы со всевозможными сайтами. Например, существует множество программ для работы с видеосервисами (поиск, скачка, итп.) - youtube, итп. Если не ошибаюсь, кто-то из местных писал «клиент» для ЛОРа. Хочелось бы иметь _одну_ софтину для автоматизации работы с разными сайтами (поддержка которых добавляется с помощью модулей). При этом хотелось бы иметь не просто альтернативный интерфейс без всего лишнего, а в некоторой степени интеллектуальную программу, которая добавляет функции автоматического поиска, ведения истории, генерации отчётов, итп.

Что я имею ввиду: предположим, мы работаем с популярным торрент трекером rutracker; меня интересуют, скажем, дистрибутивы Linux; я бы хотел иметь возможность указать программе, чтобы она вытащила информацию обо всех соответствующих страницах и сохранила её в локальную базу данных; при этом я бы хотел, чтобы эту информацию она регулярно обновляла и в случае появления новых раздач я получал бы уведомление; затем из этой базы мне нужно получить информацию обо всех раздачах Ubuntu, в которых более 5 сидеров и сгенерировать отчёт в виде одной html страницы, которую я мог бы быстро просмотреть; на странице я бы хотел видеть основную информацию о раздачах, плюс для каждой из них скриншот (который программа сама добудит из страницы с раздачей и сохранит на винт); в дальнейшем мне может потребоваться автоматически вытягивать и передавать на закачку в Transmission все торренты, в названиях которых фигурирует amd64, x86_64; также мне может потребоваться посмотреть, какие торренты были выложены DD/MM/YYYY. Пример конечно надуман, но надеюсь идея понятна.

Фактически, нужно делать следующее: погулять по сайту, почитать страницы, вытащить из них ценную информацию и построить из всего этого базу данных; если надо, построить отчёты; если надо, что-то автоматом скачать; если надо, запустить внешнюю программу с нужными параметрами; всё это должно при необходимости управляться scheduler'ом.

Конечная цель - вместо ежедневной траты более часа на просмотр нужных сайтов тратить не более 15 минут.

Пример с ЛОРом: каждый день с утра получать одну страницу с заголовками всех тем из Development, Games, плюс в конце страницы вывести всё новенькое из Talks в виде аля imageboard (название темы + первое и последние 2/3 сообщения), при этом порезав все темы и сообщения пользователей XXX, YYY, ZZZ (любые совпадения с реальными аккаунтами случайны); ко всему прочему вывести список моих тем, созданных не более месяца назад, в которых имеются новые сообщения.

Пример с youtube: зайти под моим аккаунтом, посмотреть, если ли новые видео в каналах, на которые я подписан; если есть - все видео скачать и сгенерировать страницу с названиями видео и 4 скриншотами к каждому.

Получается, что сама программа должна предоставлять базовые функции - настраимого скриптами бота, интерфейс к базе, ведение истории, интерфейс к wget, youtube-dl, генератор отчётов, итп. Модули соответственно должны всё это использовать а также предоставлять шаблоны отчётов, шаблоны запросов, gui для настройки самих себя и прочие удобства.

Первый вопрос - попадалось ли вам что нибудь подобное ? Если нет, то какие будут предложения: на чём писать, и что можно взять готового ?

★★★★

Если у сервиса есть API то пишешь биндинги для своего любимого языка программирования.
Если апи нет, то корячишься с парсингом страниц (например через WWW-Mechanize в перле) и получешь тоже самое. Так же можешь помучать RSS/Atom.

Nao ★★★★★
()

Я например частично автоматизировал скачивание торрентов посредством flexget.
Можно посмотреть в этом направлении, но у тебя задачи несколько шире.

Nao ★★★★★
()

>Пример конечно надуман,

пример более чем надуман;

необходим реалистичный юз кейс; у меня был такой, что исходя из него (и твоего насчет ЛОРа):

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

Например, иерархическая модель:

Объекты уровня 1 — это разделы (например девелопмент)

Объекты уровня 2 — это темы (например «[ищется?] бот для работы с сайтами»)

Объекты уровня 3 — это мессаги (например, эта)

У объектов есть атрибуты; объект уровня М задает (т.е. содержит в себе или содержит гиперсылку на) оглавление объектов уровня М+1

Атрибуты (в т.ч. оглавление) выделяются регулярными выражениями, которые создаются для сайта; под конкретную задачу задаются функции (или опять регулярные выражения) на тему «откуда сколько брать, чтобы не выкачать весь сайт».

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

драйвер ходит по всему этому хозяйству, обновляет кэш и загоняет это все в БД

дальше осталось писать запросы

_______________________________________

готов поучаствовать побольше в обсуждении, если ты правда че-то писать собрался или найдешь похожу хрень хотя бы для форумов; теперь насчет похожих и готовых:

идеи парсить форумы (именно форумы) во что-то более вменяемое приходили не только тебе; даже тут на ЛОРе что-то в новостях такое проскакивало (эта хрень ЕМНИП потом показывала распарсенные форумы в мозилловском движке а-ля почта или nntp), и в том топике отметился gaa, сказав, что его tklor можно или нельзя подтянуть до такой степени

(из совсем мелкого — парсер ЛОРа, загоняющий его в nntp пробегал)

www_linux_org_ru ★★★★★
()

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

www_linux_org_ru ★★★★★
()

Идея напрашивается, но пока необходимость такой программы неочевидна. Все перечисленное действительно сегодня перекрывается RSS и закладками.

В будущем действительно было бы полезно предоставлять стандарнизированный интерфейс для доступа к базе данных каждого сайта, минуя таким образом ненужную петлю в виде генерации-парсинга html.

Пример - сайты-каталоги, навроде http://www.bioimages.org.uk/html/t1.htm. Сколько труда стоило выкачать его базу и обойти ограничения трафика.

mclaudt
()
Ответ на: комментарий от mclaudt

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

mclaudt
()

прочитал по диагонали, общее впечатление: «хочу чтоб было за@#ись». Самый гемор - создание модулей (читай парсера) для каждого конкретного сайта. Повторный гемор, если дизайн любимого сайта изменится. Вывод - использовать экспортные функции любимого сайта, как уже сказали как вариант - RSS.

Lee_Noox ★★★
()
Ответ на: комментарий от www_linux_org_ru

Спасибо за развёрнутый ответ.

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

Согласен, но в принципе, меня устраивает ситуация, при которой модули могут быть на порядок сложнее основной программы. Меня не смущает то, что мы уходим не так далеко от нынешней ситуации (при которой куча разработчиков пишут свои независимые проекты), предоставляя лишь готовый и более-менее унифицированный GUI, генератор отчётов/запросов, и ещё пару удобств в качестве основы, оставляя всю тяжёлую работу разработчикам модулей. Как мне кажется, лучше иметь хоть что-то, чем ничего. Иными словами, можно просто написать framework для написания клиентов к сайтам. Думаю, это уже будет неплохой результат.

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

Вообще говоря, оно мне надо, всё зависит от того, найду ли я что нибудь готовое. Но бросаться в разработку в попыхах точно не буду - в данном случае лишний раз хорошенько подумать, чем потом переписывать всё с нуля. В ближайшие недели я наверное поищу что либо похожее, и почитаю теорию (если таковая найдётся), а там видно будет.

runtime ★★★★
() автор топика
Ответ на: комментарий от Nao

> Я например частично автоматизировал скачивание торрентов посредством flexget.

Спасибо, это тоже может пригодиться.

runtime ★★★★
() автор топика
Ответ на: комментарий от power

> Yahoo! Pipes

Спасибо, тоже интересно.

runtime ★★★★
() автор топика

> было бы неплохо иметь программу, которая предоставляет удобный интерфейс для работы со всевозможными сайтами

любой browser + плюс набор стандартов w3c. или ты хочешь свой аналог с бл. дж. и ш. ?

Anoxemian ★★★★★
()

tl;dr многабуков

но можно такого бота написать, например, на WWW::Mechanize, tagsoup, и т. п. Или, посмотреть, как Selenium браузером управляет

Вот удобный интерфейс архивации/просмотра придумать — там да, думать надо.

ЗЫЖ слабо бота написать, чтобы на ЛОРе флудил?

anonymous
()
Ответ на: комментарий от anonymous

>>но можно такого бота написать, например, на WWW::Mechanize, tagsoup, и т. п.

Кстати может именно здесь скажут свое слово наработки команды Uzbl. Он же адово модульный по слухам.

mclaudt
()
Ответ на: комментарий от mclaudt

Интересно, зачем выкачивать и потрошить сайт Википедии, если содержимое у них и так выложено в архиве?

ximeric
()
Ответ на: комментарий от Lee_Noox

Не везде есть rss, хотя отсутствие - редкость.

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

ximeric
()
Ответ на: комментарий от mclaudt

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

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от runtime

> предоставляя лишь готовый и более-менее унифицированный GUI

ахренеть.

при слишком широкой модели (а ты ее пока никак не ограничил) тебе придется заново написать Microsoft Access, не меньше (это при том, что аналогичный компонент ОО.о в достаточно хреновом состоянии)

www_linux_org_ru ★★★★★
()

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


Да легко.

Для этого всего навсего надо перевести весь интернет на XML. man http://ru.wikipedia.org/wiki/Web_Ontology_Language http://en.wikipedia.org/wiki/Semantic_Web

Karapuz ★★★★★
()

Эту задачу уже 10 лет решают

Karapuz ★★★★★
()

Фактически, нужно делать следующее: погулять по сайту, почитать страницы, вытащить из них ценную информацию и построить из всего этого базу данных; если надо, построить отчёты; если надо, что-то автоматом скачать; если надо, запустить внешнюю программу с нужными параметрами; всё это должно при необходимости управляться scheduler'ом


ВУЗовская специальность «Компьютерные системы. Применение компьютерных технологий в обработке информации» Проучись 5 лет и научишься все это делать сам

Karapuz ★★★★★
()
Ответ на: комментарий от Karapuz

Тогда туда же и оффлайновый браузер http://www.httrack.com (если допилить его модулями)

Но нужно-то избежать html вообще, отдавая чистые данные из базы.

mclaudt
()

>Пришла мне в голову такая идея - было бы неплохо иметь программу, которая предоставляет удобный интерфейс для работы со всевозможными сайтами.

Уже есть и не одна. Этот класс программ называется «веб-браузер» и представлен на рынке в следующем ассортименте: Internet Explorer, Mozilla Firefox, Google Chrome, Safari, Opera. Есть специальные красноглазые редакции, отличающиеся мазохистским интерфейсом, кастрированным функционалом и возможностью работы даже без иксов: lynx, links, elinks.

linuxfan
()

[ищется?] бот для работы с сайтами


У тебя ошибка в тэге, должно быть: [пишется!] бот для работы с сайтами

Karapuz ★★★★★
()

Модули соответственно должны всё это использовать а также предоставлять шаблоны отчётов, шаблоны запросов, gui для настройки самих себя и прочие удобства


[Можно грабить корованы]

Karapuz ★★★★★
()
Ответ на: комментарий от mclaudt

В будущем действительно было бы полезно предоставлять стандарнизированный интерфейс для доступа к базе данных каждого сайта,


Идея разбивается о необходимость крутить баннеры, чтобы получать денежку на содержание и оплату хостингов

Karapuz ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.