Работать с переменной в которой HTML

Scorpic

Client
Регистрация
17.08.2020
Сообщения
76
Благодарностей
19
Баллы
8
Всем привет!

Есть переменная с HTML (прилетает POSTом), надо вытащить данные из нее без использования браузера.
Как с ней работать не понимаю, со страницей в браузере понятно, а с переменной нет.

Можно с ней работать или я хочу "костыли"? )
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 789
Благодарностей
1 954
Баллы
113
Посмотрите видео про работу зенно при парсинге сайтов. или используйте HtmlAgilityPack.dll
 

qzen4i

Client
Регистрация
01.05.2014
Сообщения
1 408
Благодарностей
314
Баллы
83
Самое простое решение регекс, по выражением подбирать то что Вам надо, либо ответ выше но по сложнее будет.
В regexp указывается переменная,а там уже по выражением достаете что Вам нужно, через конструктор рег выражения можете облегчить себе поиск.
 

trecho

Client
Регистрация
12.07.2018
Сообщения
171
Благодарностей
124
Баллы
43
91448

на мой взгляд как раз с regex мороки больше
 
  • Спасибо
Реакции: seodamage

Scorpic

Client
Регистрация
17.08.2020
Сообщения
76
Благодарностей
19
Баллы
8
Через Xpath понятно как парсить со страницы, а вот из переменной не получается, выдает ошибку.
Скорее всего из-за того, что зенка не знает, что в переменной HTML c DOM.
91450


Что не так делаю пока не понимаю.(
 

qzen4i

Client
Регистрация
01.05.2014
Сообщения
1 408
Благодарностей
314
Баллы
83
Через Xpath понятно как парсить со страницы, а вот из переменной не получается, выдает ошибку.
Скорее всего из-за того, что зенка не знает, что в переменной HTML c DOM.
Посмотреть вложение 91450

Что не так делаю пока не понимаю.(
А какую ошибку выдает ?
 

Scorpic

Client
Регистрация
17.08.2020
Сообщения
76
Благодарностей
19
Баллы
8

djaga

Administrator
Команда форума
Регистрация
26.04.2020
Сообщения
551
Благодарностей
1 131
Баллы
93
Через Xpath понятно как парсить со страницы, а вот из переменной не получается, выдает ошибку.
Скорее всего из-за того, что зенка не знает, что в переменной HTML c DOM.
Посмотреть вложение 91450

Что не так делаю пока не понимаю.(
Возможно у вас слишком жестко указан путь. Попробуйте сделать его короче, но соблюдая правила XPath.
Например, так: //div[@class='page-wrapper']/section[@class='b-main-content'] Посмотрите что он возвращает.

Повторюсь, в Xpath необязательно писать такой сложный путь. Его нужно писать как можно короче.
Например, если где-то добавится div или измениться имя дочернего класса у вас может перестать работать этот путь. Поэтому путь должен быть максимально гибким и коротким.
 
  • Спасибо
Реакции: Zoloo и Scorpic

Scorpic

Client
Регистрация
17.08.2020
Сообщения
76
Благодарностей
19
Баллы
8
Возможно у вас слишком жестко указан путь. Попробуйте сделать его короче, но соблюдая правила XPath.
Например, так: //div[@class='page-wrapper']/section[@class='b-main-content'] Посмотрите что он возвращает.

Повторюсь, в Xpath необязательно писать такой сложный путь. Его нужно писать как можно короче.
Например, если где-то добавится div или измениться имя дочернего класса у вас может перестать работать этот путь. Поэтому путь должен быть максимально гибким и коротким.
Ага, похоже в этом проблема, как то по другому работают пути при парсинге из переменной.

//html/body/div[1]/section/div/div[2]/div[3]/table/tbody/tr[2]/td[2] - при парсинге на странице это работает, а из переменной нет.
//tr[2]/td[2] -вот так сработало при парсинге из переменной.

Странно конечно)
 

djaga

Administrator
Команда форума
Регистрация
26.04.2020
Сообщения
551
Благодарностей
1 131
Баллы
93
Ага, похоже в этом проблема, как то по другому работают пути при парсинге из переменной.

//html/body/div[1]/section/div/div[2]/div[3]/table/tbody/tr[2]/td[2] - при парсинге на странице это работает, а из переменной нет.
//tr[2]/td[2] -вот так сработало при парсинге из переменной.

Странно конечно)
Почитайте, пожалуйста два источника.) Это поможет углубиться немного в тему:
XPath Tutorial
[Обзор]ZennoPoster + xPath на примере Яндекс.Маркета
 
  • Спасибо
Реакции: Scorpic

Buddha

Client
Регистрация
10.03.2019
Сообщения
122
Благодарностей
18
Баллы
18
Возможно, я сейчас в лужу это самое, но, если мы получаем код в переменную, то при чем тут xpath? Код же уже есть, получен. Распарсить регуляркой, что нужно. А что за код? И что получить из него?

ГЗВ qzen4i правильно говорит. Если не нужно получать данные из DOM, то проще всего регулярным выражением. xpath нужен, если открыта страница, на которой что-то уже кроме сурсов написано.

Еще ГЗВ А вот если этот код должен где-то отбражаться на странице, и в нем что-то отрабатывает типа скриптов (то есть, в исходном коде нет того, что появляется в браузере), то здесь только HtmlAgilityPack, это да. Ну, или в браузере открывать.
 
Последнее редактирование:

radv

Client
Регистрация
11.05.2015
Сообщения
3 789
Благодарностей
1 954
Баллы
113

Scorpic

Client
Регистрация
17.08.2020
Сообщения
76
Благодарностей
19
Баллы
8
Возможно, я сейчас в лужу это самое, но, если мы получаем код в переменную, то при чем тут xpath? Код же уже есть, получен. Распарсить регуляркой, что нужно. А что за код? И что получить из него?

ГЗВ qzen4i правильно говорит. Если не нужно получать данные из DOM, то проще всего регулярным выражением. xpath нужен, если открыта страница, на которой что-то уже кроме сурсов написано.

Еще ГЗВ А вот если этот код должен где-то отбражаться на странице, и в нем что-то отрабатывает типа скриптов (то есть, в исходном коде нет того, что появляется в браузере), то здесь только HtmlAgilityPack, это да. Ну, или в браузере открывать.
В коде текст, заключенный в теги, надо было вытащить текст. Сделал на xPath показалось так проще.

Подскажите, кто знает, сниппет для подсчета кол-во тегов через xPath. Видел на форуме сниппет для подсчет тегов на открытой вкладке, а мне надо в переменной.
C#:
var tab = instance.ActiveTab;
return tab.FindElementsByXPath("//tr[@class='data-row']").Count;
 

djaga

Administrator
Команда форума
Регистрация
26.04.2020
Сообщения
551
Благодарностей
1 131
Баллы
93
В коде текст, заключенный в теги, надо было вытащить текст. Сделал на xPath показалось так проще.

Подскажите, кто знает, сниппет для подсчета кол-во тегов через xPath. Видел на форуме сниппет для подсчет тегов на открытой вкладке, а мне надо в переменной.
C#:
var tab = instance.ActiveTab;
return tab.FindElementsByXPath("//tr[@class='data-row']").Count;
1. Вместо "Имя_переменной" имя вашей переменной.
2. Обязательно указать свой путь XPath.
Получить количество найденных элементов из переменной:
return ZennoPoster.Parser.ParseByXpath(project.Variables["Имя_переменной"].Value,"//tr[@class='data-row']","innertext").ToList().Count.ToString();
 

seodamage

Client
Регистрация
08.09.2014
Сообщения
225
Благодарностей
67
Баллы
28

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