Вопрос по xPath и Html Agility. Как вытянуть значение?

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
имеем огромный код страницы, искать через регикс можно, но отнимает много времени на "выскреб" нужного
в итоге нужно следующее

В коде есть такая строка
C#:
<p class="form-submit"><input name="submit" type="submit" id="submit" class="submit" value="Post Comment" /> <input type='hidden' name='comment_post_ID' value='341' id='comment_post_ID' />
значение - comment_post_ID как я понял уникально, и вроде как находится в единственном варианте на всей странице
нужно из этой строки вытащить значение 341, которое находится в ( value='341' )... данное число динамическое

как это сделать?

Агилити подключил, а вот шарп не нашел какой лучше использовать

спасибо
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 521
Благодарностей
1 319
Баллы
113
имеем огромный код страницы, искать через регикс можно, но отнимает много времени на "выскреб" нужного
в итоге нужно следующее

В коде есть такая строка
C#:
<p class="form-submit"><input name="submit" type="submit" id="submit" class="submit" value="Post Comment" /> <input type='hidden' name='comment_post_ID' value='341' id='comment_post_ID' />
значение - comment_post_ID как я понял уникально, и вроде как находится в единственном варианте на всей странице
нужно из этой строки вытащить значение 341, которое находится в ( value='341' )... данное число динамическое

как это сделать?

Агилити подключил, а вот шарп не нашел какой лучше использовать

спасибо
//*[@name='comment_post_ID']
или
//input[@name='comment_post_ID']
и атрибут: value
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
сам путь понятен, не понятно каким кубиком брать, если просто объяснять )
или шарпом, если шарпом то какой сниппет?

ну брать надо из переменной
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 521
Благодарностей
1 319
Баллы
113
сам путь понятен, не понятно каким кубиком брать, если просто объяснять )
или шарпом, если шарпом то какой сниппет?

ну брать надо из переменной
Если парсить нужно много value, в диапазоне пишите all
71254
 
  • Спасибо
Реакции: orka13 и backoff

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
спасибо, работает!
через парсить данные то что надо!
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 719
Баллы
113
ну и что бы раскрыть тему до конца, то в зенке можно парсить xpath прямо из строки
C#:
var resultParseByXpath = ZennoPoster.Parser.ParseByXpath("тута страница", "//body//тута xpath", "value"); // последний аргумент указывает, откуда получить значение
 
  • Спасибо
Реакции: afk и backoff

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 370
Баллы
113
В данном случае, HtmlAgility не требуется.
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
ну тогда all это для списка подойдет лучше, по идее?
какой смысл юзать all если по xpath всего 1 результат выдает

или я чего-то не понимаю?
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 521
Благодарностей
1 319
Баллы
113
ну тогда all это для списка подойдет лучше, по идее?
какой смысл юзать all если по xpath всего 1 результат выдает

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

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 521
Благодарностей
1 319
Баллы
113
в том-то и дело что проверил, и работают они одинаково, от сюда и вопрос появился)
Значит у вас значение одно находит по вашему условию, а если например вставите такую дорогу //*[@class] и атрубут class , тогда вы увидите сколько найдет когда стоит all.
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
Значит у вас значение одно находит по вашему условию
о чем и написал выше )

но вот решил затестить
донор
C#:
https://zennolab.com/discussion/threads/vopros-po-xpath-i-html-agility-kak-vytjanut-znachenie.88212/#post-591940
беру
71270
логично и правильно

далее делаю это

71271

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

приведите пример правильной работы
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 521
Благодарностей
1 319
Баллы
113
о чем и написал выше )

но вот решил затестить
донор
C#:
https://zennolab.com/discussion/threads/vopros-po-xpath-i-html-agility-kak-vytjanut-znachenie.88212/#post-591940
беру
Посмотреть вложение 71270
логично и правильно

далее делаю это

Посмотреть вложение 71271

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

приведите пример правильной работы
71272
Так построена логика зеннопостер, что в переменную вернет лишь первое значение. Если такой вариант не устраивает, тогда нужно использовать c# кубик и методом перебора вносить в c# лист, а уже потом в переменную.
 
  • Спасибо
Реакции: backoff

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
ну я так и понял...
в общем чтоб получить правильное значение, нужно строить правильный и уникальный путь :-)

за разъяснения спасибо, очень пригодится данный способ
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
подскажите плиз
хочу сразу сделать регекс по найденному, почему не получается? хочу чтоб в ответе оставались только цифры

79156

по xpath все находит, но не могу понять как без доп кубика вычленить цифры.
спасибо

надо чтоб в ответе(в переменной) было только - 559
 

radv

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

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113

volody00

Client
Регистрация
06.09.2016
Сообщения
918
Благодарностей
953
Баллы
93

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113

volody00

Client
Регистрация
06.09.2016
Сообщения
918
Благодарностей
953
Баллы
93
глянул. нельзя в нём это сделать. тут просто дополнительная фильтрация, а на лету оставить не получится. только отдельным кубиком
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113

volody00

Client
Регистрация
06.09.2016
Сообщения
918
Благодарностей
953
Баллы
93
сделай для себя плагин, куда упакуешь этот кубик и regex. Будет 1 кубик :-)
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 719
Баллы
113

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 719
Баллы
113
то есть получается типа проект в проекте? только без проекта? )
ну типа того. на выходе получаем кубик с нужным функционалом, при выполнении которого в ПМ , не будет происходить заход внутрь. а то подпроекты не удобны тем что они начинают отрываться... хотя можно конечно опубликовать подпроект... но я не пробовал. попробуй и расскажи.
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
ну оке, уговорил, оставлю 2 кубика как есть :D
но за инфу спасибо, пригодится
 

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