Search code examples
pythonhtmlselenium-webdriverparsingbeautifulsoup

Website parser randomly doesnt get img URL from particular flats with the same class


I'm building a parser using BeautifulSoup to extract apartment data from a webpage. Most of the data is parsed correctly, including apartment titles, prices, and images, but in some cases it just randomly cant get the url.

Original code:

import csv
import time
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# Start a timer to measure script execution time
start_time = time.time()

# Selenium setup
options = Options()
options.add_argument('--headless')
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option("useAutomationExtension", False)
driver = webdriver.Chrome(options=options)
print("Opening the page...")
driver.get('https://etalongroup.ru/choose/?group=false&object%5B%5D=15')
print("The page is opened.")

# Close the cookie notification window before scrolling
try:
    cookie_button = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.XPATH, "//span[text()='Понятно']"))
    )
    if cookie_button:
        print("Cookies button found, clicking to accept.")
        ActionChains(driver).move_to_element(cookie_button).click(cookie_button).perform()
        print("Cookies button clicked. Cookies window closed.")
except Exception as e:
    print("Cookies button not found or already accepted.")

# Expand all items by clicking "Show more" button while it is available
while True:
    try:
        # Scroll the page to ensure the button becomes visible (due to identical button classes)
        driver.execute_script("window.scrollBy(0, document.body.scrollHeight * 0.7);")
        load_more_button = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.CLASS_NAME, "u-btn--density-default"))
        )
        if load_more_button:
            print("Button found!")
            ActionChains(driver).move_to_element(load_more_button).click(load_more_button).perform()
            print("Clicked the 'Show more' button.")
        else:
            print("Button not found.")
        time.sleep(2)
    except Exception as e:
        print("All items loaded or button is no longer available.")
        break

# Log parsing status
print("Parsing Data...")

# Parse the items
container = driver.page_source
driver.quit()
soup = BeautifulSoup(container, 'html.parser')
apartments = []
result_container = soup.find_all('div', class_="bg-white relative")

for result in result_container:
    link_tag = result.find('a', href=True)
    if link_tag:
        link = f"https://etalongroup.ru{link_tag['href']}"
        price_tag = result.find('span', class_="th-h2")
        price = price_tag.text.strip() if price_tag else "No price"
        title_tag = result.find('span', class_="th-h4")
        title = title_tag.text.strip() if title_tag else "No title"

        # Initialize variables
        area = "No area"
        floor = "No floor"
        completion_year = "No completion year"
        discount = "No discount"
        plan_url = "No plan URL"

        # Extract area, floor, and other details
        th_b1_tags = result.find_all('span', class_="th-b1-regular")
        for tag in th_b1_tags:
            text = tag.text.strip()
            if "м²" in text and "|" in text:
                area, floor = text.split(" | ")
            elif "м²" in text:
                area = text
            elif "этаж" in text:
                floor = text
            elif "квартал" in text or "год" in text:
                completion_year = text
            elif "%" in text:
                discount = text

        # Enhanced image extraction logic
        plan_img_tag = result.find('img', class_="v-img__img v-img__img--contain")
        if plan_img_tag and 'src' in plan_img_tag.attrs:
            plan_url = plan_img_tag['src']
            if plan_url.startswith('/'):  # Add base URL for relative paths
                plan_url = f"https://etalongroup.ru{plan_url}"
        else:
            # Log cases where images are not found
            print(f"No images found for apartment: {title}")

        # Create an apartment object
        apartment = {
            "link": link,
            "price": price,
            "title": title,
            "area": area,
            "floor": floor,
            "completion_year": completion_year.strip(),
            "discount": discount,
            "plan_url": plan_url
        }
        apartments.append(apartment)

# Print results
for apartment in apartments:
    print(f"Title: {apartment['title']}, Price: {apartment['price']}, Area: {apartment['area']}, Floor: {apartment['floor']}, Completion Year: {apartment['completion_year']}, Discount: {apartment['discount']}, Link: {apartment['link']}, Plan URL: {apartment['plan_url']}")

# Log parsing completion
print(f"Parsing Successful. Objects Found: {len(apartments)}")

# End the timer and display the elapsed time
end_time = time.time()
elapsed_time = end_time - start_time
print(f"Script completed in {elapsed_time:.2f} seconds.")

response:

