Список содержит только текстовые узлы, соответствующие выражению XPath, он не содержит информации о элементах, которые XPath не выбрал.
Вам нужно написать свою собственную логику, чтобы вставить пустую строку в список в случае, если 'класс m01 не существует в ID RM1127'. Одним из возможных подходов является модификацией XPath для выбора div[@id="RM1127"]
, так что вы можете через цикл полного комплекта div
и вставить либо фактический целевой текст или пустой текст в список по мере необходимости, например:
mainCourse = []
for div in tree.xpath('//div[@id="RM1127"]'):
#store current list size
size = len(mainCourse)
#insert target text nodes to the list
mainCourse.extend(div.xpath('./div[@class="m01"]/text()'))
#if size doesn't change, meaning no target text nodes was found...
if size == len(mainCourse):
#...insert blank text to the list
mainCourse.append('')
Можете ли вы привести пример ввода и какой результат вы ожидаете? –
Что вы здесь делаете, это взять все div только с [class = 'm01'] внутри div с [id = 'RM1127'], однако на самом деле не совсем ясно, в чем проблема. –