Как отследить изменение текста на странице

proekt-gaz

Client
Регистрация
13.01.2013
Сообщения
94
Благодарностей
5
Баллы
8
В общем в заголовке и весь вопрос. Если подробнее, то мне нужна схема отслеживающая определенную страницу и если на ней изменился текст, то нужно перейти к следующему действию. Каким образом это можно осуществить?
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 407
Благодарностей
9 116
Баллы
113
В общем в заголовке и весь вопрос. Если подробнее, то мне нужна схема отслеживающая определенную страницу и если на ней изменился текст, то нужно перейти к следующему действию. Каким образом это можно осуществить?
в PM выделяете текст, который нужно отслеживать и через ПКМ создаете блок экшенов проверки текста..

upload_2015-11-24_9-4-3.png
 
  • Спасибо
Реакции: proekt-gaz

proekt-gaz

Client
Регистрация
13.01.2013
Сообщения
94
Благодарностей
5
Баллы
8
Немного не то. Дело в том, что я не знаю какой именно текст есть в данный момент на странице и какой текст будет потом.
 

Ribas

Client
Регистрация
31.05.2014
Сообщения
1 440
Благодарностей
503
Баллы
113
Брать DOM страницы, сохранять, потом брать снова, сравнивать с предыдущим
 

proekt-gaz

Client
Регистрация
13.01.2013
Сообщения
94
Благодарностей
5
Баллы
8
Общий смысл понятен. Не понятно каким образом сравнивать...
 

Ribas

Client
Регистрация
31.05.2014
Сообщения
1 440
Благодарностей
503
Баллы
113
я бы посчитал количество символов там и там и его уже сравнил
 
  • Спасибо
Реакции: proekt-gaz

proekt-gaz

Client
Регистрация
13.01.2013
Сообщения
94
Благодарностей
5
Баллы
8
Ну как же все таки эффективно распознать изменения на странице?
 

Ribas

Client
Регистрация
31.05.2014
Сообщения
1 440
Благодарностей
503
Баллы
113
А чем не устраивает вариант сравнить DOM?
 

proekt-gaz

Client
Регистрация
13.01.2013
Сообщения
94
Благодарностей
5
Баллы
8
Там может быть реклама и другие меняющиеся элементы.
 

Ribas

Client
Регистрация
31.05.2014
Сообщения
1 440
Благодарностей
503
Баллы
113
Брать для сравнения кусок кода, в котором предполагается изменение текста
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
DOM будет реагировать на изменение рекламы. Нужно парсить блок контента или еще чего-то, независимого от минорных изменений
 

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
901
Баллы
113
Сравнивать деревья DOM))) при изменении структуры дерева - шаманить.
Реализация - через Xpath
Как хранить - имхо в реалиях зенки просто идти от верхнего уровня body и присваивать элементам порядковые номера сверху вниз и слева направо. Должно было бы получиться что то вроде словаря словарей, но поскольку такой конструкции нет, то просто писать в текстовый файл
первая строчка
Элемент 1: {Дочерний элемент 25, дочерний элемнет 26}
Элемент 26: {Дочерний элемент 48}
Ну и по сути как только количество дочерних элементов у какого либо из родителей изменится - значит поменялась и структура сайта.

FAQ
Хитропопая реклама - Можно в шаблоне игнорировать некоторые классы
А вдруг они изменят верстку? - Имхо то самое ожидаемое изменение
А не лучше ли хранить Теги, а не абстрактные номера? - Лучше конечно, но это надо больше шаманить, и я не уверен что это даст большую управляемость при сравнении, а вот наломать дров больше где получится
А вдруг у меня элементы разметятся по другому, и дерево будет то же самое, но с разными номерами? - Именно поэтому для разметки нужно следовать единому правилу. Я предложил слева-направо и сверху вниз, а там можете использовать любое, какое захочется
Достаточно ли проверять дочерние элементы? - ДО! Ибо все начинается с одного тега body у которого есть какое то количество дочерних элементов. В общем сопоставление по айдишнику и количеству дочерних элементов точно взлетит и изменение не пройдет незамеченным.
Я не знаю C#/Xpath - http://zennolab.com/discussion/search/1829890/?q=XPATH&o=date&c[node]=134
 
  • Спасибо
Реакции: NoN и ZennoScript

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
я по тебе скучаю :D
редкий гость стал)
 
  • Спасибо
