[ka2] fix connecteur vendre_ag_ca: le serveur renvoie HTTP 404 sur les sitemaps res/mpx/com/lnd tout en servant le XML complet — on tolère le statut d'erreur si le corps est un <urlset> valide (0 → 9441 fiches)
1 changed file +8 −0
modified
immoka/connectors/vendre_ca.py
+8 −0
@@ -23,6 +23,8 @@ import json | ||
| 23 | 23 | import os |
| 24 | 24 | import re |
| 25 | 25 | |
| 26 | +import requests | |
| 27 | + | |
| 26 | 28 | from .base import BaseConnector |
| 27 | 29 | from . import _detailutil as du |
| 28 | 30 | from ..normalize import normalize_property_type |
@@ -59,10 +61,16 @@ class VendreCaConnector(BaseConnector): | ||
| 59 | 61 | def fetch(self) -> list[PropertyListing]: |
| 60 | 62 | by_id: dict[str, PropertyListing] = {} |
| 61 | 63 | for sm in SITEMAPS: |
| 64 | + # depuis 2026-09 le serveur renvoie HTTP 404 sur les sitemaps tout | |
| 65 | + # en servant le XML complet — on garde le corps s'il est un urlset | |
| 62 | 66 | try: |
| 63 | 67 | xml = self.get(sm).text |
| 68 | + except requests.HTTPError as e: | |
| 69 | + xml = e.response.text if e.response is not None else "" | |
| 64 | 70 | except Exception: |
| 65 | 71 | continue |
| 72 | + if "<urlset" not in xml: | |
| 73 | + continue | |
| 66 | 74 | for url in _LOC_RE.findall(xml): |
| 67 | 75 | lst = self._to_listing(url) |
| 68 | 76 | if lst and lst.external_id not in by_id: |
| 69 | 77 | |