Расхождение между конструктором действий в режиме regexp и поиском регуляркой по page.source

konfuciy

Client
Регистрация
07.05.2014
Сообщения
1 402
Благодарностей
131
Баллы
63
вводим, например, такой урл:
http://www.rusarticles.com/find-articles.php?q=мужская+одежда+опт
в конструкторе действий задаем элемент
№документа
0
№формы
-1
Тэг
a
Имя аттрибута
href
Значение
http://www\.rusarticles\.com/find-articles\.php\?q=.*&page=
Тип поиска
regexp

Находится четыре элемента от 0 до 3 включительно


Если же мы попробуем через Обработка текста/regexp поискать этой же самой регуляркой
http://www\.rusarticles\.com/find-articles\.php\?q=.*&page=
мы найдем 0 совпадений.

При нажатии на Исследование элемента можно увидеть, что на самом деле окончание должно быть не
&page=
а
&page=

Таким образом, конструктор действий не соответствует в этой части Регуляркам поиска в Обработка текста/regexp и не соответствует Исследованию элемента
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 453
Благодарностей
5 913
Баллы
113
Конструктор действий работает с DOM, а не с Source кодом страницы.
 

konfuciy

Client
Регистрация
07.05.2014
Сообщения
1 402
Благодарностей
131
Баллы
63

konfuciy

Client
Регистрация
07.05.2014
Сообщения
1 402
Благодарностей
131
Баллы
63
  • Спасибо
Реакции: VladZen

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 451
Благодарностей
1 885
Баллы
113
а это где-нибудь написано в документации или мануалах? это же совсем не очевидно...
Как же не очевидно?
У Вас загружается страница, получается уже не исходный, а DOM текст - т.е. исходный код + выполненные скрипты, подгруженный контент и т.д.
Конструктор действий с чем по Вашему работает? Вы же ищете элементы на текущей странице, которая уже обработана, загружена и ждёт Ваших дальнейших действий.
 

konfuciy

Client
Регистрация
07.05.2014
Сообщения
1 402
Благодарностей
131
Баллы
63
Как же не очевидно?
У Вас загружается страница, получается уже не исходный, а DOM текст - т.е. исходный код + выполненные скрипты, подгруженный контент и т.д.
Конструктор действий с чем по Вашему работает? Вы же ищете элементы на текущей странице, которая уже обработана, загружена и ждёт Ваших дальнейших действий.
Не очевидно потому что на версиях 5.7, 5.8 не возникало у меня такой проблемы. Скорее всего я просто мало его использовал, оттого и не столкнулся, а в тех случаях когда использовал сорс соответствовал в нужных частях дому. Спасибо за разъяснение.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Перенес из Багов в Вопросы
 

konfuciy

Client
Регистрация
07.05.2014
Сообщения
1 402
Благодарностей
131
Баллы
63
Конструктор действий работает с DOM, а не с Source кодом страницы.
Перенес из Багов в Вопросы
вот другой пример

страница
http://pisali.ru/search/
ввожу для примера форму поиска слово "напитки"
конструктором действий выбираю элемент - цифра перехода на следующую страницу. в конструкторе имею:
0
-1
a
href
http://pisali\.ru/search/\#
regexp

Конструктор находит два совпадения 0 и 1

формулу регэкспа конструктор подставил сам.

Далее копирую эту формулу http://pisali\.ru/search/\#
вставляю в Обработка текста/Regex, искать по Page.Dom - согласно вашему пояснению (между делом вручную смотрю, Page.Dom НЕ содержит того, что показал конструктор действий)

Не находит ни одного совпадения.

Поясните, пожалуйста, в чем проблема?
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 453
Благодарностей
5 913
Баллы
113
Эта ссылка генерится... в DOM'е её нет, там код, который её генерит. Если нужно парсить ссылки со страницы, забудьте о конструкторе. Выделите ссылку в браузере и выберите Исследовать элемент в контекстном меню. Посмотрите в каком виде ссылка прописана там. Затем найдите её в DOM-е.
 

