Получение дочерних элементов текстового узла (используя text()
), как правило, не рекомендуется, именно по причинам, продемонстрированным здесь.С <a>content</a>
вы получите «контент», с <a><span>content</span><a>
вы ничего не получите, с <a>h<sub>2</sub>o</a>
вы получите два текстовых узла, «h» и «o».
Используйте string () длявместо этого получите строковое значение.Строковое значение содержит объединенное содержимое всех текстовых узлов-потомков на любой глубине.(«content», «content» и «h2o» в этих трех примерах).
Единственная оговорка в том, что я не знаю Scrapy API, поэтому я не знаю, как он обрабатывает выражения XPath, которые возвращаютстроки, а не узлы.