#ruby #rubygems #css-selectors
#ruby #rubygems #css-селекторы
Вопрос:
Я хочу выбрать значение href ссылки, которую я выбрал с помощью wombat:
вот как выглядит селектор:
parent_url "css=#breadcrumbcontainer > div > p a:last-child"
wombat имеет форматы свойств, такие как: html, текст и т.д. Даже если я использую html для этого выделения, я получаю внутренний текст ссылки, который для меня бесполезен.
Пожалуйста, предложите селектор css, который просто возвращал бы href или способ получить href, используя какой-либо параметр формата свойств wombat.
Исходный код wombat gem можно найти по адресу: https://github.com/felipecsl/wombat
Ответ №1:
Вы не можете использовать CSS для выбора атрибута, вы можете выбирать только элементы. Вам нужно будет использовать XPath для получения href
. Попробуйте использовать:
parent_url "xpath=//*[@id = 'breadcrumbcontainer']/div/p//*[position() = last() and self::a]/@href"
Я получил этот XPath, используя Nokogiri::CSS.xpath_for("your css query")
и добавляя /@href
для выбора узла атрибута. Wombat использует Nokogiri, поэтому такой перевод уже происходит.
Комментарии:
1. Эй, Мэтт, я тоже придумал это решение. Это то, что я использую: parent_url xpath: «(//*[@id=’breadcrumbcontainer’]/div //a)[last()]/@href» Хотя ваш ответ довольно близок, не уверен, лучше он или нет, я принимаю его какправильный ответ. Спасибо 🙂
2. @whizcreed Поскольку я не знаю структуру целевой веб-страницы, я могу указать XPath, созданный Nokogiri, только когда он преобразует ваш CSS. Поскольку вы знаете структуру страницы, вы можете создать более краткое выражение XPath. Они, безусловно, выглядят одинаково.