Вопрос по строковой функции xpath 'concat'



  • Всем привет!

    Есть некоторый сайт вот с таким кодом:

    <table>
    <tbody>
        <tr>
            <td>ТЕКСТ 1</td>
            <td>ТЕКСТ 2</td>
            <td></td>
    

    Мне нужно забрать ТЕКСТ 1 и ТЕКСТ 2, но так, чтобы получилось "ТЕКСТ 1 + ТЕКСТ 2", то есть надо эти значения не только взять, но и поставить между ними знак "+".

    Я пробовал через Xpath функцию concat, типа такого "//table[concat(//tbody//tr/td[1],'+',//tbody//tr/td[2])]", но ничего не получилось. Отсюда вопрос, может кто знает, в чем ошибка? И можно ли вообще в данном случае использовать такую строку для извлечения данных?



  • Бери по одной, и клей через переменные - установить значение.
    А конкотинейт, сдается мне подъедет вместе с xpath 2.0

    ps: сдается мне там и синтаксис другой
    https://developer.mozilla.org/en-US/docs/Web/XPath/Functions/concat



  • @Bigma да костылей можно много придумать, тут нюанс в том, что таких "ТЕКСТ 1" много, то есть есть "ТЕКСТ 2", "ТЕКСТ 3", "ТЕКСТ 4" и тд. Все костыли сделают ненужную нагрузку. .



  • Попробуй тейбл во внутрь каждого пихнуть
    https://stackoverflow.com/questions/21996965/concatenate-multiple-node-values-in-xpath



  • @Вениамин синтаксис должен быть примерно таким

    concat((//li/text())[1],(//li/text())[2])
    

    В басе для извлечения текста со странице - вроде не работает.
    Может через модуль Xpath из переменной.
    Сначала протестируй в обычном хроме с каким нить хелпером типо этого
    https://chrome.google.com/webstore/detail/xpather/gabekepgockchhemajjahpchlnkadiac?hl=en

    а потом уже в бас его



  • This post is deleted!


  • @Bigma ну я сделал по-колхозному, получил список одних значений, потом список других значений и дальше через функции объединял. Коряво, но задачу решил.

    А так вопрос остается открытым, так как я уже не впервые с такой проблемой сталкиваюсь и костыли при большом количестве значений тормозят скрипт. Терпимо, но хочется лучше :)


Log in to reply
 

  • 6
  • 7
  • 2
  • 6
  • 3
  • 2
  • 16
  • 9