add helper scripts
This commit is contained in:
46
scripts/probe_vehicle_page_shape.py
Normal file
46
scripts/probe_vehicle_page_shape.py
Normal file
@@ -0,0 +1,46 @@
|
||||
from playwright.sync_api import sync_playwright
|
||||
from dubizzle_scraper.scraper import DUBIZZLEScraper
|
||||
from dubizzle_scraper.parsing.parser import VehicleParser
|
||||
import json
|
||||
import re
|
||||
|
||||
url = 'https://www.dubizzle.com/VehicleDetail/45394480~US'
|
||||
out = {}
|
||||
with sync_playwright() as p:
|
||||
browser = p.chromium.launch(headless=True)
|
||||
page = browser.new_page()
|
||||
page.goto(url, wait_until='commit', timeout=60000)
|
||||
try:
|
||||
page.wait_for_load_state('domcontentloaded', timeout=5000)
|
||||
except Exception:
|
||||
pass
|
||||
try:
|
||||
page.wait_for_selector("#VehicleDetailViewModel, .veh-details, .vehicle-details, [data-uname='vehicleDetailPage']", timeout=1000)
|
||||
except Exception:
|
||||
pass
|
||||
html = page.content()
|
||||
try:
|
||||
dom_text = page.evaluate("() => document.body?.textContent || ''")
|
||||
except Exception:
|
||||
dom_text = ''
|
||||
title = page.title()
|
||||
js_data = {}
|
||||
try:
|
||||
js_data = page.evaluate(DUBIZZLEScraper._JS_EXTRACT) or {}
|
||||
except Exception:
|
||||
js_data = {'eval_error': True}
|
||||
hints = VehicleParser._dom_hints(dom_text)
|
||||
out = {
|
||||
'final_url': page.url,
|
||||
'title': title,
|
||||
'html_len': len(html),
|
||||
'dom_text_len': len(dom_text),
|
||||
'selector_present': any(token in html for token in ['VehicleDetailViewModel', 'veh-details', 'vehicle-details', 'vehicleDetailPage']),
|
||||
'js_ok': bool(js_data.get('ok')),
|
||||
'js_keys': sorted(list(js_data.keys()))[:20],
|
||||
'dom_hints': hints,
|
||||
'dom_text_preview': re.sub(r'\s+', ' ', dom_text)[:1500],
|
||||
'html_preview': re.sub(r'\s+', ' ', html)[:2000],
|
||||
}
|
||||
browser.close()
|
||||
print(json.dumps(out, ensure_ascii=False))
|
||||
Reference in New Issue
Block a user