Title: Студия № 52, Price: 18,841,923  ₽, Area: 22.9 м², Floor: 5 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/92454/, Plan URL: https://etalongroup.ru/upload/kelnik.estateimport/547/npg8ca9zcj9i9e5ys1dg1vfgwcxsk14d.png
Title: Студия № 197, Price: 20,828,676  ₽, Area: 26 м², Floor: 16 этаж, Completion Year: IV квартал 2025, Discount: -10%, Link: https://etalongroup.ru/msk/choose/92334/, Plan URL: https://etalongroup.ru/upload/kelnik.estateimport/5f9/2eisn6ex7qohqy5l9fe0kxfc5rbm929f.png
Title: Студия № 37, Price: 21,038,163  ₽, Area: 25.4 м², Floor: 4 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/92437/, Plan URL: https://etalongroup.ru/upload/kelnik.estateimport/d48/ex5mtrp7zu6td23n2xzvt7m9lz8gy4c9.png
Title: Студия № 83, Price: 21,165,312  ₽, Area: 25.7 м², Floor: 7 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/92488/, Plan URL: No plan URL
Title: Студия № 79, Price: 21,249,472  ₽, Area: 25.7 м², Floor: 7 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/92483/, Plan URL: No plan URL
Title: Студия № 51, Price: 21,310,529  ₽, Area: 25.7 м², Floor: 5 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/92453/, Plan URL: https://etalongroup.ru/upload/kelnik.estateimport/c2f/wfqpaw6e34fbpf95f3crhxyf9sx2lgve.png
Title: Студия № 72, Price: 21,336,430  ₽, Area: 26 м², Floor: 7 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/92476/, Plan URL: https://etalongroup.ru/upload/kelnik.estateimport/a6a/djg942hozo7e8817mp7fhei7534iau6b.png
Title: Студия № 125, Price: 22,164,273  ₽, Area: 25.8 м², Floor: 10 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/92255/, Plan URL: https://etalongroup.ru/upload/kelnik.estateimport/c5c/xd40urbnx4q3h7x96wbmoyr5sgkaofv0.png
Title: Однокомнатная № 1, Price: 30,288,073  ₽, Area: 48.1 м², Floor: 2 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/92226/, Plan URL: No plan URL
Title: Однокомнатная № 143, Price: 30,554,232  ₽, Area: 43.2 м², Floor: 12 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/92275/, Plan URL: No plan URL
Title: Однокомнатная № 169, Price: 30,639,565  ₽, Area: 41.2 м², Floor: 14 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/92303/, Plan URL: No plan URL
Title: Однокомнатная № 29, Price: 30,929,533  ₽, Area: 48.5 м², Floor: 4 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/92428/, Plan URL: No plan URL
Title: Однокомнатная № 173, Price: 31,080,528  ₽, Area: 42.2 м², Floor: 15 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/55867/, Plan URL: No plan URL
Title: Однокомнатная № 175, Price: 31,202,014  ₽, Area: 43.2 м², Floor: 15 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/116691/, Plan URL: No plan URL
Title: Однокомнатная № 187, Price: 31,894,436  ₽, Area: 43.2 м², Floor: 16 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/116674/, Plan URL: https://etalongroup.ru/upload/kelnik.estateimport/73a/l9uommdkb2q9b92wpfan5xivgelbl1bs.png
Title: Однокомнатная № 116, Price: 32,106,709  ₽, Area: 42.6 м², Floor: 10 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/92245/, Plan URL: https://etalongroup.ru/upload/kelnik.estateimport/433/rc7v1kulpmt60bidtvmyen87tjx2xhsy.png
Title: Однокомнатная № 189, Price: 34,522,490  ₽, Area: 42.8 м², Floor: 16 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/92325/, Plan URL: https://etalongroup.ru/upload/kelnik.estateimport/86e/khxfs97t4bnhkuxou75u4c4cn2x732wm.png
Title: Двухкомнатная № 174, Price: 35,075,746  ₽, Area: 65.4 м², Floor: 15 этаж, Completion Year: IV квартал 2025, Discount: -15%, Link: https://etalongroup.ru/msk/choose/116683/, Plan URL: No plan URL
Title: Двухкомнатная № 91, Price: 37,359,364  ₽, Area: 65 м², Floor: 8 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/92497/, Plan URL: No plan URL
Title: Двухкомнатная № 75, Price: 37,409,172  ₽, Area: 65 м², Floor: 7 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/92479/, Plan URL: No plan URL
Title: Двухкомнатная № 119, Price: 38,950,261  ₽, Area: 65 м², Floor: 10 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/92248/, Plan URL: No plan URL
Title: Двухкомнатная № 40, Price: 38,993,830  ₽, Area: 59.7 м², Floor: 4 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/92441/, Plan URL: No plan URL
Title: Двухкомнатная № 54, Price: 39,106,967  ₽, Area: 59.8 м², Floor: 5 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/92456/, Plan URL: No plan URL
Title: Двухкомнатная № 150, Price: 39,591,760  ₽, Area: 65.3 м², Floor: 13 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/55824/, Plan URL: https://etalongroup.ru/upload/kelnik.estateimport/e99/6b2hl6zlln92dvicwudg94em649aqgwc.png
Title: Двухкомнатная № 142, Price: 39,650,388  ₽, Area: 64.9 м², Floor: 12 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/92274/, Plan URL: https://etalongroup.ru/upload/kelnik.estateimport/3e5/l1x4nr2dz5wrxlry54mdr9cf8f0wuvsd.png
Title: Двухкомнатная № 96, Price: 39,978,692  ₽, Area: 59.7 м², Floor: 8 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/92502/, Plan URL: https://etalongroup.ru/upload/kelnik.estateimport/360/q9t74vlw8270t644mdxowgdihytuetmn.png
Title: Двухкомнатная № 162, Price: 40,175,491  ₽, Area: 65.2 м², Floor: 14 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/116692/, Plan URL: No plan URL
Title: Двухкомнатная № 184, Price: 42,094,393  ₽, Area: 59.7 м², Floor: 15 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/92320/, Plan URL: No plan URL
Title: Двухкомнатная № 172, Price: 42,106,759  ₽, Area: 59.8 м², Floor: 14 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/116693/, Plan URL: No plan URL
Title: Двухкомнатная № 3, Price: 42,302,435  ₽, Area: 59 м², Floor: 2 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/92429/, Plan URL: No plan URL
Title: Двухкомнатная № 115, Price: 45,519,502  ₽, Area: 60.1 м², Floor: 10 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/92244/, Plan URL: No plan URL
Title: Двухкомнатная № 198, Price: 45,614,151  ₽, Area: 64.9 м², Floor: 17 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/55932/, Plan URL: No plan URL
Title: Двухкомнатная № 74, Price: 47,168,937  ₽, Area: 70.9 м², Floor: 2 этаж, Completion Year: IV квартал 2025, Discount: -10%, Link: https://etalongroup.ru/msk/choose/55706/, Plan URL: https://etalongroup.ru/upload/kelnik.estateimport/9a2/a9hcjqftitm6qtr7f4oxj29lwg7hl748.png
Title: Двухкомнатная № 67, Price: 47,711,080  ₽, Area: 72 м², Floor: 7 этаж, Completion Year: IV квартал 2025, Discount: -10%, Link: https://etalongroup.ru/msk/choose/55626/, Plan URL: https://etalongroup.ru/upload/kelnik.estateimport/496/5hofzsddf594h267g2wyu4fyfnx0nawi.png
Title: Двухкомнатная № 30, Price: 49,575,956  ₽, Area: 71.6 м², Floor: 2 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/55592/, Plan URL: https://etalongroup.ru/upload/kelnik.estateimport/8a4/rrbw95phaqnn81xqq6hrizejppfezduo.png
Title: Двухкомнатная № 124, Price: 50,729,160  ₽, Area: 79.5 м², Floor: 2 этаж, Completion Year: IV квартал 2025, Discount: -10%, Link: https://etalongroup.ru/msk/choose/55749/, Plan URL: No plan URL
Title: Двухкомнатная № 109, Price: 51,314,432  ₽, Area: 68.6 м², Floor: 10 этаж, Completion Year: IV квартал 2025, Discount: -12%, Link: https://etalongroup.ru/msk/choose/55765/, Plan URL: No plan URL
Title: Двухкомнатная № 150, Price: 52,107,552  ₽, Area: 75.6 м², Floor: 2 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/55605/, Plan URL: No plan URL
Title: Однокомнатная № 197, Price: 52,310,258  ₽, Area: 53.8 м², Floor: 10 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/116611/, Plan URL: No plan URL
Title: Двухкомнатная № 119, Price: 52,437,683  ₽, Area: 66.5 м², Floor: 2 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/55722/, Plan URL: No plan URL
Title: Двухкомнатная № 148, Price: 53,305,893  ₽, Area: 79.5 м², Floor: 6 этаж, Completion Year: IV квартал 2025, Discount: -10%, Link: https://etalongroup.ru/msk/choose/55752/, Plan URL: No plan URL
Title: Трехкомнатная № 154, Price: 53,594,147  ₽, Area: 81.8 м², Floor: 3 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/55648/, Plan URL: https://etalongroup.ru/upload/kelnik.estateimport/1ef/bpu46gjolpb36w4qrxxxcxa1wmggy5ur.png
Title: Двухкомнатная № 13, Price: 54,441,550  ₽, Area: 70.5 м², Floor: 4 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/55654/, Plan URL: https://etalongroup.ru/upload/kelnik.estateimport/0f5/1ft6fi3zb12tekrpoh64cuebp12hrynu.png
Title: Трехкомнатная № 166, Price: 55,009,713  ₽, Area: 81.8 м², Floor: 5 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/55649/, Plan URL: https://etalongroup.ru/upload/kelnik.estateimport/1ef/bpu46gjolpb36w4qrxxxcxa1wmggy5ur.png
Title: Двухкомнатная № 129, Price: 55,018,839  ₽, Area: 71.3 м², Floor: 10 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/55522/, Plan URL: No plan URL
Title: Трехкомнатная № 24, Price: 55,199,868  ₽, Area: 81.9 м², Floor: 2 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/55586/, Plan URL: No plan URL
Title: Трехкомнатная № 214, Price: 55,376,398  ₽, Area: 82 м², Floor: 13 этаж, Completion Year: IV квартал 2025, Discount: -10%, Link: https://etalongroup.ru/msk/choose/115065/, Plan URL: No plan URL
Title: Двухкомнатная № 73, Price: 55,842,133  ₽, Area: 73 м², Floor: 2 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/55696/, Plan URL: No plan URL
Title: Трехкомнатная № 184, Price: 57,340,559  ₽, Area: 82.1 м², Floor: 8 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/55529/, Plan URL: No plan URL
Title: Двухкомнатная № 136, Price: 57,797,212  ₽, Area: 79.5 м², Floor: 4 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/55751/, Plan URL: No plan URL
Title: Четырехкомнатная № 45, Price: 58,912,079  ₽, Area: 86.3 м², Floor: 11 этаж, Completion Year: IV квартал 2025, Discount: -12%, Link: https://etalongroup.ru/msk/choose/55781/, Plan URL: https://etalongroup.ru/upload/kelnik.estateimport/f5f/xu9n2emxqxno9q0og0j6pnu4osozm0eg.png
Title: Трехкомнатная № 72, Price: 59,177,228  ₽, Area: 84.9 м², Floor: 2 этаж, Completion Year: IV квартал 2025, Discount: -8%, Link: https://etalongroup.ru/msk/choose/55685/, Plan URL: https://etalongroup.ru/upload/kelnik.estateimport/03c/quscxjl5w43q86cg1c1vi49zm6w7ffsd.png
Title: Трехкомнатная № 202, Price: 59,607,620  ₽, Area: 81.7 м², Floor: 11 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/55428/, Plan URL: https://etalongroup.ru/upload/kelnik.estateimport/96f/e283ht9kco0hwk3wlbdt96gpnkkewh0d.png
Title: Четырехкомнатная № 41, Price: 59,706,115  ₽, Area: 86.7 м², Floor: 10 этаж, Completion Year: IV квартал 2025, Discount: -10%, Link: https://etalongroup.ru/msk/choose/55779/, Plan URL: No plan URL
Title: Трехкомнатная № 1, Price: 60,298,162  ₽, Area: 83.6 м², Floor: 2 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/55579/, Plan URL: No plan URL
Title: Трехкомнатная № 24, Price: 64,525,573  ₽, Area: 95.7 м², Floor: 6 этаж, Completion Year: IV квартал 2025, Discount: -8%, Link: https://etalongroup.ru/msk/choose/55663/, Plan URL: No plan URL
Title: Трехкомнатная № 7, Price: 65,832,857  ₽, Area: 97 м², Floor: 3 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/55613/, Plan URL: No plan URL
Title: Трехкомнатная № 9, Price: 67,040,824  ₽, Area: 94.9 м², Floor: 3 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/55660/, Plan URL: No plan URL
Title: Четырехкомнатная № 53, Price: 68,764,646  ₽, Area: 86.4 м², Floor: 13 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/116662/, Plan URL: No plan URL
Title: Четырехкомнатная № 57, Price: 76,012,552  ₽, Area: 92.2 м², Floor: 14 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/55783/, Plan URL: https://etalongroup.ru/upload/kelnik.estateimport/fd0/icc89lhk154wf32jcm4mcna3ltqsk91t.png
Title: Трехкомнатная № 42, Price: 76,147,802  ₽, Area: 95.8 м², Floor: 10 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/55669/, Plan URL: https://etalongroup.ru/upload/kelnik.estateimport/300/weqi2yz6mv0d7rijjur50sq8j16kynfj.png
Title: Трехкомнатная № 56, Price: 76,184,438  ₽, Area: 96.1 м², Floor: 14 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/55777/, Plan URL: https://etalongroup.ru/upload/kelnik.estateimport/919/4cne8ahji7f6eq0qzd534zej6igh1wam.png
Title: Трехкомнатная № 226, Price: 81,885,507  ₽, Area: 103.7 м², Floor: 15 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/55450/, Plan URL: No plan URL
Title: Трехкомнатная № 43, Price: 82,181,163  ₽, Area: 125.3 м², Floor: 4 этаж, Completion Year: IV квартал 2025, Discount: -7%, Link: https://etalongroup.ru/msk/choose/55494/, Plan URL: No plan URL
Title: Трехкомнатная № 25, Price: 83,870,740  ₽, Area: 121.9 м², Floor: 2 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/55587/, Plan URL: No plan URL
Title: Трехкомнатная № 34, Price: 85,480,122  ₽, Area: 122.7 м², Floor: 3 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/55619/, Plan URL: No plan URL
Title: Трехкомнатная № 233, Price: 89,830,407  ₽, Area: 120.6 м², Floor: 16 этаж, Completion Year: IV квартал 2025, Discount: -10%, Link: https://etalongroup.ru/msk/choose/55456/, Plan URL: No plan URL
Title: Четырехкомнатная № 63, Price: 92,810,712  ₽, Area: 97.1 м², Floor: 7 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/55404/, Plan URL: No plan URL
Title: Четырехкомнатная № 66, Price: 93,724,540  ₽, Area: 114.6 м², Floor: 16 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/55789/, Plan URL: https://etalongroup.ru/upload/kelnik.estateimport/f84/xg0ie4d9x62v6jh222u6x99l8b2eqa1d.png
Title: Четырехкомнатная № 73, Price: 101,192,438  ₽, Area: 110.3 м², Floor: 9 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/55412/, Plan URL: https://etalongroup.ru/upload/kelnik.estateimport/05a/zgkuqmvsbfdh6uphwsv6655csl3cf2mo.png
Title: Пятикомнатная № 113, Price: 112,640,802  ₽, Area: 134.7 м², Floor: 11 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/55767/, Plan URL: https://etalongroup.ru/upload/kelnik.estateimport/8bd/ahm4ahql48kfcu4qt4nuuh0241t9pore.png
Title: Пятикомнатная № 21, Price: 118,602,281  ₽, Area: 138.6 м², Floor: 6 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/55576/, Plan URL: https://etalongroup.ru/upload/kelnik.estateimport/ec2/dq4n5z641jhi855vnjnhf7tnobngpz75.png
Title: Однокомнатная № 104, Price: 30,005,235  ₽, Area: 43.1 м², Floor: 9 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/92232/, Plan URL: https://etalongroup.ru/upload/kelnik.estateimport/ab8/07y70i3u4f1xlnzp841zqlef8wyf36w6.png
Title: Двухкомнатная № 74, Price: 54,403,479  ₽, Area: 72 м², Floor: 9 этаж, Completion Year: IV квартал 2025, Discount: No discount, Link: https://etalongroup.ru/msk/choose/55627/, Plan URL: https://etalongroup.ru/upload/kelnik.estateimport/7ce/wl2wljst75f8w2e11lzofpg80954m4kj.png

