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

  • Автор темы Автор темы backoff
  • Дата начала Дата начала

backoff

Client
Регистрация
20.04.2015
Сообщения
6 386
Реакции
6 671
Баллы
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' )... данное число динамическое

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

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

спасибо
 
имеем огромный код страницы, искать через регикс можно, но отнимает много времени на "выскреб" нужного
в итоге нужно следующее

В коде есть такая строка
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
 
сам путь понятен, не понятно каким кубиком брать, если просто объяснять )
или шарпом, если шарпом то какой сниппет?

ну брать надо из переменной
Если парсить нужно много value, в диапазоне пишите all
71254
 
  • Оценить
Реакции: orka13 и backoff
ну и что бы раскрыть тему до конца, то в зенке можно парсить xpath прямо из строки
C#:
Развернуть Свернуть Копировать
var resultParseByXpath = ZennoPoster.Parser.ParseByXpath("тута страница", "//body//тута xpath", "value"); // последний аргумент указывает, откуда получить значение
 
  • Оценить
Реакции: afk и backoff
В данном случае, HtmlAgility не требуется.
 
ну тогда all это для списка подойдет лучше, по идее?
какой смысл юзать all если по xpath всего 1 результат выдает

или я чего-то не понимаю?
По xpath выдает все результаты, которые соответствуют xpath дороге, которой мы задали. В переменную не вернет все значения, а в список вернет все значения с одинаковыми условиями xpath.
Вам достаточно проверить и один и второй вариант, что бы понять как это работает и тогда не возникло бы такого вопроса. Как минимум это быстрее было бы.
 
в том-то и дело что проверил, и работают они одинаково, от сюда и вопрос появился)
Значит у вас значение одно находит по вашему условию, а если например вставите такую дорогу //*[@class] и атрубут class , тогда вы увидите сколько найдет когда стоит all.
 
Значит у вас значение одно находит по вашему условию
о чем и написал выше )

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

беру
71270
логично и правильно

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

71271

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

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

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

беру
Посмотреть вложение 71270
логично и правильно

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

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

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

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

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

79156

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

надо чтоб в ответе(в переменной) было только - 559
 
79162
то есть получается типа проект в проекте? только без проекта? )
 
то есть получается типа проект в проекте? только без проекта? )
ну типа того. на выходе получаем кубик с нужным функционалом, при выполнении которого в ПМ , не будет происходить заход внутрь. а то подпроекты не удобны тем что они начинают отрываться... хотя можно конечно опубликовать подпроект... но я не пробовал. попробуй и расскажи.
 

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