Парсинг через XPath из переменной

Zedx

Client
Регистрация
12.06.2018
Сообщения
1 165
Благодарностей
811
Баллы
113
Подскажите как спарсить данные через XPath. Со страницы паршу вот таким образом:
instance.ActiveTab.FindElementsByXPath("//...");
Но сейчас я кладу страницу get запросом в переменную и мне нужно уже из этой переменной спарсить данные. Что-то типа такого
string source = project.Variables["get"].Value;
source.ActiveTab.FindElementsByXPath("//...");
Только не пойму как это правильно реализовать.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 683
Баллы
113
C#:
        string result = "" ; List<string> lst_Find = new List<string>();
        try { lst_Find = ZennoPoster.Parser.ParseByXpath("строка с данными", "xpath", "атрибут" ).ToList(); } catch{} // парсинг элементов
        int max_el = lst_Find.Count;
        if (number>=max_el)  number = 0;
        if (max_el >0 ) result = lst_Find[number];
выдает первый элемент или же можно работать со списком lst_Find
 
  • Спасибо
Реакции: Zedx

Zedx

Client
Регистрация
12.06.2018
Сообщения
1 165
Благодарностей
811
Баллы
113
Единственное не понял, что является атрибутом в методе ZennoPoster.Parser.ParseByXpath. У меня есть готовый xpath путь, но этот метод только с обязательными 3мя значениями.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 683
Баллы
113
Единственное не понял, что является атрибутом в методе ZennoPoster.Parser.ParseByXpath. У меня есть готовый xpath путь, но этот метод только с обязательными 3мя значениями.
C#:
        string source = project.Variables["get"].Value;
        string result = "" ; List<string> lst_Find = new List<string>();
        try { lst_Find = ZennoPoster.Parser.ParseByXpath(source , "//..." , "innertext" ).ToList(); } catch{} // парсинг элементов
        int max_el = lst_Find.Count;
        if (number>=max_el)  number = 0;
        if (max_el >0 ) result = lst_Find[number];
 
  • Спасибо
Реакции: Zedx

Platon

Client
Регистрация
26.09.2015
Сообщения
260
Благодарностей
121
Баллы
43
C#:
string source = project.Variables["get"].Value;
string result = "" ; List<string> lst_Find = new List<string>();
try { lst_Find = ZennoPoster.Parser.ParseByXpath(source , "//..." , "innertext" ).ToList(); } catch{} // парсинг элементов
int max_el = lst_Find.Count;
if (number>=max_el) number = 0;
if (max_el >0 ) result = lst_Find[number];
Не подскажешь, в чем причина может быть?, выдает вот такие ошибки:
Компиляция кода Ошибка в действии "CS0103" "The name 'number' does not exist in the current context". [Строка: 4; Cтолбец: 13]
Компиляция кода Ошибка в действии "CS0103" "The name 'number' does not exist in the current context". [Строка: 4; Cтолбец: 30]
Компиляция кода Ошибка в действии "CS0103" "The name 'number' does not exist in the current context". [Строка: 5; Cтолбец: 43]
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
такая переменая создана ?
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 683
Баллы
113
этот код из функции. number входной параметр. если использовать в кубике, то надо ее создать в начале. int number = 0; ну или какой там элемент надо найти
 
  • Спасибо
Реакции: Platon

ssXXXss

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

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 683
Баллы
113
если код в общем коде, то то её в любои случае надо объявить в кубике , ты ведь её как то передаёшь
неа. она по умолчанию объявлена нулем :-) обычно же первый элемент нужен
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
значит не объявлена, если код запустить на сравнениии просто в кубике то всё работает
 

Markoonij

Client
Регистрация
13.10.2020
Сообщения
68
Благодарностей
3
Баллы
8
В переменной dom_ids лежит DOM страницы.
Нужно из этой переменной xpath'ем выдернуть значение и положить в переменную sport.
Подскажите, как это можно реализовать.
 

Zedx

Client
Регистрация
12.06.2018
Сообщения
1 165
Благодарностей
811
Баллы
113
В переменной dom_ids лежит DOM страницы.
Нужно из этой переменной xpath'ем выдернуть значение и положить в переменную sport.
Подскажите, как это можно реализовать.
Если 1 элемент
C#:
string source = project.Variables["dom_ids"].Value;
List<string> lst_Find = new List<string>();
lst_Find = ZennoPoster.Parser.ParseByXpath(source , "//xPath" , "innertext" ).ToList();
project.Variables["sport"].Value = lst_Find[0];
 
  • Спасибо
Реакции: Markoonij

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