However if we look at html of the "troublesome" flats and correct ones i dont see any difference:

CORRECT (the 1st one in response)

<div class="bg-white relative">
    <a href="/msk/choose/92454/">
        <div class="flex flex-row gap-2 p-8">
            <div class="u-badge">
                <div class="u-badge__wrapper u-badge__wrapper--inline">
                    <div class="u-badge__badge u-badge__badge--variant-secondary-light  u-badge__badge--inline">
                        <div class="u-badge__content">
                            <span class="th-b1-regular">IV квартал 2025</span>
                        </div>
                    </div>
                </div>
            </div>
            <!---->
        </div>
        <div class="p-4 h-[300px]">
            <div class="relative h-full">
                <!---->
                <div class="v-responsive v-img object-cover absolute top-0 left-0 h-full w-full">
                    <div class="v-responsive__sizer" style="padding-bottom: 100%;"></div>
                    <img class="v-img__img v-img__img--contain" src="/upload/kelnik.estateimport/547/npg8ca9zcj9i9e5ys1dg1vfgwcxsk14d.png" style="">
                    <!----><!----><!----><!----><!---->
                </div>
            </div>
        </div>
        <div class="flex flex-col justify-end gap-4 p-8 min-h-[210px] text-liver">
            <section class="flex flex-col gap-2">
                <!---->
                <div class="flex flex-row gap-2 flex-wrap items-center">
                    <span class="th-h2">18,841,923  ₽ </span>
                    <!---->
                </div>
            </section>
            <section class="flex flex-col gap-2">
                <span class="th-h4">Студия № 52</span>
                <span class="th-b1-regular">22.9 м² | 5 этаж</span>
            </section>
        </div>
    </a>
