![]() |
|
![]() ![]() ![]() |
|
America |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 11.12.2005 Где: USA Репутация: нет Всего: 1 |
Описание входящей информации.
Есть набор веб страниц со схожей структурой. То есть страницы отличаются не только данными но и самими тёгами, но очень не значительно. Например в каждой десятой странице не три абзаца а четыре. Что нужно: допустим пользователь хочет знать самую популярную тему в блогах по версии яндекса. Если зайти на сайт yandex.ru то сейчас в разделе "сегодня в блогах" первая строчка принадлежит следующей теме: Евгений Чичваркин объявлен в федеральный розыск. Пользователь вводит: поле1: yandex.ru поле2: Евгений Чичваркин объявлен в федеральный розыск И хочет чтобы завтра утром при запуске программы была выдана тема блога на этот день. То есть необходимо выдернуть эту информацию из веб-страницы. Вся проблема у меня упирается в парсинг страницы. Конечно многие могут сказать что нужно использовать нейронные сети. Но если посмотреть сколько тут букв и умножить на 8 то получается очень и очень много. Какие мои мысли (около научный бред): 1. Собираются страницы и к каждой странице своё выходное поле. (как в примере) 2. Выдвигается алгоритм по которому строиться система. 3. Если алгоритм вывел не то он пересматривается, страница попадает в когорту "экземпляры" из пункта 1 и алгоритм пересматривается. Как можно построить алгоритм. 1. Понятие твёрдой дистанции. Измеряется в символах: 1 символ, 2 символа. 2. Понятие слова. Набор букв и символов например: "попа", " <br> </br>". которые целиком входят в текст страницы. 3. Понятие повтора слова. это число вхождения слова сначала. 4 . Понятие искомого куска. Имеет начало и конец. Алгоритм перебором формируется и имеет примерно такой вид и потом переводится на машинй язык: 1. Найди третье вхождение слова "<tr> " 3?"<tr> " 2. Прошагай дистанцию в 12 символов. 12>> 3. Найди первое вхождение "." 1?"." 4. Прошагай дистанцию в 1 символ. 1>> 5. Ты нашёл начало искомого куска. !!!start 6. Найди первое вхождение " " 1?" " 7. Ты нашёл конец. !!!end 8. Вырежи кусок страницы от начала куска до его конца и отдай на выход. 9. Закончить работу и уйти спать. Хотелось бы попросить у сообщества опытных алгоритмистов подсказать как создать парсинг страницы наиболее эффективным методом. Это сообщение отредактировал(а) America - 24.1.2009, 13:57 |
|||
|
||||
gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: нет Всего: 17 |
use perl or die;
|
|||
|
||||
America |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 11.12.2005 Где: USA Репутация: нет Всего: 1 |
my point был в том, что при использовании перла нужно будет писать каждый раз скрипт для каждой страницы. А мне надо сделать универсальное средство которое само составляло бы для себя алгоритм ![]() хоть под яндекс-темы блогов хоть под винград-новые темы в разделе Алгоритмы. и это всё для пользователя который умеет только в хтмль тексте выделить текст "Евгений Чичваркин объявлен в федеральный розыск" ![]() Это сообщение отредактировал(а) America - 24.1.2009, 14:15 |
|||
|
||||
gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: нет Всего: 17 |
вытащить страницу и перебрать
"<tr> " Привет: мир?"<tr> " есть нужно "мир?", то это легко делается... просто сходу сейчас не напишу, давно не парсил... посмотрите регулярные выражения Это сообщение отредактировал(а) gcc - 24.1.2009, 14:42 |
|||
|
||||
America |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 11.12.2005 Где: USA Репутация: нет Всего: 1 |
я думал по поводу регулярных выражений. Только как составить регулярные выражения которые смогли бы так дёргать классно?
gcc, ещё раз, проблема не в том чтобы написать один раз скрипт для выдёргивания чего-то из страницы. Это делается на раз два три. Проблема намного шире - задача написать систему котрая дёргала бы не для конкретной страницы, а проанализировав то что есть и то что требуется дёргала бы из любой страницы любые данные ( конечно с оговоркой что она имеет схожую структуру с теми которые ей были выданы в качестве примера) То есть всё намного шире. Нужен не алгоритм дёрганья. А алгоритм создания алгоритма дёрганья. |
|||
|
||||
America |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 11.12.2005 Где: USA Репутация: нет Всего: 1 |
Ну что молчим?
![]() Я знаю что сложно. Я уже три алгоритма обдумал и попытался реализовать. Во всех трёх случаях натыкаюсь либо на бешеную рекурсию, либо на огромный перебор, либо на то и другое вместе. Любые идеи wellcome. |
|||
|
||||
America |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 11.12.2005 Где: USA Репутация: нет Всего: 1 |
За полтора месяца всё таки я это сделал.
![]() |
|||
|
||||
Katharos |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 15.6.2007 Репутация: нет Всего: нет |
если не сложно, напиши пожалуйста как ОНО работает, в общих чертах, так сказать ))
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |