Селектор CSS у вас есть нет даже синтаксически допустимый селектор:.
[class~=odd even]
Значения, содержащие пробелы должны всегда быть в кавычках, так что правильный способ, чтобы написать этот селектор будет:
[class~="odd even"]
Однако этот селектор на самом деле никогда не может соответствовать что-нибудь: Селектор значение по [attr~=val]
атрибута соответствует ...
an element with the att
attribute whose value is a whitespace-separated list of words, one of which is exactly "val"
. If "val"
contains whitespace, it will never represent anything (since the words are separated by spaces)
Поскольку слова разделены пробелами, это означает, что они никогда не могут содержать пробельных себя. Но слово вы ищете ("odd even"
), делает содержит пробелы, поэтому он ничего не может сопоставить.
Предположительно, то, что вы ищете, это комбинатор OR
, но его не существует. Итак, то, что вы ищете, не может быть выражено с помощью селекторов CSS.
Ну, на самом деле, это не так: это может быть выраженным с помощью селекторов CSS. Вы можете просто использовать группы селекторов, которые дают вам установить объединение матчей, что эквивалентно с использованием OR
комбинатора:
table.data tr.odd, table.data tr.even
Помните: КСС на основе установлена, поэтому порядок не имеет значения.В вашем случае, заказ делает вопрос, что означает, что CSS действительно неправильный инструмент для работы:
report.xpath('//table[@class="data"]//tr[@class="odd" or @class="even"')
Хотя я должен признать, что я не знаю, почему вы не просто использовать что-то вроде этого:
report.css('table.data tr')
в конце концов, не выбирая все нечетный и все четные строки так же, как выбор всех строк? Я имею в виду, что еще вы получили там, иррациональные строки?
это работает, однако оно дает мне как «1,3,5,7,9,2,4,6,8', а не последовательно. есть ли способ получить его последовательно? –
Если порядок имеет значение, вы можете выбрать 'table.data tr [class]', чтобы найти каждый 'tr' с любым атрибутом' class', а затем проверить точное значение 'class' в Ruby. Это не так лаконично, но гораздо более гибко, чем селектор CSS. –
плохо смотри в это, спасибо! –