</div>

INCORRECT (THE 4th in response)

<div class="bg-white relative">
    <a href="/msk/choose/92488/">
        <div class="flex flex-row gap-2 p-8">
            <div class="u-badge">
                <div class="u-badge__wrapper u-badge__wrapper--inline">
                    <div class="u-badge__badge u-badge__badge--variant-secondary-light  u-badge__badge--inline">
                        <div class="u-badge__content">
                            <span class="th-b1-regular">IV квартал 2025</span>
                        </div>
                    </div>
                </div>
            </div>
            <!---->
        </div>
        <div class="p-4 h-[300px]">
            <div class="relative h-full">
                <!---->
                <div class="v-responsive v-img object-cover absolute top-0 left-0 h-full w-full">
                    <div class="v-responsive__sizer" style="padding-bottom: 100%;"></div>
                    <img class="v-img__img v-img__img--contain" src="/upload/kelnik.estateimport/ae3/nj8vtvocgtd34alrohnucf3pgs1031af.png" style="">
                    <!----><!----><!----><!----><!---->
                </div>
            </div>
        </div>
        <div class="flex flex-col justify-end gap-4 p-8 min-h-[210px] text-liver">
            <section class="flex flex-col gap-2">
                <!---->
                <div class="flex flex-row gap-2 flex-wrap items-center">
                    <span class="th-h2">21,165,312  ₽ </span>
                    <!---->
                </div>
            </section>
            <section class="flex flex-col gap-2">
                <span class="th-h4">Студия № 83</span>
                <span class="th-b1-regular">25.7 м² | 7 этаж</span>
            </section>
        </div>
    </a>
