Парсер не находит тег, который есть на странице
Я пишу парсер на пайтоне. Столкнулся с проблемой, на странице есть тег img с классами "gallery__slide___1n_To img__image___3j0lv", но когда паршу её, такого тега нет, мало того, пытался найти хоть какое-то изображение на странице, но в массиве soup.find_all('img') есть только 4 элемента, у которых атрибут src - это огромная каша из символов, это не картинки, я проверял) При этом если проверить код элемента картинки - то теги с такими классами есть. Вот сайт: https://www.domofond.ru/dom-na-prodazhu-kurgan-2005637385, нужно достать фотографии дома с объявления. Вот код:
from bs4 import BeautifulSoup
import requests
url = 'https://www.domofond.ru/dom-na-prodazhu-kurgan-2005637385'
session = requests.Session()
request = session.get(url)
page = requests.get(url)
soup = BeautifulSoup(page.text, 'html.parser')
images = soup.find_all('img', class_='gallery__slide___1n_To img__image___3j0lv')
print(images)
Ответы (1 шт):
Данные при загрузке страницы находятся не в тегах, а скриптах, поэтому для их получения нужно или движок на js использовать (например, selenium), или извлечь и обработать через сам скрипт.
Добавил второй вариант. Для него через регулярку вытащил данные и распарсил их в json. Среди этих данных есть данные той галереи.
Пример:
import json
import re
import requests
rs = requests.get('https://www.domofond.ru/dom-na-prodazhu-kurgan-2005637385')
m = re.search('window.__INITIAL_DATA__ = (\{.+\})', rs.text)
if not m:
# Добавить обработку в случае, если не удалось выцепить window.__INITIAL_DATA__
...
data_str = m.group(1)
data = json.loads(data_str)
print(data)
# {'itemsState': {'items': None, 'currentItem': None, 'currentItemError': None, 'similarItems': None, ...