# Wikipedia Car Spec Extraction Extracting vehicle specifications (horsepower, engine, drivetrain) from Wikipedia when web_search/web_extract tools are unavailable. ## URL Pattern Wikipedia car article URLs follow predictable patterns — no search needed: ``` https://en.wikipedia.org/wiki/{Make}_{Model} https://en.wikipedia.org/wiki/{Make}_{Model}_(Year) https://en.wikipedia.org/wiki/{Make}_{Generation_Code} ``` **Known patterns for current-gen hypercars (2024-2026):** - `Ferrari_12Cilindri` — 6.5L V12, 819 hp - `Ferrari_F80` — twin-turbo V6 PHEV, 1,184 hp - `Ferrari_12Cilindri_Spider` — same specs, convertible body - `Lamborghini_Temerario` — twin-turbo V8 PHEV, 907 hp - `Bugatti_Tourbillon` — V16 hybrid PHEV, ~1,800 hp - `Bugatti_Mistral` — quad-turbo W16, 1,600 hp - `McLaren_W1` — twin-turbo V8 PHEV, 1,258 hp - `Aston_Martin_Valhalla` — twin-turbo V8 PHEV, 1,079 hp - `Aston_Martin_Vanquish` — twin-turbo V12, 824 hp (2025+) - `Aston_Martin_Vanquish_(2025)` — separate page for the new gen - `Koenigsegg_Gemera` — 1,400 hp (3-cyl) / 2,300 hp (V8) - `Koenigsegg_Jesko` — twin-turbo V8, 1,603 hp - `Koenigsegg_Jesko_Absolut` — variant, redirects to main Jesko page - `Pagani_Utopia` — twin-turbo V12, 852 hp / 864 hp - `Lotus_Emeya` — dual-motor EV, 600 hp / 918 hp (R) - `Porsche_911_(992)` — entire 992 generation (use anchors like `#992.2`) - `BMW_M5_(G90)` — 2025+ M5 (page may be new, watch for missing infobox) - `Mercedes-AMG_GT_(C192)` — second-gen AMG GT - `Maserati_MC20` — includes MC20 Cielo specs (MC20_Cielo redirects here) ## Extraction Technique ### Step 1: Download the page ```bash curl -sL --max-time 20 -H "User-Agent: Mozilla/5.0" \ "https://en.wikipedia.org/wiki/Ferrari_12Cilindri" -o /tmp/car_page.html ``` ### Step 2a: Quick HP check via grep ```bash # Find all HP/PS/bhp numbers grep -oP '\d{3,4}\s*(hp|PS|bhp)' /tmp/car_page.html | head -10 ``` ### Step 2b: Find infobox and extract power specs ```bash # Find infobox table and grep power-related data grep -oP 'horsepower.*?(?=)' /tmp/car_page.html grep -oP '(?:Engine|Power|Layout).*?(?=)' /tmp/car_page.html ``` ### Step 2c: Extract full infobox as text The infobox has class `infobox hproduct`. Extract it with a Python script to remove HTML: ```python import re with open('/tmp/car_page.html') as f: html = f.read() m = re.search(r']*class="infobox[^"]*"[^>]*>.*?', html, re.DOTALL) if m: text = re.sub(r'<[^>]+>', '\n', m.group(0)) text = re.sub(r'\n+', '\n', text) text = re.sub(r' ', ' ', text) lines = [l.strip() for l in text.split('\n') if l.strip()] for l in lines: if any(k in l.lower() for k in ['hp', 'ps', 'kw', 'power', 'engine']): print(l) ``` ### Step 3: Context for specific models For the Porsche 992 page (single page covers the entire generation), search within: ```bash # Find power specs for specific 992.2 models grep -oP '.{0,100}541.{0,200}' /tmp/porsche_992_2.html | grep -i 'hp\|ps\|power\|hybrid\|gts' # 541 PS = 534 hp (992.2 Carrera GTS T-Hybrid) # 711 PS = 701 hp (992.2 Turbo S) # 394 PS = 389 hp (992.2 Carrera) ``` ## Common Issues - **Redirect pages** (page load returns content from another page) — check `` tag to confirm - **Missing infobox** — some brand-new pages haven't been fully templated yet (BMW M5 G90 as of Jul 2026) - **PS vs hp** — Wikipedia often shows PS (metric horsepower) first. Convert: 1 PS ≈ 0.986 hp - **Combined vs individual** — Hybrid cars show engine-only + motor-only + combined. Look for "combined" keyword on PHEVs - **Multiple variants** — If a page covers multiple trims (e.g. Emeya 600 hp base / 918 hp R), power may appear multiple times. Verify which trim each spec belongs to ## Cross-Reference Against Local Database When adding to a JSON vehicle database like the portal mockup (`/root/portal-mockup/vehicles.json`): 1. **Load the existing database** — read the full JSON to know what's already covered 2. **Check each found model** against the JSON keys (Make → Model → Year) 3. **Apply the new entry** only if it's truly missing — don't overwrite existing entries with the same year 4. **Add model year variants** — a car launched in 2025 should get entries for at least 2025, possibly 2026 if still in production **The database schema is:** `{ "Make": { "Model": { "Year": HP, ... }, ... }, ... }` Example add: ```json "Ferrari": { ...existing entries..., "12Cilindri": {"2025": 819} } ``` ## Sources Wikipedia infoboxes are sourced from manufacturer press releases and are generally accurate for official HP figures. For track-oriented cars (GT3 RS, GT2 RS, STO, etc.), HP may differ from track-ready numbers if the manufacturer under-rates them — note this uncertainty rather than fabricating.