</div>

Ive also made a little debug file to check if it is possible to grab an img url from the HTML code directly and it worked:

from bs4 import BeautifulSoup

# Your HTML container
html_content = '''
<div class="bg-white relative"><a href="/msk/choose/92488/"><div class="flex flex-row gap-2 p-8"><div class="u-badge"><div class="u-badge__wrapper u-badge__wrapper--inline"><div class="u-badge__badge u-badge__badge--variant-secondary-light  u-badge__badge--inline"><div class="u-badge__content"><span class="th-b1-regular">IV квартал 2025</span></div></div></div></div><!----></div><div class="p-4 h-[300px]"><div class="relative h-full"><!----><div class="v-responsive v-img object-cover absolute top-0 left-0 h-full w-full"><div class="v-responsive__sizer" style="padding-bottom: 100%;"></div><img class="v-img__img v-img__img--contain" src="/upload/kelnik.estateimport/ae3/nj8vtvocgtd34alrohnucf3pgs1031af.png" style=""><!----><!----><!----><!----><!----></div></div></div><div class="flex flex-col justify-end gap-4 p-8 min-h-[210px] text-liver"><section class="flex flex-col gap-2"><!----><div class="flex flex-row gap-2 flex-wrap items-center"><span class="th-h2">21,165,312  ₽ </span><!----></div></section><section class="flex flex-col gap-2"><span class="th-h4">Студия № 83</span><span class="th-b1-regular">25.7 м² | 7 этаж</span></section></div></a></div>
'''