konfuciy

Client
Регистрация
07.05.2014
Сообщения
1 402
Благодарностей
131
Баллы
63
Эта ссылка генерится... в DOM'е её нет, там код, который её генерит. Если нужно парсить ссылки со страницы, забудьте о конструкторе. Выделите ссылку в браузере и выберите Исследовать элемент в контекстном меню. Посмотрите в каком виде ссылка прописана там. Затем найдите её в DOM-е.
Теперь я вообще не могу ничего понять)) подскажите тогда, откуда конструктор действий берет эту ссылку?
Ранее вы писали, что он берет все из дом, это неверно, некоторые элемнты конструктор берет ещё откуда-то?
Как понять - эта ссылка генериться? Её нет ни в сорс, ни в дом, так?
Но это же не соответствует действительности, я смотрел дом - ссылка там есть, просто в дом по ссылке вместо двоеточия идёт что-то вроде ℅13e - это представление в аск-2 или ещё какой-то другой кодировке.
И в сорсе ссылка тоже есть, тоже выглядит с небольшим отличием
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 453
Благодарностей
5 913
Баллы
113
DOM код же все равно интерпретируется конструктором. Он не будет выдавать точно так как написано в коде. В конструкторе будет отражаться самый конечный результат, который будет после интепретации кода. Вы слишком зациклились на конструкторе действий. Работайте с DOM кодом, там ссылка может быть представлена по другому. Конструктор не для парсинга, он для создания действий.
 
  • Спасибо
Реакции: konfuciy

konfuciy

Client
Регистрация
07.05.2014
Сообщения
1 402
Благодарностей
131
Баллы
63
DOM код же все равно интерпретируется конструктором. Он не будет выдавать точно так как написано в коде. В конструкторе будет отражаться самый конечный результат, который будет после интепретации кода. Вы слишком зациклились на конструкторе действий. Работайте с DOM кодом, там ссылка может быть представлена по другому. Конструктор не для парсинга, он для создания действий.
понятно, спасибо
 

CSS

Client
Регистрация
22.05.2010
Сообщения
1 327
Благодарностей
663
Баллы
113
понятно, спасибо
Сначала браузер делает GET запрос и получает HTML страницу с сервера (source код), затем эта страница "исполняется" - то есть срабатывают JavaScript скрипты, применяются CSS стили, отрисовываются все элементы (таблицы, шрифты и.т.д.), этим занимается браузер (инстанс) и так получается уже изменённая страница - DOM код, конструктор действий работает с DOM моделью, но сама DOM модель имеет определённый синтаксис, например & в ссылках всегда пишется как & поэтому если вас интересует поиск ссылок именно в том виде в котором вы их видете - то это вам позволит сделать конструктор действий, а в "сыром" (изменённом) виде вы можете их вытащить через DOM код.
 

konfuciy

Client
Регистрация
07.05.2014
Сообщения
1 402
Благодарностей
131
Баллы
63
Сначала браузер делает GET запрос и получает HTML страницу с сервера (source код), затем эта страница "исполняется" - то есть срабатывают JavaScript скрипты, применяются CSS стили, отрисовываются все элементы (таблицы, шрифты и.т.д.), этим занимается браузер (инстанс) и так получается уже изменённая страница - DOM код, конструктор действий работает с DOM моделью, но сама DOM модель имеет определённый синтаксис, например & в ссылках всегда пишется как & поэтому если вас интересует поиск ссылок именно в том виде в котором вы их видете - то это вам позволит сделать конструктор действий, а в "сыром" (изменённом) виде вы можете их вытащить через DOM код.
Спасибо за разъяснения, но они не совсем верны, как я выяснил практическим путем, о чем выше и написал - поиск конструктором не соответствует поиску по dom и те регулярки, которые предлагает конструктор, в dom ничего не находят в приведенных случаях.
Из всего этого очевидно, что поиск конструктора - это НЕ поиск по dom, а поиск по какой-то ещё своей модели, происхождение которой мне из разъяснений непонятно.
 

