Я вижу здесь две проблемы.
Во-первых, если вы разделите имя класса пробелами, селектор css поймет, что вы ищете дочерний элемент с таким именем. Таким образом, правильный подход - "div.home-hero-blurb.no-select::text"
вместо "div.home-hero-blurb no-select::text"
.
Вторая проблема заключается в том, что текст, который вы хотите, находится внутри элемента p
, который является потомком этого div
. Если вы выберете только div
, селектор вернет текст внутри div
, но не в его дочерних элементах. Поскольку есть также элемент strong
как дочерний элемент p
, я бы предложил использовать универсальный подход, например:
response.css("div.home-hero-blurb.no-select *::text").getall()
Это должно вернуть весь текст из div
и его потомков.
Следует отметить, что извлечение текста из селекторов css является расширением стандартных селекторов. Scrapy упоминает это здесь .
Edit
Если бы вы использовали XPath, это было бы эквивалентное выражение:
response.xpath('//div[@class="home-hero-blurb no-select"]//text()').getall()