diff --git a/backend/services/scraper_backends/playwright_hotel_page.py b/backend/services/scraper_backends/playwright_hotel_page.py index 64276a4..0814299 100644 --- a/backend/services/scraper_backends/playwright_hotel_page.py +++ b/backend/services/scraper_backends/playwright_hotel_page.py @@ -73,10 +73,10 @@ _EXTRACT_RATES_JS = """ const cancelMatch = condCell.match(/free cancellation before ([\\w\\s]+)/i); const freeCancelText = cancelMatch ? cancelMatch[1].trim() : null; - // Persons: first ("Max persons: 2" or "Only for 1 guest") - const personsCell = cells.length >= 1 ? cells[0].innerText || '' : ''; - const personsMatch = personsCell.match(/\\d+/); - const maxPersons = personsMatch ? parseInt(personsMatch[0]) : null; + // Persons: extract from block_id format {room_id}_{rate_plan_id}_{persons}_{meal}_0 + // More reliable than cell text parsing which can pick up the price instead. + const blockParts = blockId.split('_'); + const maxPersons = blockParts.length >= 3 ? parseInt(blockParts[2]) : null; // Quantity dropdown: last has a