rostonix

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

konfuciy

Client
Регистрация
07.05.2014
Сообщения
1 402
Благодарностей
131
Баллы
63
Вам уже выше написали что для составления регулярок используйте конструктор регулярок с DOM, а не конструктор экшенов.
а причем это, я не разу не возразил против того. использую.
я говорю об очевидном противоречии - с одной стороны мне пишут, что конструктор ищет по dom, а я на практике установил, что по dom формулы конструктора нужное не находят в описанных мной примерах. и тогда появляется какой-то еще третий непонятный вид страницы - и не dom и не source, а специальный для конструктора. я не специалист и меня это сильно путает.
что это за вид я понять не могу, а меня это интересует, не с практической точки зрения, а с точки зрения понимания логики программы.
и по моим наблюдениям, до версий серии 5.9. не было такого третьего вида кода страницы, у меня формулы конструктора работали в регэксе, но я могу ошибаться....
 
Последнее редактирование:

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Ссылки в DOM тексте могут быть относительными (по отношению к домену).
В общем DOM тексте href этой ссылки выглядит как #
Так как этот атрибут сайтом совсем не используется, ссылка вызывает работу скрипта, который уже перелистывает страницы. При этом при получении атрибута href этой ссылки (то чем занимается конструктор) из DOM модели, резолвится полный путь (убирается относительность по отношению к домену), который при желании уже можно использовать.
Если вам нужен парсинг данных - вы подбираете регулярку по общему DOM тексту, если нужно понять атрибуты для поиска элемента - то смотрите в конструкторе действий.
 

konfuciy

Client
Регистрация
07.05.2014
Сообщения
1 402
Благодарностей
131
Баллы
63
Ссылки в DOM тексте могут быть относительными (по отношению к домену).
В общем DOM тексте href этой ссылки выглядит как #
Так как этот атрибут сайтом совсем не используется, ссылка вызывает работу скрипта, который уже перелистывает страницы. При этом при получении атрибута href этой ссылки (то чем занимается конструктор) из DOM модели, резолвится полный путь (убирается относительность по отношению к домену), который при желании уже можно использовать.
Если вам нужен парсинг данных - вы подбираете регулярку по общему DOM тексту, если нужно понять атрибуты для поиска элемента - то смотрите в конструкторе действий.
я правильно понял, что конструктор еще "дорабатывает" dom модель под себя?
 

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 451
Благодарностей
1 885
Баллы
113
Это браузер.
Для примера Вам - можете взять эту же ветку форума и посмотреть ссылку, которая находится под Вашим ответом.
Вы увидите http://zennolab.com/discussion/threads/rasxozhdenie-mezhdu-konstruktorom-dejstvij-v-rezhime-regexp-i-poiskom-reguljarkoj-po-page-source.23162/#post-157306
но в ДОМе такой ссылки не будет. Там будет только /discussion/threads/rasxozhdenie-mezhdu-konstruktorom-dejstvij-v-rezhime-regexp-i-poiskom-reguljarkoj-po-page-source.23162/#post-157306
т.е. относительная ссылка (без домена)
 
  • Спасибо
Реакции: konfuciy

konfuciy

Client
Регистрация
07.05.2014
Сообщения
1 402
Благодарностей
131
Баллы
63
Это браузер.
Для примера Вам - можете взять эту же ветку форума и посмотреть ссылку, которая находится под Вашим ответом.
Вы увидите http://zennolab.com/discussion/threads/rasxozhdenie-mezhdu-konstruktorom-dejstvij-v-rezhime-regexp-i-poiskom-reguljarkoj-po-page-source.23162/#post-157306
но в ДОМе такой ссылки не будет. Там будет только /discussion/threads/rasxozhdenie-mezhdu-konstruktorom-dejstvij-v-rezhime-regexp-i-poiskom-reguljarkoj-po-page-source.23162/#post-157306
т.е. относительная ссылка (без домена)
спасибо большое
 

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