#ruby-on-rails #ruby #xpath #nokogiri
#ruby-on-rails #ruby #xpath #nokogiri
Вопрос:
У меня есть два типа Nokogiri::HTML.fragment
:
<td><a href="somelink?etc...">text</a></td>
и:
<a href="somelink?etc...">text</a> <!-- not wrapped in <td> tag -->
Мне нужно извлечь ссылки с href
started with somelink
. Во фрагменте может быть более одной ссылки, и не все из них могут быть somelink
в href
атрибуте.
Я использовал этот код:
fragment = Nokogiri::HTML.fragment('<td><a href="somelink?etc...">text</a></td>')
fragment.xpath('.//a[starts-with(@href, "somelink")]')
Это нормально работает для фрагментов первого типа, обернутых <td>
тегом, но когда я запускаю эту функцию для второго типа, я получаю пустой массив.
Когда я запускаю fragment.xpath('.//a')
второй тип, я получаю все ссылки в массиве, но мне все равно нужно их отфильтровать href
.
Может кто-нибудь объяснить это странное поведение?
Комментарии:
1. попробуйте без точки : fragment.xpath(‘//a[starts-with(@href, «somelink»)]’)
2. @Jayvee нет (( Без точки это не работает даже для первого типа (с тегом <td>)