Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Парсинг веб страницы 
:(
    Опции темы
America
  Дата 24.1.2009, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 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
PM MAIL   Вверх
gcc
Дата 24.1.2009, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: нет
Всего: 17



use perl or die;
PM WWW ICQ Skype GTalk Jabber   Вверх
America
Дата 24.1.2009, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 11.12.2005
Где: USA

Репутация: нет
Всего: 1



Цитата(gcc @ 24.1.2009,  14:03)
use perl or die;

my point  был в том, что при использовании перла нужно будет писать каждый раз скрипт для каждой страницы. А мне надо сделать универсальное средство которое само составляло бы для себя алгоритм  smile 
хоть под яндекс-темы блогов
хоть под винград-новые темы в разделе Алгоритмы.

и это всё для пользователя  который умеет только в хтмль тексте выделить текст "Евгений Чичваркин объявлен в федеральный розыск" smile 

Это сообщение отредактировал(а) America - 24.1.2009, 14:15
PM MAIL   Вверх
gcc
Дата 24.1.2009, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: нет
Всего: 17



вытащить страницу  и перебрать 

"<tr> " Привет:
      мир?"<tr> "

есть нужно "мир?", то это легко делается... просто сходу сейчас не напишу, давно не парсил...
посмотрите регулярные выражения

Это сообщение отредактировал(а) gcc - 24.1.2009, 14:42
PM WWW ICQ Skype GTalk Jabber   Вверх
America
Дата 24.1.2009, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 11.12.2005
Где: USA

Репутация: нет
Всего: 1



я думал по поводу регулярных выражений. Только как составить регулярные выражения которые смогли бы так дёргать классно? 

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

То есть  всё намного шире. Нужен не алгоритм дёрганья. А алгоритм создания алгоритма дёрганья. 
PM MAIL   Вверх
America
  Дата 25.1.2009, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 11.12.2005
Где: USA

Репутация: нет
Всего: 1



Ну что молчим?  smile 

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

Любые идеи wellcome.
PM MAIL   Вверх
America
Дата 7.3.2009, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 11.12.2005
Где: USA

Репутация: нет
Всего: 1



За полтора месяца всё таки я это сделал.  smile 
PM MAIL   Вверх
Katharos
Дата 7.3.2009, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 15.6.2007

Репутация: нет
Всего: нет



если не сложно, напиши пожалуйста как ОНО работает, в общих чертах, так сказать ))
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

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


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0702 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.