Как применить XPath в кубике С#?

Dima_External

Пользователь
Регистрация
23.10.2017
Сообщения
75
Благодарностей
4
Баллы
8
Сохранил ответ после гет-запроса, теперь мне нужно выпарсить некоторые данные.
Сознательно выбрал XPath - работать легче и удобнее.

Собственно вопрос, как в кубике шарпа применить выражение XPath к переменной, а после вывести результат поиска в отдельную переменную?
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 177
Благодарностей
2 184
Баллы
113
Пример готового шаблона с xPath на запросах и библиотекой отдельной Html Agility Pack:
https://zennolab.com/discussion/threads/ispolzovanie-xpath-na-chistom-html.40267/#post-299467
Если в браузере делаете, то можно штатными средствами зенки без библиотек, а с того поста только мануалы почитайте. Поиск по форуму тем с примерами:
xpath пример site:zennolab.com
 
  • Спасибо
Реакции: Sergodjan и Dima_External

Dima_External

Пользователь
Регистрация
23.10.2017
Сообщения
75
Благодарностей
4
Баллы
8
Пример готового шаблона с xPath на запросах и библиотекой отдельной Html Agility Pack:
https://zennolab.com/discussion/threads/ispolzovanie-xpath-na-chistom-html.40267/#post-299467
Если в браузере делаете, то можно штатными средствами зенки без библиотек, а с того поста только мануалы почитайте. Поиск по форуму тем с примерами:
xpath пример site:zennolab.com

Давно отказался от браузера, если в нем, то было бы легче, определенно.
 

Dima_External

Пользователь
Регистрация
23.10.2017
Сообщения
75
Благодарностей
4
Баллы
8
Пример готового шаблона с xPath на запросах и библиотекой отдельной Html Agility Pack:
https://zennolab.com/discussion/threads/ispolzovanie-xpath-na-chistom-html.40267/#post-299467
Если в браузере делаете, то можно штатными средствами зенки без библиотек, а с того поста только мануалы почитайте. Поиск по форуму тем с примерами:
xpath пример site:zennolab.com

Примерно понял как и что, однако данных не получаю после завершения работы кубика.

Вот мой кубик и xpath, можете подсказать что не так в моем коде и почему не получаю результата в список?
Смотрел по логу выполнения - он работает, но берет пустые строки и соотв. в список добавляет пустые строки.


Код:
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
var template_html = project.Variables["get"].Value;
var var_xpath1 = @"/html/body/div[2]/div/div[2]/div[1]/div/div[5]";
string temp = "";
string result = "";
doc.LoadHtml(template_html);
var sourceList = project.Lists["List1_Urls"];
var Nodes_list_1 = doc.DocumentNode.SelectNodes(var_xpath1);
if (Nodes_list_1 != null)
{
foreach (var res in Nodes_list_1)
    {
          temp = res.GetAttributeValue("large-strong", ""); //  получаем значение value каждого элемента
        result += temp + "\r\n"; //  добавляем его в переменную, каждое значение с новой строки
        sourceList.Add(temp); //  и добавляем его в список (кому как удобнее)
    } 
}
return result;
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
а покажи строку где ты в список ложишь ?
 

Dima_External

Пользователь
Регистрация
23.10.2017
Сообщения
75
Благодарностей
4
Баллы
8

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113

Dima_External

Пользователь
Регистрация
23.10.2017
Сообщения
75
Благодарностей
4
Баллы
8

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
тут только одно решение, скидывай свой шаб
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 177
Благодарностей
2 184
Баллы
113
Примерно понял как и что, однако данных не получаю после завершения работы кубика.

Вот мой кубик и xpath, можете подсказать что не так в моем коде и почему не получаю результата в список?
Смотрел по логу выполнения - он работает, но берет пустые строки и соотв. в список добавляет пустые строки.


