Красивый суп — получение верхнего тега div без вложенного диапазона

#python #html #beautifulsoup #tags #find

#python #HTML #beautifulsoup #Теги #Найти

Вопрос:

Мне нужно получить только верхний тег div без его вложенных тегов.

 <div class="listing-price">
    K75,000
    <span class="listing-price-sqm">$750000/m<sup>2</sup></span>
</div>
 

Код, который у меня есть, возвращает как значение из тега класса div, так и из тега класса span :
listing_price = house.find("div", class_="listing-price").text.strip()

Как я могу получить только значение K75 000?

Спасибо

Комментарии:

1. не могли бы вы попробовать string вместо text и проверить его еще раз. А также добавьте вывод вашего кода к вашему вопросу.

2. @iliya результат: 75 000 $ 750000 / м2

3. вы удалили strip() из from string ? Сделайте это так и отчитайтесь.

4. Я обновил код: listing_price = house.find(«div», class_=»listing-price»).string но на этот раз я не получаю значение обратно. В результате у меня «Нет»

5. не могли бы вы дать мне URL-адрес, чтобы у меня была возможность изучить его самостоятельно

Ответ №1:

Вы можете использовать contents или next_element для получения значения.

 html='''<div class="listing-price">
    K75,000
    <span class="listing-price-sqm">$750000/m<sup>2</sup></span>
</div>'''
soup=BeautifulSoup(html,"html.parser")
print(soup.select_one(".listing-price").contents[0].strip())
 

или

 print(soup.select_one(".listing-price").next_element.strip())
 

Вывод:

 K75,000
 

Ответ №2:

Возможно, вы захотите попробовать это:

 soup.find('div', {'class': 'listing-price'}).get_text(strip=True, separator='|').split('|')[0]