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!
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