Я пытаюсь получить некоторые текстовые значения с веб-сайта, и возникла небольшая проблема.
Веб-сайт с данными о недвижимости имеет несколько функций, которые я пытаюсь получить. У меня не было проблем с «основными» функциями, такими как цена. Код, который я использую, выглядит следующим образом.
def get_offer_details(self, response):
offer_item = ItemLoader(item=estateItem(), selector=response)
offer_item.add_xpath('tittle', "//h1[@class='css-11t1qm5']/text()")
offer_item.add_xpath('price', '//strong[@class = "css-1mojccp"]/text()')
yield offer_item.load_item()
Я могу использовать селектор класса в приведенных выше примерах.
Как я могу получить текстовое значение (в этом примере «2») из второго элемента div в этой структуре? Есть несколько функций с точно такой же структурой, единственная разница - это ария-метка (спальни, рынок и т. д.), поэтому я не могу использовать селектор «класс».
<div role = "region" aria-label = "bedrooms" class = "css-11ic80g">
<div title = "bedrooms" class = "css-152vbi8">bedrooms<!-- -->:</div>
<div title = "2" class = "css-1s5nyln">2</div>
</div>
Вот как это выглядит:
#I dont know.. maybe something like this? But it doesnt work..
offer_item.add_xpath('bedrooms', "//div[@aria-label='bedrooms'][1]/text()")
Заранее спасибо.
Попробуйте этот XPATH, чтобы получить текст от первого ребенка:
"//div[@aria-label='bedrooms']/div[1]/text()"
или
"//div[@aria-label='bedrooms']/div[2]/text()"
для текста со второго
Другой подход с использованием following-sibling::
:
offer_item.add_xpath('bedrooms', "//div[@title='bedrooms']/following-sibling::div[1]/text()")