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

Dima_External

Пользователь
Joined
Oct 23, 2017
Messages
75
Reaction score
4
Points
8
Сохранил ответ после гет-запроса, теперь мне нужно выпарсить некоторые данные.
Сознательно выбрал XPath - работать легче и удобнее.

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

orka13

Client
Joined
May 6, 2015
Messages
2,190
Reaction score
2,209
Points
113
Пример готового шаблона с xPath на запросах и библиотекой отдельной Html Agility Pack:
https://zennolab.com/discussion/threads/ispolzovanie-xpath-na-chistom-html.40267/#post-299467
Если в браузере делаете, то можно штатными средствами зенки без библиотек, а с того поста только мануалы почитайте. Поиск по форуму тем с примерами:
xpath пример site:zennolab.com
 

Dima_External

Пользователь
Joined
Oct 23, 2017
Messages
75
Reaction score
4
Points
8
Пример готового шаблона с xPath на запросах и библиотекой отдельной Html Agility Pack:
https://zennolab.com/discussion/threads/ispolzovanie-xpath-na-chistom-html.40267/#post-299467
Если в браузере делаете, то можно штатными средствами зенки без библиотек, а с того поста только мануалы почитайте. Поиск по форуму тем с примерами:
xpath пример site:zennolab.com

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

Dima_External

Пользователь
Joined
Oct 23, 2017
Messages
75
Reaction score
4
Points
8
Пример готового шаблона с xPath на запросах и библиотекой отдельной Html Agility Pack:
https://zennolab.com/discussion/threads/ispolzovanie-xpath-na-chistom-html.40267/#post-299467
Если в браузере делаете, то можно штатными средствами зенки без библиотек, а с того поста только мануалы почитайте. Поиск по форуму тем с примерами:
xpath пример site:zennolab.com

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

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


Code:
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
Joined
Dec 23, 2014
Messages
7,374
Reaction score
2,043
Points
113
а покажи строку где ты в список ложишь ?
 

Dima_External

Пользователь
Joined
Oct 23, 2017
Messages
75
Reaction score
4
Points
8
а покажи строку где ты в список ложишь ?
15-я строка, так же или ошибаюсь? sourceList.Add(temp);
 

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,374
Reaction score
2,043
Points
113
15-я строка, так же или ошибаюсь? sourceList.Add(temp);
извиняюсь, что то не заметил с первого раза, попробуй вместо temp в той стролке написать result
 

Dima_External

Пользователь
Joined
Oct 23, 2017
Messages
75
Reaction score
4
Points
8
извиняюсь, что то не заметил с первого раза, попробуй вместо temp в той стролке написать result
Нет, ничего не меняется..
Также пусто - http://prntscr.com/l4es3n
 

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,374
Reaction score
2,043
Points
113
тут только одно решение, скидывай свой шаб
 

orka13

Client
Joined
May 6, 2015
Messages
2,190
Reaction score
2,209
Points
113
Примерно понял как и что, однако данных не получаю после завершения работы кубика.

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


Code:
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

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

Dima_External

Пользователь
Joined
Oct 23, 2017
Messages
75
Reaction score
4
Points
8
У вас неправильное представление как лучше синтаксис xPath составлять. Здесь лучше цепляться за соседние элементы, а не делать "в лоб" с вложенностью такой длинной. Уже было подобное недавно. В итоге у вас наверное не находит нужных элементов.
Можете написать в лс, пожалуйста?
 

orka13

Client
Joined
May 6, 2015
Messages
2,190
Reaction score
2,209
Points
113
Написал.
Подсказка:
результат Гет-запроса зенки сохраните в файл test.html, и его откройте в браузере и на нем тестируйте xPath, а то бывает что в реальном сайте чуть по другому код, чем в ответе на Get-запрос (в браузере скрипты выполняются, которые могут чуть искажать верстку по умолчанию).
Если не получится, скидывайте шаблон (или его отрывок), где есть запрос на нужную страницу и скриншот что именно надо из этой страницы вытянуть. если впишусь в 10 минут, то бесплатно будет. Иначе выставлю ценник, а он может не понравиться, ибо обычно меньше 20$ за платную возню с шаблоном не охота брать :-).
 

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,374
Reaction score
2,043
Points
113
Написал.
Подсказка:
результат Гет-запроса зенки сохраните в файл test.html, и его откройте в браузере и на нем тестируйте xPath, а то бывает что в реальном сайте чуть по другому код, чем в ответе на Get-запрос (в браузере скрипты выполняются, которые могут чуть искажать верстку по умолчанию).
Если не получится, скидывайте шаблон (или его отрывок), где есть запрос на нужную страницу и скриншот что именно надо из этой страницы вытянуть. если впишусь в 10 минут, то бесплатно будет. Иначе выставлю ценник, а он может не понравиться, ибо обычно меньше 20$ за платную возню с шаблоном не охота брать :-).
тип реклама чтобы больше взять ??
 

Dima_External

Пользователь
Joined
Oct 23, 2017
Messages
75
Reaction score
4
Points
8
тип реклама чтобы больше взять ??
Можешь тоже пожалуйста, в лс написать? У меня такой возможности нет.
 

orka13

Client
Joined
May 6, 2015
Messages
2,190
Reaction score
2,209
Points
113
типа ценник гну повыше, чтобы он сам мозгами работал, ибо что мы тут зря распинались полдня.
А так то уже успел за 15 минут порешать в личке, вернул рабочий шаблон, пусть первый раз будет бесплатно :-).
 
  • Thank you
Reactions: Dima_External

Dima_External

Пользователь
Joined
Oct 23, 2017
Messages
75
Reaction score
4
Points
8
типа ценник гну повыше, чтобы он сам мозгами работал, ибо что мы тут зря распинались полдня.
А так то уже успел за 15 минут порешать в личке, вернул рабочий шаблон, пусть первый раз будет бесплатно :-).
Спасибо, помогли
 

Users Who Are Viewing This Thread (Total: 1, Members: 0, Guests: 1)