lxml извлекает нечетные элементы с помощью cssselector
-
18-09-2019 - |
Вопрос
В моем тестовом документе у меня есть несколько классов с пометкой "item", в настоящее время я использую следующее для анализа всего в html-файле с этим классом с
Selection = html.cssselect(".item")
Я бы хотел, чтобы он выбирал все нечетные элементы, как это в javascript с помощью jQuery
Selection = $(".item:odd");
Повторяя это дословно, я получаю следующую ошибку
lxml.cssselect.ExpressionError (Ошибка выражения):Символ псевдокласса (u'odd', 6) неизвестен
Я знаю, что это было бы тривиально реализовать самостоятельно, мне было интересно, поддерживается ли это изначально lxml.
Решение
"Нечетные" и "четные" объекты являются частью селектора с именем "nth-child()".;взгляните на спецификацию CSS selector для получения более подробной информации:
http://www.w3.org/TR/2001/CR-css3-selectors-20011113/#nth-child-pseudo
Следовательно, вы должны быть в состоянии получить именно то поведение, которое вы хотите (и это работает для меня с cssSelector здесь) с:
".item:nth-child(odd)"