Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 13 additions & 1 deletion src/gmaps_scraper/place_scraper.py
Original file line number Diff line number Diff line change
Expand Up @@ -4142,8 +4142,20 @@ def _parse_review_count(value: object) -> int | None:
suffix = match.group(2).upper()
if not suffix and re.fullmatch(r"\d{1,3}(?:[.,\s]\d{3})+", number_text):
return int(re.sub(r"[.,\s]", "", number_text))
cleaned = number_text.replace(" ", "")
if suffix and cleaned.count(",") == 1:
before, after = cleaned.split(",")
# A single comma with 1-2 trailing digits is a European decimal
# separator (e.g. "1,2K"); otherwise it is a grouping separator
# (e.g. "1,234K").
if 1 <= len(after) <= 2:
cleaned = before + "." + after
else:
cleaned = before + after
else:
cleaned = cleaned.replace(",", "")
try:
number = float(number_text.replace(",", "").replace(" ", ""))
number = float(cleaned)
except ValueError:
return None
multiplier = 1
Expand Down
5 changes: 5 additions & 0 deletions tests/test_place_scraper.py
Original file line number Diff line number Diff line change
Expand Up @@ -914,7 +914,12 @@ def test_parse_review_count_handles_suffixes(self) -> None:
self.assertEqual(_parse_review_count("1,296"), 1296)
self.assertEqual(_parse_review_count("1.296"), 1296)
self.assertEqual(_parse_review_count("3.6K"), 3600)
self.assertEqual(_parse_review_count("1.2K"), 1200)
self.assertEqual(_parse_review_count("1,2K"), 1200)
self.assertEqual(_parse_review_count("1,234"), 1234)
self.assertEqual(_parse_review_count("1,234K"), 1234000)
self.assertEqual(_parse_review_count("9.4万"), 94000)
self.assertEqual(_parse_review_count("1,2万"), 12000)

def test_extract_review_count_from_lines_prefers_place_panel_over_related_cards(
self,
Expand Down