Код:
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
var template_html = project.Variables["get"].Value;
var var_xpath1 = @"/html/body/div[2]/div/div[2]/div[1]/div/div[5]";
string temp = "";
string result = "";
doc.LoadHtml(template_html);
var sourceList = project.Lists["List1_Urls"];
var Nodes_list_1 = doc.DocumentNode.SelectNodes(var_xpath1);
if (Nodes_list_1 != null)
{
foreach (var res in Nodes_list_1)
    {
          temp = res.GetAttributeValue("large-strong", ""); //  получаем значение value каждого элемента
        result += temp + "\r\n"; //  добавляем его в переменную, каждое значение с новой строки
        sourceList.Add(temp); //  и добавляем его в список (кому как удобнее)
    }
}
return result;
У вас неправильное представление как лучше синтаксис xPath составлять. Здесь лучше цепляться за соседние элементы, а не делать "в лоб" с вложенностью такой длинной. Уже было подобное недавно. В итоге у вас наверное не находит нужных элементов.
 

Dima_External

Пользователь
Регистрация
23.10.2017
Сообщения
75
Благодарностей
4
Баллы
8
тут только одно решение, скидывай свой шаб
У вас неправильное представление как лучше синтаксис xPath составлять. Здесь лучше цепляться за соседние элементы, а не делать "в лоб" с вложенностью такой длинной. Уже было подобное недавно. В итоге у вас наверное не находит нужных элементов.
Это я уже тестировал, думал что проблема в выражении.
Сейчас такое - .//*[@class='columns']
 

Dima_External

Пользователь
Регистрация
23.10.2017
Сообщения
75
Благодарностей
4
Баллы
8
У вас неправильное представление как лучше синтаксис xPath составлять. Здесь лучше цепляться за соседние элементы, а не делать "в лоб" с вложенностью такой длинной. Уже было подобное недавно. В итоге у вас наверное не находит нужных элементов.
Можете написать в лс, пожалуйста?
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 177
Благодарностей
2 184
Баллы
113
Написал.
Подсказка:
результат Гет-запроса зенки сохраните в файл test.html, и его откройте в браузере и на нем тестируйте xPath, а то бывает что в реальном сайте чуть по другому код, чем в ответе на Get-запрос (в браузере скрипты выполняются, которые могут чуть искажать верстку по умолчанию).
Если не получится, скидывайте шаблон (или его отрывок), где есть запрос на нужную страницу и скриншот что именно надо из этой страницы вытянуть. если впишусь в 10 минут, то бесплатно будет. Иначе выставлю ценник, а он может не понравиться, ибо обычно меньше 20$ за платную возню с шаблоном не охота брать :-).
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
Написал.
Подсказка:
результат Гет-запроса зенки сохраните в файл test.html, и его откройте в браузере и на нем тестируйте xPath, а то бывает что в реальном сайте чуть по другому код, чем в ответе на Get-запрос (в браузере скрипты выполняются, которые могут чуть искажать верстку по умолчанию).
Если не получится, скидывайте шаблон (или его отрывок), где есть запрос на нужную страницу и скриншот что именно надо из этой страницы вытянуть. если впишусь в 10 минут, то бесплатно будет. Иначе выставлю ценник, а он может не понравиться, ибо обычно меньше 20$ за платную возню с шаблоном не охота брать :-).
тип реклама чтобы больше взять ??
 

Dima_External

Пользователь
Регистрация
23.10.2017
Сообщения
75
Благодарностей
4
Баллы
8

orka13

Client
Регистрация
07.05.2015
Сообщения
2 177
Благодарностей
2 184
Баллы
113
типа ценник гну повыше, чтобы он сам мозгами работал, ибо что мы тут зря распинались полдня.
А так то уже успел за 15 минут порешать в личке, вернул рабочий шаблон, пусть первый раз будет бесплатно :-).
 
  • Спасибо
Реакции: Dima_External

Dima_External

Пользователь
Регистрация
23.10.2017
Сообщения
75
Благодарностей
4
Баллы
8
типа ценник гну повыше, чтобы он сам мозгами работал, ибо что мы тут зря распинались полдня.
А так то уже успел за 15 минут порешать в личке, вернул рабочий шаблон, пусть первый раз будет бесплатно :-).
Спасибо, помогли
 

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