feat: Agente-Marketing initial commit
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
import re, json, time
|
||||
from playwright.sync_api import sync_playwright
|
||||
|
||||
def test_zillow():
|
||||
print("=== Zillow con Playwright ===")
|
||||
with sync_playwright() as p:
|
||||
browser = p.chromium.launch(
|
||||
headless=True,
|
||||
args=["--disable-blink-features=AutomationControlled"]
|
||||
)
|
||||
ctx = browser.new_context(
|
||||
user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
|
||||
locale="en-US",
|
||||
viewport={"width": 1280, "height": 800},
|
||||
)
|
||||
ctx.add_init_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
|
||||
page = ctx.new_page()
|
||||
try:
|
||||
page.goto(
|
||||
"https://www.zillow.com/homes/for_sale/vero-beach-fl/",
|
||||
wait_until="load", timeout=45000
|
||||
)
|
||||
time.sleep(3)
|
||||
print("Title:", page.title()[:80])
|
||||
content = page.content()
|
||||
print("Page size:", len(content))
|
||||
cards = page.query_selector_all("[data-test='property-card']")
|
||||
print(f"Property cards: {len(cards)}")
|
||||
for card in cards[:3]:
|
||||
txt = card.inner_text()
|
||||
print(" ", txt[:150].replace('\n', ' | '))
|
||||
if not cards:
|
||||
prices = re.findall(r'"unformattedPrice":\s*(\d+)', content)
|
||||
print("Prices in HTML:", prices[:5])
|
||||
except Exception as e:
|
||||
print(f"ERROR: {e}")
|
||||
browser.close()
|
||||
|
||||
def test_realtor():
|
||||
print("\n=== Realtor.com con Playwright ===")
|
||||
with sync_playwright() as p:
|
||||
browser = p.chromium.launch(
|
||||
headless=True,
|
||||
args=["--disable-blink-features=AutomationControlled"]
|
||||
)
|
||||
ctx = browser.new_context(
|
||||
user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
|
||||
locale="en-US",
|
||||
)
|
||||
ctx.add_init_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
|
||||
page = ctx.new_page()
|
||||
try:
|
||||
page.goto(
|
||||
"https://www.realtor.com/realestateandhomes-search/Vero-Beach_FL/price-na-230000",
|
||||
wait_until="load", timeout=45000
|
||||
)
|
||||
time.sleep(3)
|
||||
print("Title:", page.title()[:80])
|
||||
cards = page.query_selector_all("[data-testid='property-card-content']")
|
||||
print(f"Cards (testid): {len(cards)}")
|
||||
if not cards:
|
||||
cards = page.query_selector_all(".jsx-1403264941, [class*='PropertyCard']")
|
||||
print(f"Cards (class): {len(cards)}")
|
||||
for card in cards[:3]:
|
||||
txt = card.inner_text()
|
||||
print(" ", txt[:150].replace('\n', ' | '))
|
||||
except Exception as e:
|
||||
print(f"ERROR: {e}")
|
||||
browser.close()
|
||||
|
||||
def test_new_construction():
|
||||
print("\n=== NewHomeSource (casas nuevas) ===")
|
||||
with sync_playwright() as p:
|
||||
browser = p.chromium.launch(headless=True)
|
||||
page = browser.new_page()
|
||||
try:
|
||||
page.goto(
|
||||
"https://www.newhomesource.com/homes-for-sale/fl/vero-beach?priceMax=230000",
|
||||
wait_until="load", timeout=30000
|
||||
)
|
||||
time.sleep(2)
|
||||
content = page.content()
|
||||
print("Title:", page.title()[:80])
|
||||
print("Size:", len(content))
|
||||
prices = re.findall(r'\$[\d,]+', content)
|
||||
print("Prices:", prices[:8])
|
||||
except Exception as e:
|
||||
print(f"ERROR: {e}")
|
||||
browser.close()
|
||||
|
||||
test_zillow()
|
||||
test_realtor()
|
||||
test_new_construction()
|
||||
Reference in New Issue
Block a user