Поиск по именам классов с тире ('-')
Я возиться с lxml
в Python, но не могу понять, как использовать cssselect()
функция, чтобы получить все div
с классом reddit-entry
как это не нравится -
персонаж. Любое другое имя класса без -
работает отлично.
2 ответа
Решение
Это ошибка в парсере в lxml.cssselect. Я взял на себя сопровождение проекта и извлек его из lxml. Ошибка исправлена в новом cssselect: http://packages.python.org/cssselect/
lxml 2.4 будет использовать новый cssselect, но до тех пор его можно использовать следующим образом:
from cssselect import HTMLTranslator
result = lxml_document.xpath(HTMLTranslator().css_to_xpath('div.reddit-entry'))
Если вы запускаете код, который использует cssselector через xpath, он работает...
obj.xpath("//div[contains(concat(' ', normalize-space(@class), ' '), ' reddit-entry ')]")