Correctif mojibake descriptions moto : forcer UTF-8 sur les pages détail PowerGo
Les serveurs PowerGo n'envoient pas de charset ; requests retombait sur ISO-8859-1 (« Numéro » au lieu de « Numéro »). 119 fiches re-crawlées propres après purge du cache détail. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 changed file +13 −1
modified
autoka/connectors/moto_dealers.py
+13 −1
@@ -177,8 +177,20 @@ class PowerGoMotoConnector(BaseConnector): | ||
| 177 | 177 | str(item.get("label") or "")) |
| 178 | 178 | |
| 179 | 179 | # -- page détail -> JSON-LD -------------------------------------------------- |
| 180 | + def _get_utf8(self, url: str) -> str: | |
| 181 | + """GET dont le texte est décodé en UTF-8. | |
| 182 | + | |
| 183 | + Les serveurs PowerGo n'envoient pas de charset ; requests retombe | |
| 184 | + alors sur ISO-8859-1 et les accents deviennent du mojibake | |
| 185 | + (« Numéro » au lieu de « Numéro »). | |
| 186 | + """ | |
| 187 | + resp = self.get(url) | |
| 188 | + if not resp.encoding or resp.encoding.lower() in ("iso-8859-1", "latin-1"): | |
| 189 | + resp.encoding = "utf-8" | |
| 190 | + return resp.text | |
| 191 | + | |
| 180 | 192 | def _fetch_detail(self, url: str) -> dict: |
| 181 | − return _pg_extract_ld_vehicle(self.get(url).text) | |
| 193 | + return _pg_extract_ld_vehicle(self._get_utf8(url)) | |
| 182 | 194 | |
| 183 | 195 | # -- contrat ------------------------------------------------------------- |
| 184 | 196 | def fetch(self) -> list[Vehicle]: |
| 185 | 197 | |