# Create a BeautifulSoup object
soup = BeautifulSoup(html_content, 'html.parser')

# Find the container with apartment information
container = soup.find('div', class_="bg-white relative")

# Extract data
if container:
    # Extract the link to the apartment page
    link_tag = container.find('a', href=True)
    link = f"https://etalongroup.ru{link_tag['href']}" if link_tag else "No link"

    # Extract the price
    price_tag = container.find('span', class_="th-h2")
    price = price_tag.text.strip() if price_tag else "No price"

    # Extract the title
    title_tag = container.find('span', class_="th-h4")
    title = title_tag.text.strip() if title_tag else "No title"

    # Extract the area and floor
    details_tag = container.find('span', class_="th-b1-regular")
    area, floor = ("No area", "No floor")
    if details_tag and "|" in details_tag.text:
        area, floor = details_tag.text.strip().split(" | ")

    # Extract the floor plan image URL
    img_tag = container.find('img', class_="v-img__img v-img__img--contain")
    plan_url = f"https://etalongroup.ru{img_tag['src']}" if img_tag and 'src' in img_tag.attrs else "No plan URL"

    # Output the results
    print(f"Title: {title}")
    print(f"Price: {price}")
    print(f"Area: {area}")
    print(f"Floor: {floor}")
    print(f"Link: {link}")
    print(f"Plan URL: {plan_url}")
else:
    print("Container not found")

Response:

Title: Студия № 83
Price: 21,165,312  ₽
Area: No area
Floor: No floor
Link: https://etalongroup.ru/msk/choose/92488/
Plan URL: https://etalongroup.ru/upload/kelnik.estateimport/ae3/nj8vtvocgtd34alrohnucf3pgs1031af.png

Any help with locating the issue will be greatly appreciated!