Реакции: Lexicon

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
901
Баллы
113
я по тебе скучаю :D
редкий гость стал)
Да работы что то наваливается быстрее чем я её разгребаю))) Да и я сейчас больше кошусь глазом в сторону машинного обучения))) Вот будет грустно - запилю базовые алгоритмы на зенке ))))))))))))
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
я из-за тебя поддался флешмобу и зафигачил кривую кошачью лапу на аватарку! оригинала у меня нет) такшта ничо не знаю, юзай зенку 8-):D
 
  • Спасибо
Реакции: Lexicon

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 407
Благодарностей
9 116
Баллы
113
Там может быть реклама и другие меняющиеся элементы.
подозреваю, что мой совет не подойдет, но все же..
как вариант - попробовать работать с Source, вместо DOM..
структура Source (как бы скелет страницы) должен хорошо отслеживаться, без излишеств (рекламы и прочего), которые есть в DOM..
(если конечно отслеживаемые изменения находятся в Source)
 
Последнее редактирование:

Mutant

Client
Регистрация
19.09.2014
Сообщения
194
Благодарностей
36
Баллы
28
Еще можно просто пролистывать периодически страницу до конца и смотреть если нижняя координата изменилась, значит изменился и текст.
 

Ribas

Client
Регистрация
31.05.2014
Сообщения
1 440
Благодарностей
503
Баллы
113
Еще можно просто пролистывать периодически страницу до конца и смотреть если нижняя координата изменилась, значит изменился и текст.
Сомнительно - допустим на странице меняется только текст "Регистрация доступна" / "Регистрация недоступна"
 

Mutant

Client
Регистрация
19.09.2014
Сообщения
194
Благодарностей
36
Баллы
28
Сомнительно - допустим на странице меняется только текст "Регистрация доступна" / "Регистрация недоступна"
Ну, нам не дали исходных данных, поэтому фантазируем как можем. Для вашего примера этот метод естественно не подходит, но в некоторых случаях он очень даже неплох и не нужно городить сложных схем
 

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 451
Благодарностей
1 885
Баллы
113
Сомнительно - допустим на странице меняется только текст "Регистрация доступна" / "Регистрация недоступна"
Считайте тогда с какой то периодичностью количество символов в том блоке сайта, который должен измениться и который нужно контролировать.
Взяли раз, сохранили в одну переменную, через время взяли, сохранили во вторую - проверили. Если одинаково, ждём еще, если нет - соответственно что то поменялось.
 
Регистрация
02.07.2010
Сообщения
398
Благодарностей
108
Баллы
43
берем предполагаемый текст, или весь текст страницы, сохраняем в файл, смотрим размер файла, сохраняем размер, файл удаляем
при следующем заходе сравниваем размеры файлов старой и новой страницы, если не совпадают, значит текст поменялся
 

Ribas

Client
Регистрация
31.05.2014
Сообщения
1 440
Благодарностей
503
Баллы
113
берем предполагаемый текст, или весь текст страницы, сохраняем в файл, смотрим размер файла, сохраняем размер, файл удаляем
при следующем заходе сравниваем размеры файлов старой и новой страницы, если не совпадают, значит текст поменялся
Это не прокатит если меняются рекламные ссылки, как писали выше, да и зачем так сильно изголяться сохраняя файлы, проще уж в переменную записывать страницу и считать количество символов. Файлы сохранять имхо излишество :-)
 
Регистрация
02.07.2010
Сообщения
398
Благодарностей
108
Баллы
43
Можно, но я написал максимально простой вариант для новичка.
 

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 451
Благодарностей
1 885
Баллы
113
Самое интересное, что ТС уже тут не появляется. Так, люди пытаются решить проблему, которой, вероятно, уже и нету :-)
 
Регистрация
02.07.2010
Сообщения
398
Благодарностей
108
Баллы
43
Даже если и так, возможно в будущем кому то пригодится :-)
 

proekt-gaz

Client
Регистрация
13.01.2013
Сообщения
94
Благодарностей
5
Баллы
8
Самое интересное, что ТС уже тут не появляется. Так, люди пытаются решить проблему, которой, вероятно, уже и нету :-)
Почему не появляется - появляется. Проблему решил, но через ж...пу. Думал может предложат более красивый и оптимальный вариант.
 

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 451
Благодарностей
1 885
Баллы
113
Почему не появляется - появляется. Проблему решил, но через ж...пу. Думал может предложат более красивый и оптимальный вариант.
А почему через ж? Тут накидали достаточно интересных и подходящих вариантов не через ж )
Ну а вообще, тут главное решить, а как - это уже дело десятое. Справился, да и ладно, молодец :-)
 

Кто просматривает тему: (Всего: 3, Пользователи: 0, Гости: 3)