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

Scorpic

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

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

Можно с ней работать или я хочу "костыли"? )
 
Посмотрите видео про работу зенно при парсинге сайтов. или используйте HtmlAgilityPack.dll
 
Самое простое решение регекс, по выражением подбирать то что Вам надо, либо ответ выше но по сложнее будет.
В regexp указывается переменная,а там уже по выражением достаете что Вам нужно, через конструктор рег выражения можете облегчить себе поиск.
 
91448

на мой взгляд как раз с regex мороки больше
 
  • Спасибо
Реакции: seodamage
Через Xpath понятно как парсить со страницы, а вот из переменной не получается, выдает ошибку.
Скорее всего из-за того, что зенка не знает, что в переменной HTML c DOM.
91450


Что не так делаю пока не понимаю.(
 
Через Xpath понятно как парсить со страницы, а вот из переменной не получается, выдает ошибку.
Скорее всего из-за того, что зенка не знает, что в переменной HTML c DOM.
Посмотреть вложение 91450

Что не так делаю пока не понимаю.(
А какую ошибку выдает ?
 
Через Xpath понятно как парсить со страницы, а вот из переменной не получается, выдает ошибку.
Скорее всего из-за того, что зенка не знает, что в переменной HTML c DOM.
Посмотреть вложение 91450

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

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

Странно конечно)
 
Ага, похоже в этом проблема, как то по другому работают пути при парсинге из переменной.

//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
Возможно, я сейчас в лужу это самое, но, если мы получаем код в переменную, то при чем тут xpath? Код же уже есть, получен. Распарсить регуляркой, что нужно. А что за код? И что получить из него?

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

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

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

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

Подскажите, кто знает, сниппет для подсчета кол-во тегов через xPath. Видел на форуме сниппет для подсчет тегов на открытой вкладке, а мне надо в переменной.
C#:
Развернуть Свернуть Копировать
var tab = instance.ActiveTab;
return tab.FindElementsByXPath("//tr[@class='data-row']").Count;
 
В коде текст, заключенный в теги, надо было вытащить текст. Сделал на 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();
 

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