Solution

  • here's a solution without selenium

    import requests
    import pandas as pd
    
    
    def get_data(action: str, max_offset, limit: int = 9) -> list:
        url = f"https://etalongroup.ru/bitrix/services/main/ajax.php?action={action}"
        result = []
        offset = 0
        while offset < max_offset:
            payload = {
                'filter[object]': '15',
                'haveItem': 'true',
                'limit': limit,
                'offset': offset
            }
            response = requests.post(url, data=payload)
            if response.json()['data'][0]['itemList']:
                for _ in response.json()['data'][0]['itemList']:
                    result.append(_)
                offset += limit
            else:
                break
        return result
    
    
    df = pd.DataFrame(get_data(action='etalongroup:filter.FlatFilter.getFlatList', max_offset=50))
    print(df.to_string(index=False))
    

    OUTPUT:

        id                                                                  img    price  priceTotal  area  floor                 title                link    deliveryName  isBooked
     92454 /upload/kelnik.estateimport/547/npg8ca9zcj9i9e5ys1dg1vfgwcxsk14d.png 18841923    18841923  22.9      5           Студия № 52  /msk/choose/92454/ IV квартал 2025     False
     92334 /upload/kelnik.estateimport/5f9/2eisn6ex7qohqy5l9fe0kxfc5rbm929f.png 23142973    20828676  26.0     16          Студия № 197  /msk/choose/92334/ IV квартал 2025     False
     92437 /upload/kelnik.estateimport/d48/ex5mtrp7zu6td23n2xzvt7m9lz8gy4c9.png 21038163    21038163  25.4      4           Студия № 37  /msk/choose/92437/ IV квартал 2025     False
     92488 /upload/kelnik.estateimport/ae3/nj8vtvocgtd34alrohnucf3pgs1031af.png 21165312    21165312  25.7      7           Студия № 83  /msk/choose/92488/ IV квартал 2025     False
     92483 /upload/kelnik.estateimport/c07/bhe2xy0lsaow5wzesh8bp1wc3tg9dfl7.png 21249472    21249472  25.7      7           Студия № 79  /msk/choose/92483/ IV квартал 2025     False
     92453 /upload/kelnik.estateimport/c2f/wfqpaw6e34fbpf95f3crhxyf9sx2lgve.png 21310529    21310529  25.7      5           Студия № 51  /msk/choose/92453/ IV квартал 2025     False
     92476 /upload/kelnik.estateimport/a6a/djg942hozo7e8817mp7fhei7534iau6b.png 21336430    21336430  26.0      7           Студия № 72  /msk/choose/92476/ IV квартал 2025     False
     92255 /upload/kelnik.estateimport/c5c/xd40urbnx4q3h7x96wbmoyr5sgkaofv0.png 22164273    22164273  25.8     10          Студия № 125  /msk/choose/92255/ IV квартал 2025     False
     92226 /upload/kelnik.estateimport/611/7o4h5uji6nxgr215by0eba2m3kb828r9.png 30288073    30288073  48.1      2     Однокомнатная № 1  /msk/choose/92226/ IV квартал 2025     False
     92275 /upload/kelnik.estateimport/db1/qdmzqzh2bwst9u05zmqyl2t6uwmlslyt.png 30554232    30554232  43.2     12   Однокомнатная № 143  /msk/choose/92275/ IV квартал 2025     False
     92303 /upload/kelnik.estateimport/535/6jhq3310fgaav3fl6phg9939o0nuvdgm.png 30639565    30639565  41.2     14   Однокомнатная № 169  /msk/choose/92303/ IV квартал 2025     False
     92428 /upload/kelnik.estateimport/711/wyoey8gbxcouio0n9dxafaygv76ilid5.png 30929533    30929533  48.5      4    Однокомнатная № 29  /msk/choose/92428/ IV квартал 2025     False
     55867 /upload/kelnik.estateimport/dc8/5hu74z4foch79rzjn2dkghbh4soocosy.png 31080528    31080528  42.2     15   Однокомнатная № 173  /msk/choose/55867/ IV квартал 2025     False
    116691 /upload/kelnik.estateimport/519/vjvyxa2ns9w5joj1xp92e8k1o07w1664.png 31202014    31202014  43.2     15   Однокомнатная № 175 /msk/choose/116691/ IV квартал 2025     False
    116674 /upload/kelnik.estateimport/73a/l9uommdkb2q9b92wpfan5xivgelbl1bs.png 31894436    31894436  43.2     16   Однокомнатная № 187 /msk/choose/116674/ IV квартал 2025     False
     92245 /upload/kelnik.estateimport/433/rc7v1kulpmt60bidtvmyen87tjx2xhsy.png 32106709    32106709  42.6     10   Однокомнатная № 116  /msk/choose/92245/ IV квартал 2025     False
     92325 /upload/kelnik.estateimport/86e/khxfs97t4bnhkuxou75u4c4cn2x732wm.png 34522490    34522490  42.8     16   Однокомнатная № 189  /msk/choose/92325/ IV квартал 2025     False
    116683 /upload/kelnik.estateimport/856/q7gl4c8xazcf31z345vkccjuw2j01zrq.png 41265583    35075746  65.4     15   Двухкомнатная № 174 /msk/choose/116683/ IV квартал 2025     False
     92497 /upload/kelnik.estateimport/2e3/vjjnyg75d75viwcnii9jj0ex7a1e0e1n.png 37359364    37359364  65.0      8    Двухкомнатная № 91  /msk/choose/92497/ IV квартал 2025     False
     92479 /upload/kelnik.estateimport/225/i7ui4dyin61lrslybj1zr8jujg0cejn3.png 37409172    37409172  65.0      7    Двухкомнатная № 75  /msk/choose/92479/ IV квартал 2025     False
     92248 /upload/kelnik.estateimport/784/p14nbo1adwqtycic2azz3lrd7zrrv2em.png 38950261    38950261  65.0     10   Двухкомнатная № 119  /msk/choose/92248/ IV квартал 2025     False
     92441 /upload/kelnik.estateimport/bdd/pgt51ucb4nifv3zlab3iodfmua26cb4w.png 38993830    38993830  59.7      4    Двухкомнатная № 40  /msk/choose/92441/ IV квартал 2025     False
     92456 /upload/kelnik.estateimport/536/yz0qdxmdta513uy1w8vohr93oauwnz8m.png 39106967    39106967  59.8      5    Двухкомнатная № 54  /msk/choose/92456/ IV квартал 2025     False
     55824 /upload/kelnik.estateimport/e99/6b2hl6zlln92dvicwudg94em649aqgwc.png 39591760    39591760  65.3     13   Двухкомнатная № 150  /msk/choose/55824/ IV квартал 2025     False
     92274 /upload/kelnik.estateimport/3e5/l1x4nr2dz5wrxlry54mdr9cf8f0wuvsd.png 39650388    39650388  64.9     12   Двухкомнатная № 142  /msk/choose/92274/ IV квартал 2025     False
     92502 /upload/kelnik.estateimport/360/q9t74vlw8270t644mdxowgdihytuetmn.png 39978692    39978692  59.7      8    Двухкомнатная № 96  /msk/choose/92502/ IV квартал 2025     False
    116692 /upload/kelnik.estateimport/203/p8l90jszg34mlv200gvpwzlmsxihr0wx.png 40175491    40175491  65.2     14   Двухкомнатная № 162 /msk/choose/116692/ IV квартал 2025     False
     92320 /upload/kelnik.estateimport/9a5/fli23w2upxz0vfwdbhp2xka07gcv3viy.png 42094393    42094393  59.7     15   Двухкомнатная № 184  /msk/choose/92320/ IV квартал 2025     False
    116693                                   /images/parametric/noFlatImage.png 42106759    42106759  59.8     14   Двухкомнатная № 172 /msk/choose/116693/ IV квартал 2025     False
     92429 /upload/kelnik.estateimport/47c/74r5bf9539606qerh0cbdw8mfc7jguuu.png 42302435    42302435  59.0      2     Двухкомнатная № 3  /msk/choose/92429/ IV квартал 2025     False
     92244 /upload/kelnik.estateimport/640/pvstogfvb2sxs1wgd0k430uw83iv89e5.png 45519502    45519502  60.1     10   Двухкомнатная № 115  /msk/choose/92244/ IV квартал 2025     False
     55932 /upload/kelnik.estateimport/d6a/nyycxf77eqaxlm51500e2d0eutakwf3t.png 45614151    45614151  64.9     17   Двухкомнатная № 198  /msk/choose/55932/ IV квартал 2025     False
     55706 /upload/kelnik.estateimport/9a2/a9hcjqftitm6qtr7f4oxj29lwg7hl748.png 52409930    47168937  70.9      2    Двухкомнатная № 74  /msk/choose/55706/ IV квартал 2025     False
     55626 /upload/kelnik.estateimport/496/5hofzsddf594h267g2wyu4fyfnx0nawi.png 53012311    47711080  72.0      7    Двухкомнатная № 67  /msk/choose/55626/ IV квартал 2025     False
     55592 /upload/kelnik.estateimport/8a4/rrbw95phaqnn81xqq6hrizejppfezduo.png 49575956    49575956  71.6      2    Двухкомнатная № 30  /msk/choose/55592/ IV квартал 2025     False
     55749 /upload/kelnik.estateimport/970/1sh6m4wycv6b20kgrjfjer0qhazxtna0.png 56365733    50729160  79.5      2   Двухкомнатная № 124  /msk/choose/55749/ IV квартал 2025     False
     55765 /upload/kelnik.estateimport/436/3ynlklmf8sf76uoinzen5wulx958xvkj.png 58311854    51314432  68.6     10   Двухкомнатная № 109  /msk/choose/55765/ IV квартал 2025     False
     55605 /upload/kelnik.estateimport/24d/ejqw1o0gv2o35kk6dkjn16nh0a3muynu.png 52107552    52107552  75.6      2   Двухкомнатная № 150  /msk/choose/55605/ IV квартал 2025     False
    116611                                   /images/parametric/noFlatImage.png 52310258    52310258  53.8     10   Однокомнатная № 197 /msk/choose/116611/ IV квартал 2025     False
     55722 /upload/kelnik.estateimport/972/pxmciumqrsnt9j6srt9g91q15kh5dq3l.png 52437683    52437683  66.5      2   Двухкомнатная № 119  /msk/choose/55722/ IV квартал 2025     False
     55752 /upload/kelnik.estateimport/476/x2pywvyv8g81ytaqwsfmtjo2x0bztrsi.png 59228770    53305893  79.5      6   Двухкомнатная № 148  /msk/choose/55752/ IV квартал 2025     False
     55648 /upload/kelnik.estateimport/1ef/bpu46gjolpb36w4qrxxxcxa1wmggy5ur.png 53594147    53594147  81.8      3   Трехкомнатная № 154  /msk/choose/55648/ IV квартал 2025     False
     55654 /upload/kelnik.estateimport/0f5/1ft6fi3zb12tekrpoh64cuebp12hrynu.png 54441550    54441550  70.5      4    Двухкомнатная № 13  /msk/choose/55654/ IV квартал 2025     False
     55649 /upload/kelnik.estateimport/1ef/bpu46gjolpb36w4qrxxxcxa1wmggy5ur.png 55009713    55009713  81.8      5   Трехкомнатная № 166  /msk/choose/55649/ IV квартал 2025     False
     55522 /upload/kelnik.estateimport/78e/syu7l56iaj1yw61q7ayzc6n1zipgmiyi.png 55018839    55018839  71.3     10   Двухкомнатная № 129  /msk/choose/55522/ IV квартал 2025     False
     55586 /upload/kelnik.estateimport/6cd/t2w66wlzl2hmdfdycb3qc0hl9vt68qb3.png 55199868    55199868  81.9      2    Трехкомнатная № 24  /msk/choose/55586/ IV квартал 2025     False
    115065                                   /images/parametric/noFlatImage.png 61529331    55376398  82.0     13   Трехкомнатная № 214 /msk/choose/115065/ IV квартал 2025     False
     55696 /upload/kelnik.estateimport/422/9sbk0s1p61o20ffka6xc3ts7a0l1h20y.png 55842133    55842133  73.0      2    Двухкомнатная № 73  /msk/choose/55696/ IV квартал 2025     False
     55529 /upload/kelnik.estateimport/45c/j4ucjbk5xu2exdy2izojx64z603ogmi6.png 57340559    57340559  82.1      8   Трехкомнатная № 184  /msk/choose/55529/ IV квартал 2025     False
     55751 /upload/kelnik.estateimport/377/jf85mi7mc6bdgr43i5cktmbps3t2cci9.png 57797212    57797212  79.5      4   Двухкомнатная № 136  /msk/choose/55751/ IV квартал 2025     False
     55781 /upload/kelnik.estateimport/f5f/xu9n2emxqxno9q0og0j6pnu4osozm0eg.png 66945544    58912079  86.3     11 Четырехкомнатная № 45  /msk/choose/55781/ IV квартал 2025     False
     55685 /upload/kelnik.estateimport/03c/quscxjl5w43q86cg1c1vi49zm6w7ffsd.png 64323074    59177228  84.9      2    Трехкомнатная № 72  /msk/choose/55685/ IV квартал 2025     False
     55428 /upload/kelnik.estateimport/96f/e283ht9kco0hwk3wlbdt96gpnkkewh0d.png 59607620    59607620  81.7     11   Трехкомнатная № 202  /msk/choose/55428/ IV квартал 2025     False
     55779 /upload/kelnik.estateimport/8fb/el91aji2n0zw1dvt0hmafie4t0emlplk.png 66340128    59706115  86.7     10 Четырехкомнатная № 41  /msk/choose/55779/ IV квартал 2025     False