Scrapy / XPath извлекает текст из разных тегов (‹p› OR ‹li›)

Я пытаюсь очистить текст с веб-сайта. Иногда текст записывается в виде маркеров, иногда просто текстом.

Текст в маркированном списке (XPath): /article/div[@class='border-bottom-grau'][1]/ul/li[1]

Текст в виде обычного текста (XPath): /article/div[@class='border-bottom-grau'][1]/p

Мне нужно извлечь уважительный текст (без тегов div / ul / li / p и т. Д.). Это то, что я пробовал до сих пор:

info_Aufgabengebiet = info.xpath(".//article/div[@class='border-bottom-grau'][1][descendant::text()]").extract()

Вывод: см. Изображение Вывод

Я также экспериментировал с потомком-или-собой, / text () в конце, но ни один из них не работал. Просто я хочу извлечь весь текст, будь то маркер или обычный текст. Следует просто добавить точки пули, может быть, с; или ,.

Любая помощь высоко ценится

Спасибо


person Julian    schedule 26.03.2021    source источник


Ответы (2)


Вы можете использовать XPath с комбинированными условиями

"/article/div[@class='border-bottom-grau'][1]/ul/li[1] | /article/div[@class='border-bottom-grau'][1]/p"
person JaSON    schedule 26.03.2021

Оператор объединения |, упомянутый в другом ответе, является хорошим решением. В качестве альтернативы, в зависимости от ваших потребностей в выводе, вы можете попробовать

/article/div[@class='border-bottom-grau'][1]//*[self::p or self::li]

person Forensic_07    schedule 26.03.2021