BeautifulSoup не может видеть элементы, которые вы пытаетесь очистить, потому что они создаются и заполняются асинхронно с использованием JavaScript. Это происходит после того, как ваш браузер сделал запрос и получил базовый HTML для страницы, который является своего рода шаблоном, который будет заполнен позже, как я уже сказал, с помощью JavaScript. BeautifulSoup видит только баребоны HTML.
Итак, вы не можете использовать BeautifulSoup. Вы можете использовать Selenium, как говорили другие, но в этом нет необходимости. Если вы регистрируете свой сетевой трафик c с помощью инструментов разработчика Google Chrome (другие браузеры имеют аналогичную функцию), вы можете увидеть, что ваш браузер делает запрос к RESTful API, который обслуживает JSON, содержащий всю информацию. вы можете когда-либо захотеть о каждой собственности. Все, что вам нужно сделать, это имитировать этот HTTP-запрос GET:
def main():
import requests
url = "https://www.sreality.cz/api/cs/v2/estates"
params = {
"building_condition": "3%7C8%7C4",
"category_main_cb": "1",
"category_sub_cb": "2%7C3%7C4%7C5%7C6%7C7%7C8%7C9%7C10%7C11%7C12%7C16",
"category_type_cb": "1",
"locality_region_id": "10",
"per_page": "20",
"tms": "1592389441017"
}
response = requests.get(url, params=params)
response.raise_for_status()
estates = response.json()["_embedded"]["estates"]
for estate in estates:
print(f"GPS: {estate['gps']}")
print(f"Name: {estate['name']}")
print(f"Locality: {estate['locality']}")
print(f"Price: {estate['price']}\n")
return 0
if __name__ == "__main__":
import sys
sys.exit(main())
Вывод:
GPS: {'lat': 50.088512, 'lon': 14.399361}
Name: Prodej bytu 5+1 145 m²
Locality: Nerudova, Praha - Praha 1
Price: 1
GPS: {'lat': 50.028564, 'lon': 14.366739}
Name: Prodej bytu 2+kk 54 m²
Locality: Wassermannova, Praha - Hlubočepy
Price: 6651072
GPS: {'lat': 50.008667, 'lon': 14.466505}
Name: Prodej bytu 2+kk 45 m²
Locality: Na domovině, Praha 4 - Libuš
Price: 3899000
GPS: {'lat': 50.104355, 'lon': 14.585402}
Name: Prodej bytu 2+1 60 m²
Locality: Bryksova, Praha - Černý Most
Price: 5019000
GPS: {'lat': 50.028564, 'lon': 14.366739}
Name: Prodej bytu 4+kk 105 m²
Locality: Wassermannova, Praha - Hlubočepy
Price: 11467890
GPS: {'lat': 50.084553, 'lon': 14.417782}
Name: Prodej bytu 4+kk 229 m²
Locality: Praha 1 - Staré Město
Price: 29900000
GPS: {'lat': 50.042973, 'lon': 14.494473}
Name: Prodej bytu 1+kk 33 m²
Locality: Klapálkova, Praha 4 - Chodov
Price: 3350000
GPS: {'lat': 50.044209, 'lon': 14.496346}
Name: Prodej bytu 3+kk 205 m²
Locality: Milínská, Praha 10 - Záběhlice
Price: 8950000
GPS: {'lat': 50.042973, 'lon': 14.494473}
Name: Prodej bytu 1+kk 33 m²
Locality: Klapálkova, Praha 4 - Chodov
Price: 3350000
GPS: {'lat': 50.042973, 'lon': 14.494473}
Name: Prodej bytu 1+kk 33 m²
Locality: Klapálkova, Praha 4 - Chodov
Price: 3420000
GPS: {'lat': 50.070419, 'lon': 14.383278}
Name: Prodej bytu 3+kk 83 m²
Locality: Pod Radnicí, Praha 5 - Košíře
Price: 7800000
GPS: {'lat': 50.00695, 'lon': 14.416012}
Name: Prodej bytu atypické 191 m² (Podkrovní)
Locality: Československého exilu, Praha 4 - Modřany
Price: 1
GPS: {'lat': 50.028564, 'lon': 14.366739}
Name: Prodej bytu 5+kk 129 m²
Locality: Wassermannova, Praha - Hlubočepy
Price: 15706444
GPS: {'lat': 50.088615, 'lon': 14.469955}
Name: Prodej bytu 3+kk 96 m²
Locality: Jeseniova, Praha 3 - Žižkov
Price: 11500000
GPS: {'lat': 50.028564, 'lon': 14.366739}
Name: Prodej bytu 3+kk 67 m²
Locality: Wassermannova, Praha - Hlubočepy
Price: 7753995
GPS: {'lat': 50.11171, 'lon': 14.47769}
Name: Prodej bytu 2+kk 39 m²
Locality: Pod Labuťkou, Praha 8 - Libeň
Price: 3590000
GPS: {'lat': 50.126289, 'lon': 14.505613}
Name: Prodej bytu 2+kk 57 m²
Locality: Kytlická, Praha 9 - Prosek
Price: 1
GPS: {'lat': 50.057446, 'lon': 14.427087}
Name: Prodej bytu 2+kk 51 m²
Locality: Na Dolinách, Praha 4 - Podolí
Price: 3900000
GPS: {'lat': 50.016838, 'lon': 14.584877}
Name: Prodej bytu 3+kk 96 m²
Locality: K dálnici, Praha 10 - Pitkovice
Price: 8499000
GPS: {'lat': 50.028564, 'lon': 14.366739}
Name: Prodej bytu 5+kk 129 m²
Locality: Wassermannova, Praha - Hlubočepy
Price: 14942321
GPS: {'lat': 50.028564, 'lon': 14.366739}
Name: Prodej bytu 5+kk 131 m²
Locality: Wassermannova, Praha - Hlubočepy
Price: 14779177
Вы можете изменить строку запроса per_page
в словаре params
, чтобы запросить больше чем 20 объектов одновременно. Эти параметры строки запроса я также получил, просто просмотрев URL-адрес запроса в сетевом трафике c logger.