Desktop version Jobs Stats

PROJECT (sourcing_v2)
SPIDER (auto_selling_leboncoin.fr)

2026-03-30 15:10:42 [scrapy.utils.log] INFO: Scrapy 2.11.2 started (bot: SourcingV2)
2026-03-30 15:10:42 [scrapy.utils.log] INFO: Versions: lxml 5.2.2.0, libxml2 2.12.6, cssselect 1.2.0, parsel 1.9.1, w3lib 2.1.2, Twisted 24.3.0, Python 3.11.2 (main, Mar 13 2023, 12:18:29) [GCC 12.2.0], pyOpenSSL 24.1.0 (OpenSSL 3.2.1 30 Jan 2024), cryptography 42.0.7, Platform Linux-5.15.0-1098-azure-x86_64-with-glibc2.36
2026-03-30 15:10:42 [auto_selling_leboncoin.fr] INFO: Starting auto_selling_leboncoin.fr spider
2026-03-30 15:10:42 [auto_selling_leboncoin.fr] INFO: _job: 4a8df3aa2c1f11f18e133aacc95538c6, SCRAPY_JOB: None
2026-03-30 15:10:42 [scrapy.addons] INFO: Enabled addons:
[]
2026-03-30 15:10:42 [asyncio] DEBUG: Using selector: EpollSelector
2026-03-30 15:10:42 [scrapy.utils.log] DEBUG: Using reactor: twisted.internet.asyncioreactor.AsyncioSelectorReactor
2026-03-30 15:10:42 [scrapy.utils.log] DEBUG: Using asyncio event loop: asyncio.unix_events._UnixSelectorEventLoop
2026-03-30 15:10:42 [scrapy.extensions.telnet] INFO: Telnet Password: 5e651f90d9609546
2026-03-30 15:10:42 [scrapy.middleware] INFO: Enabled extensions:
['scrapy.extensions.corestats.CoreStats',
 'scrapy.extensions.telnet.TelnetConsole',
 'scrapy.extensions.memusage.MemoryUsage',
 'scrapy.extensions.feedexport.FeedExporter',
 'scrapy.extensions.logstats.LogStats',
 'scrapy.extensions.closespider.CloseSpider']
2026-03-30 15:10:42 [scrapy.crawler] INFO: Overridden settings:
{'BOT_NAME': 'SourcingV2',
 'CLOSESPIDER_TIMEOUT': 3600,
 'CONCURRENT_REQUESTS': 5,
 'DOWNLOAD_MAXSIZE': 52428800,
 'DOWNLOAD_WARNSIZE': 10485760,
 'FEED_EXPORT_ENCODING': 'utf-8',
 'LOG_FILE': '/var/log/scrapyd/logs/sourcing_v2/auto_selling_leboncoin.fr/4a8df3aa2c1f11f18e133aacc95538c6.log',
 'LOG_FORMATTER': 'crawlers.log_formatter.SourcingLogFormatter',
 'MEMUSAGE_LIMIT_MB': 2048,
 'MEMUSAGE_WARNING_MB': 1536,
 'NEWSPIDER_MODULE': 'spiders',
 'REQUEST_FINGERPRINTER_CLASS': 'scrapy_zyte_api.ScrapyZyteAPIRequestFingerprinter',
 'REQUEST_FINGERPRINTER_IMPLEMENTATION': '2.7',
 'SPIDER_MODULES': ['spiders', 'auth_check'],
 'TWISTED_REACTOR': 'twisted.internet.asyncioreactor.AsyncioSelectorReactor',
 'USER_AGENT': ''}
2026-03-30 15:10:42 [scrapy_zyte_api.handler] INFO: Using a Zyte API key starting with '5857011'
2026-03-30 15:10:42 [scrapy_zyte_api.handler] INFO: Using a Zyte API key starting with '5857011'
2026-03-30 15:10:42 [scrapy.middleware] INFO: Enabled downloader middlewares:
['scrapy.downloadermiddlewares.offsite.OffsiteMiddleware',
 'scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware',
 'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware',
 'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware',
 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware',
 'scrapy_zyte_api.ScrapyZyteAPIDownloaderMiddleware',
 'scrapy.downloadermiddlewares.retry.RetryMiddleware',
 'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware',
 'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware',
 'scrapy.downloadermiddlewares.redirect.RedirectMiddleware',
 'scrapy.downloadermiddlewares.cookies.CookiesMiddleware',
 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware',
 'scrapy.downloadermiddlewares.stats.DownloaderStats']
2026-03-30 15:10:42 [crawlers.auto_selling.middlewares.id_gen_middleware] INFO: Setting up IdGenerationMiddleware for auto_selling
2026-03-30 15:10:42 [scrapy.middleware] INFO: Enabled spider middlewares:
['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware',
 'scrapy_zyte_api.ScrapyZyteAPISpiderMiddleware',
 'scrapy.spidermiddlewares.referer.RefererMiddleware',
 'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware',
 'scrapy.spidermiddlewares.depth.DepthMiddleware',
 'crawlers.middlewares.photo_download_middleware.PhotoDownloadMiddleware',
 'crawlers.auto_selling.middlewares.id_gen_middleware.IdGenMiddleware']
2026-03-30 15:10:42 [scrapy.middleware] INFO: Enabled item pipelines:
['crawlers.pipelines.post_to_azurebus_auto_selling.AzureBusPipelineAutoSelling',
 'crawlers.pipelines.save_to_cdlq_db_auto_selling.SaveToCdlqDbAutoSelling']
2026-03-30 15:10:42 [scrapy.core.engine] INFO: Spider opened
2026-03-30 15:10:42 [azure.identity._credentials.environment] INFO: Incomplete environment configuration for EnvironmentCredential. These variables are set: AZURE_TENANT_ID, AZURE_CLIENT_ID
2026-03-30 15:10:42 [common.service_bus.service_bus_client_factory] INFO: ServiceBusClient initialized via DefaultAzureCredential for alx-production-bus.servicebus.windows.net
2026-03-30 15:10:42 [crawlers.pipelines.base_azure_bus_pipeline] INFO: [AzureBusPipeline] Connected to topic auto.sourcing-v2
2026-03-30 15:10:42 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2026-03-30 15:10:42 [scrapy.extensions.telnet] INFO: Telnet console listening on 127.0.0.1:6025
2026-03-30 15:10:42 [scrapy.extensions.memusage] INFO: Peak memory usage is 142MiB
2026-03-30 15:10:42 [scrapy-playwright] INFO: Starting download handler
2026-03-30 15:10:42 [scrapy-playwright] INFO: Starting download handler
2026-03-30 15:10:47 [auto_selling_leboncoin.fr] INFO: Scraper started with URL: https://www.leboncoin.fr/boutique/104412/ab_motors.htm and multipost_profile_id: 3a4b313a-5a3b-4c79-9f86-0e65534afb48 and job_id: 4a8df3aa2c1f11f18e133aacc95538c6
2026-03-30 15:10:47 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
2026-03-30 15:10:50 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://www.leboncoin.fr/boutique/104412/ab_motors.htm> (referer: https://www.leboncoin.fr/boutique/104412/ab_motors.htm) ['zyte-api']
2026-03-30 15:10:50 [auto_selling_leboncoin.fr] INFO: Captured Zyte cookies: [{'name': '__Secure-Install', 'value': '6e8d7060-4702-4737-a802-7921b640dd14', 'domain': '.leboncoin.fr', 'path': '/', 'expires': 253402300798, 'httpOnly': False, 'secure': True}, {'name': 'cnfdVisitorId', 'value': 'ab6a8bb9-6dbd-49e6-948e-f549bf289d6a', 'domain': '.leboncoin.fr', 'path': '/', 'expires': 1932563449, 'httpOnly': False, 'secure': True}, {'name': 'datadome', 'value': 'SAXCKTtdax~QZS~eBKxvgXwSwknC6CiGXOeVOFi8z6VaOM4MirThIvR__qFcejqCt~4UuZoUAKibLeclQLImFKiJpfqcu48F6ghjCVGktxxUiUGisI_xqgmyszOsMM9j', 'domain': '.leboncoin.fr', 'path': '/', 'expires': 1806419449, 'httpOnly': False, 'secure': True}]
2026-03-30 15:10:50 [auto_selling_leboncoin.fr] INFO: Scrapy-formatted cookies: [{'name': '__Secure-Install', 'value': '6e8d7060-4702-4737-a802-7921b640dd14', 'domain': '.leboncoin.fr', 'path': '/'}, {'name': 'cnfdVisitorId', 'value': 'ab6a8bb9-6dbd-49e6-948e-f549bf289d6a', 'domain': '.leboncoin.fr', 'path': '/'}, {'name': 'datadome', 'value': 'SAXCKTtdax~QZS~eBKxvgXwSwknC6CiGXOeVOFi8z6VaOM4MirThIvR__qFcejqCt~4UuZoUAKibLeclQLImFKiJpfqcu48F6ghjCVGktxxUiUGisI_xqgmyszOsMM9j', 'domain': '.leboncoin.fr', 'path': '/'}]
2026-03-30 15:10:50 [auto_selling_leboncoin.fr] INFO: Response headers after parse_dealer_home_page: {b'X-Amz-Cf-Pop': [b'CDG50-P2'], b'Date': [b'Mon, 30 Mar 2026 15:10:49 GMT'], b'Vary': [b'Accept-Encoding'], b'Accept-Ch': [b'Sec-CH-UA,Sec-CH-UA-Mobile,Sec-CH-UA-Platform,Sec-CH-UA-Arch,Sec-CH-UA-Full-Version-List,Sec-CH-UA-Model,Sec-CH-Device-Memory'], b'Strict-Transport-Security': [b'max-age=15768000'], b'Via': [b'1.1 3927bf0011a2eb853e62f4b12f7ba87e.cloudfront.net (CloudFront)'], b'Set-Cookie': [b'datadome=SAXCKTtdax~QZS~eBKxvgXwSwknC6CiGXOeVOFi8z6VaOM4MirThIvR__qFcejqCt~4UuZoUAKibLeclQLImFKiJpfqcu48F6ghjCVGktxxUiUGisI_xqgmyszOsMM9j; Max-Age=31536000; Domain=.leboncoin.fr; Path=/; Secure; SameSite=Lax'], b'Content-Security-Policy': [b'frame-ancestors *.leboncoin.fr *.leboncoin.io *.leboncoin.ci; report-uri https://api.leboncoin.fr/api/csp-report/v1/report/;'], b'Referrer-Policy': [b'no-referrer-when-downgrade'], b'Content-Security-Policy-Report-Only': [b'object-src *.leboncoin.fr *.leboncoin.io *.leboncoin.ci; frame-ancestors *.leboncoin.fr *.leboncoin.io *.leboncoin.ci; report-uri https://api.leboncoin.fr/api/csp-report/v1/report/;'], b'Etag': [b'W/"17bhdgvdjuybjji"'], b'Content-Type': [b'text/html; charset=utf-8'], b'X-Cache': [b'Miss from cloudfront'], b'X-Datadome': [b'protected'], b'Cache-Control': [b'private, no-cache, no-store, max-age=0, must-revalidate'], b'X-Amz-Cf-Id': [b'qCWpmg1SHRE0Vy67H-H2Br1ET6RNPqVmREjmAXEz60JHnd5VQvztIQ==']}
2026-03-30 15:10:50 [auto_selling_leboncoin.fr] INFO: defaultSearchOptions: {'limit': 10, 'filters': {'owner': {'user_id': 'aca2d4bd-cf28-4bfa-91a5-68c2ca6637d5'}, 'enums': {'ad_type': ['offer']}, 'category': {'id': '1'}}}
2026-03-30 15:10:50 [auto_selling_leboncoin.fr] INFO: cookies: [{'name': '__Secure-Install', 'value': '6e8d7060-4702-4737-a802-7921b640dd14', 'domain': '.leboncoin.fr', 'path': '/'}, {'name': 'cnfdVisitorId', 'value': 'ab6a8bb9-6dbd-49e6-948e-f549bf289d6a', 'domain': '.leboncoin.fr', 'path': '/'}, {'name': 'datadome', 'value': 'SAXCKTtdax~QZS~eBKxvgXwSwknC6CiGXOeVOFi8z6VaOM4MirThIvR__qFcejqCt~4UuZoUAKibLeclQLImFKiJpfqcu48F6ghjCVGktxxUiUGisI_xqgmyszOsMM9j', 'domain': '.leboncoin.fr', 'path': '/'}]
2026-03-30 15:10:50 [auto_selling_leboncoin.fr] INFO: Payload for get listings: {'limit': 200, 'filters': {'owner': {'user_id': 'aca2d4bd-cf28-4bfa-91a5-68c2ca6637d5'}, 'enums': {'ad_type': ['offer']}, 'category': {'id': '1'}}, 'offset': 0}
2026-03-30 15:10:50 [auto_selling_leboncoin.fr] INFO: Request: curl -X POST https://api.leboncoin.fr/finder/search --data-raw '{"filters": {"category": {"id": "1"}, "enums": {"ad_type": ["offer"]}, "owner": {"user_id": "aca2d4bd-cf28-4bfa-91a5-68c2ca6637d5"}}, "limit": 200, "offset": 0}' -H 'Accept: */*' -H 'Accept-Language: en-GB,en-US;q=0.9,en;q=0.8' -H 'Content-Type: application/json' -H 'Origin: https://www.leboncoin.fr' --cookie 'name=__Secure-Install; name=cnfdVisitorId; name=datadome'
2026-03-30 15:10:50 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
2026-03-30 15:10:59 [scrapy.core.engine] DEBUG: Crawled (200) <POST https://api.leboncoin.fr/finder/search> (referer: https://www.leboncoin.fr/boutique/104412/ab_motors.htm) ['zyte-api']
2026-03-30 15:10:59 [auto_selling_leboncoin.fr] INFO: Found 25 listings on page 1
2026-03-30 15:10:59 [auto_selling_leboncoin.fr] INFO: Found listing with ID: 3155234568
2026-03-30 15:10:59 [azure.identity._credentials.environment] INFO: Incomplete environment configuration for EnvironmentCredential. These variables are set: AZURE_TENANT_ID, AZURE_CLIENT_ID
2026-03-30 15:10:59 [urllib3.connectionpool] DEBUG: Starting new HTTPS connection (1): login.microsoftonline.com:443
2026-03-30 15:11:00 [urllib3.connectionpool] DEBUG: https://login.microsoftonline.com:443 "POST /8ea908c1-4e85-4692-bc3f-3646b9b40891/oauth2/v2.0/token HTTP/1.1" 200 2113
2026-03-30 15:11:00 [azure.identity._credentials.chained] INFO: DefaultAzureCredential acquired a token from WorkloadIdentityCredential
2026-03-30 15:11:00 [urllib3.connectionpool] DEBUG: Starting new HTTPS connection (1): alxsourcingstorageprod.table.core.windows.net:443
2026-03-30 15:11:00 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:00 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273155234568%27 HTTP/1.1" 200 None
2026-03-30 15:11:00 [auto_selling_leboncoin.fr] INFO: Scrape type for 3155234568: 1
2026-03-30 15:11:00 [auto_selling_leboncoin.fr] INFO: Scraping new listing 3155234568
2026-03-30 15:11:00 [auto_selling_leboncoin.fr] ERROR: Error extracting item: Field registration_date is not nullable
Traceback (most recent call last):
  File "/usr/src/app/crawlers/spiders/auto_selling_leboncoin.py", line 295, in _extract_listing_item
    item["registration_date"] = self._extract_registration_date(details_data)
    ~~~~^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/app/crawlers/items.py", line 116, in __setitem__
    raise ValueError(f"Field {key} is not nullable")
ValueError: Field registration_date is not nullable
2026-03-30 15:11:00 [auto_selling_leboncoin.fr] INFO: Extracted item: None
2026-03-30 15:11:00 [auto_selling_leboncoin.fr] INFO: Found listing with ID: 3155176435
2026-03-30 15:11:00 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:00 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273155176435%27 HTTP/1.1" 200 None
2026-03-30 15:11:00 [auto_selling_leboncoin.fr] INFO: Scrape type for 3155176435: 1
2026-03-30 15:11:00 [auto_selling_leboncoin.fr] INFO: Scraping new listing 3155176435
2026-03-30 15:11:00 [auto_selling_leboncoin.fr] ERROR: Error extracting item: Field registration_date is not nullable
Traceback (most recent call last):
  File "/usr/src/app/crawlers/spiders/auto_selling_leboncoin.py", line 295, in _extract_listing_item
    item["registration_date"] = self._extract_registration_date(details_data)
    ~~~~^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/app/crawlers/items.py", line 116, in __setitem__
    raise ValueError(f"Field {key} is not nullable")
ValueError: Field registration_date is not nullable
2026-03-30 15:11:00 [auto_selling_leboncoin.fr] INFO: Extracted item: None
2026-03-30 15:11:00 [auto_selling_leboncoin.fr] INFO: Found listing with ID: 3155153906
2026-03-30 15:11:00 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:00 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273155153906%27 HTTP/1.1" 200 None
2026-03-30 15:11:00 [auto_selling_leboncoin.fr] INFO: Scrape type for 3155153906: 1
2026-03-30 15:11:00 [auto_selling_leboncoin.fr] INFO: Scraping new listing 3155153906
2026-03-30 15:11:00 [auto_selling_leboncoin.fr] INFO: Extracted item: {'auction_title': '',
 'c_o_2_emission_value': None,
 'category': None,
 'color': 'Rouge',
 'currency': 'EUR',
 'description': '****** AB MOTORS ******\n'
                '\n'
                "Professionnel en Véhicules d'occasions Vous propose à la "
                'vente parmi sa sélection\n'
                "d'occasions révisées et garanties :\n"
                '\n'
                '**** VOLVO V 40 2.0 BUSINESS GEARTRONIC 6  ****\n'
                '\n'
                '-1ere m.e.c : 11 / 04 / 2019\n'
                '-Couleur : ROUGE METALLISEE\n'
                '-Kilométrage : 75 000 KMS CERTIFIÉ ET GARANTIE\n'
                '-Cylindré : 1969 cc\n'
                '-Puissance : 120 CH\n'
                '-Puissance fiscal : 6 CV\n'
                '\n'
                '**** VEHICULE DANS UN ETAT NEUF !!! ****\n'
                '\n'
                '*** TRES BELLE VOLVO V40  ***\n'
                '\n'
                '*** 1 ER MAIN AVEC HISTORIQUE VOLVO ***\n'
                '\n'
                '=== OPTIONS ===\n'
                '\n'
                '- 4 Vitres électriques\n'
                '- Direction assistée\n'
                '- Ouverture / Fermeture centralisée\n'
                '- SIEGE CHAUFFANT\n'
                '- CLIMATISATION\n'
                '- GPS NAVIGATION\n'
                '- REGULATEUR DE VITESSE\n'
                '- LIMITEUR DE VITESSE\n'
                '- RETROVISEURS ELECTRIQUES\n'
                '- RETROVISEURS RABATTABLE\n'
                '- RADAR AR\n'
                '- DETECTEUR DE PLUIE\n'
                '- FEUX AUTO\n'
                '- ORDINATEUR DE BORD\n'
                '- VOLANT MULTIFONCTION\n'
                '- RADIO CD MP3\n'
                '- BLUETOOTH\n'
                '- TELEPHONE\n'
                '- DIVERS RANGEMENT\n'
                '- PORTE GOBLET AV + AR\n'
                '- JANTES ALU\n'
                '- ECT ECT......\n'
                '\n'
                '=== INFORMATIONS sur le VEHICULE ===\n'
                '\n'
                '-- AUCUN FRAIS À PREVOIR\n'
                '-- Intérieur et extérieur du véhicule comme NEUF !\n'
                '-- Mécanique en parfait Etat.\n'
                '-- Moteur fiable et robuste\n'
                '-- OCCASION à ne pas Rater ! À voir et à Essayer !\n'
                '\n'
                '------ Ce véhicule est vendu avec un contrôle technique '
                'récent ------\n'
                '\n'
                '============== SERVICE CARTE GRISE ===============\n'
                '\n'
                '- Nous Effectuons pour vous les démarches administrative\n'
                '\n'
                '(Cout Carte Grise et WW Provisoire en sus )\n'
                '\n'
                "- Se munir du PERMIS DE CONDUIRE + PIÈCE D'IDENTITÉ et\n"
                '\n'
                "d'un JUSTIFICATIF DE DOMICILE de moins de 3 Mois.\n"
                '\n'
                '======== PRIX: =========\n'
                '\n'
                '-- 15 990 € GARANTIE 3 MOIS ( MOTEUR/ BOITE )\n'
                '\n'
                '----- PRIX DE LA CARTE GRISE EN SUS -------\n'
                '\n'
                '----- PLUS DE PHOTOS SUR NOTRE SITE INTERNET -------\n'
                '\n'
                '-------- EXTENSION DE GARANTIE POSSIBLE ---------\n'
                '\n'
                'REPRISE POSSIBLE : A4 A6 BMW 320 330\n'
                '\n'
                '_______________________________________________________\n'
                '\n'
                '***** AB MOTORS *****\n'
                '\n'
                'ACHAT/VENTE/REPRISE\n'
                '\n'
                'VEHICULE REVISES ET GARANTIES\n'
                '\n'
                'ROUTE NATIONALE D630 59125 TRITH SAINT LEGER\n'
                '\n'
                'EN FACE DE LA ZONE YELLOW PARC ELECTRO DEPOT /CARTER CASH\n'
                '\n'
                '_____________________________________________________________',
 'doors_number': 5,
 'emission_standard': None,
 'engine': None,
 'engine_horse_power': 120,
 'expiration_date': None,
 'fuel_type': 'Diesel',
 'is_damaged': False,
 'is_operable': True,
 'license_plate': None,
 'link_to_web_offer': 'https://www.leboncoin.fr/ad/voitures/3155153906',
 'listing': 'auction',
 'make': 'VOLVO',
 'model': 'V40',
 'odometer': 75000,
 'odometer_reading_unit': 'km',
 'origin_country_code': 'FR',
 'original_photo_count': 0,
 'photo_urls': ['https://img.leboncoin.fr/api/v1/lbcpb1/images/7b/9d/99/7b9d995e2e9b98890bfac54168d1d7243b225397.jpg?rule=ad-large',
                'https://img.leboncoin.fr/api/v1/lbcpb1/images/4d/d8/3e/4dd83eab2e334f8e31e9aa6315fd40939d3bd15b.jpg?rule=ad-large',
                'https://img.leboncoin.fr/api/v1/lbcpb1/images/7c/e6/6a/7ce66a07e086dee6d0184c6c401cc0fd6f7ddc9d.jpg?rule=ad-large',
                'https://img.leboncoin.fr/api/v1/lbcpb1/images/54/0b/70/540b70597d7640d7ddd4998468b50c9d351974b7.jpg?rule=ad-large',
                'https://img.leboncoin.fr/api/v1/lbcpb1/images/0f/27/ed/0f27ed62871dfb3e451c69eb021b6f6453bff5e0.jpg?rule=ad-large'],
 'price': 15990,
 'price_includes_vat': False,
 'registration_date': '2019-04-01',
 'seats_number': 5,
 'seller_name': None,
 'title': 'Volvo v 40 2.0 d2 120 cv business geartronic 6 .du 04/2019 avec 75 '
          '000 kms .1er main + carnet volvo',
 'transmission': 'automatic',
 'trim': None,
 'vin': None,
 'year': 2019}
2026-03-30 15:11:00 [crawlers.auto_selling.middlewares.id_gen_middleware] INFO: Generated ID for item: da342e35-6b6e-5321-a7ff-636a4774a82d with identifier: 3155153906
2026-03-30 15:11:00 [crawlers.middlewares.photo_download_middleware] INFO: Downloading 5 photos for item da342e35-6b6e-5321-a7ff-636a4774a82d
2026-03-30 15:11:00 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:00 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /PhotoDownloadCache()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%27https%3A%252F%252Fimg.leboncoin.fr%252Fapi%252Fv1%252Flbcpb1%252Fimages%252F7b%252F9d%252F99%252F7b9d995e2e9b98890bfac54168d1d7243b225397.jpg%253Frule%3Dad-large%27 HTTP/1.1" 200 None
2026-03-30 15:11:00 [crawlers.middlewares.photo_download_middleware] INFO: Image https://img.leboncoin.fr/api/v1/lbcpb1/images/7b/9d/99/7b9d995e2e9b98890bfac54168d1d7243b225397.jpg?rule=ad-large already downloaded
2026-03-30 15:11:00 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:00 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /PhotoDownloadCache()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%27https%3A%252F%252Fimg.leboncoin.fr%252Fapi%252Fv1%252Flbcpb1%252Fimages%252F4d%252Fd8%252F3e%252F4dd83eab2e334f8e31e9aa6315fd40939d3bd15b.jpg%253Frule%3Dad-large%27 HTTP/1.1" 200 None
2026-03-30 15:11:00 [crawlers.middlewares.photo_download_middleware] INFO: Image https://img.leboncoin.fr/api/v1/lbcpb1/images/4d/d8/3e/4dd83eab2e334f8e31e9aa6315fd40939d3bd15b.jpg?rule=ad-large already downloaded
2026-03-30 15:11:00 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:00 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /PhotoDownloadCache()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%27https%3A%252F%252Fimg.leboncoin.fr%252Fapi%252Fv1%252Flbcpb1%252Fimages%252F7c%252Fe6%252F6a%252F7ce66a07e086dee6d0184c6c401cc0fd6f7ddc9d.jpg%253Frule%3Dad-large%27 HTTP/1.1" 200 None
2026-03-30 15:11:00 [crawlers.middlewares.photo_download_middleware] INFO: Image https://img.leboncoin.fr/api/v1/lbcpb1/images/7c/e6/6a/7ce66a07e086dee6d0184c6c401cc0fd6f7ddc9d.jpg?rule=ad-large already downloaded
2026-03-30 15:11:00 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:00 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /PhotoDownloadCache()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%27https%3A%252F%252Fimg.leboncoin.fr%252Fapi%252Fv1%252Flbcpb1%252Fimages%252F54%252F0b%252F70%252F540b70597d7640d7ddd4998468b50c9d351974b7.jpg%253Frule%3Dad-large%27 HTTP/1.1" 200 None
2026-03-30 15:11:00 [crawlers.middlewares.photo_download_middleware] INFO: Image https://img.leboncoin.fr/api/v1/lbcpb1/images/54/0b/70/540b70597d7640d7ddd4998468b50c9d351974b7.jpg?rule=ad-large already downloaded
2026-03-30 15:11:00 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:00 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /PhotoDownloadCache()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%27https%3A%252F%252Fimg.leboncoin.fr%252Fapi%252Fv1%252Flbcpb1%252Fimages%252F0f%252F27%252Fed%252F0f27ed62871dfb3e451c69eb021b6f6453bff5e0.jpg%253Frule%3Dad-large%27 HTTP/1.1" 200 None
2026-03-30 15:11:00 [crawlers.middlewares.photo_download_middleware] INFO: Image https://img.leboncoin.fr/api/v1/lbcpb1/images/0f/27/ed/0f27ed62871dfb3e451c69eb021b6f6453bff5e0.jpg?rule=ad-large already downloaded
2026-03-30 15:11:00 [crawlers.pipelines.post_to_azurebus_auto_selling] INFO: Azure Bus Pipeline processing item: da342e35-6b6e-5321-a7ff-636a4774a82d with identifier 3155153906
2026-03-30 15:11:00 [azure.servicebus._pyamqp._connection] INFO: Connection state changed: None -> <ConnectionState.START: 0>
2026-03-30 15:11:00 [azure.servicebus._pyamqp._connection] INFO: Connection state changed: <ConnectionState.START: 0> -> <ConnectionState.HDR_SENT: 2>
2026-03-30 15:11:00 [azure.servicebus._pyamqp._connection] INFO: Connection state changed: <ConnectionState.HDR_SENT: 2> -> <ConnectionState.HDR_SENT: 2>
2026-03-30 15:11:00 [azure.servicebus._pyamqp._connection] INFO: Connection state changed: <ConnectionState.HDR_SENT: 2> -> <ConnectionState.OPEN_PIPE: 4>
2026-03-30 15:11:00 [azure.servicebus._pyamqp.session] INFO: Session state changed: <SessionState.UNMAPPED: 0> -> <SessionState.BEGIN_SENT: 1>
2026-03-30 15:11:00 [azure.servicebus._pyamqp.link] INFO: Link state changed: <LinkState.DETACHED: 0> -> <LinkState.ATTACH_SENT: 1>
2026-03-30 15:11:00 [azure.servicebus._pyamqp.management_link] INFO: Management link receiver state changed: <LinkState.DETACHED: 0> -> <LinkState.ATTACH_SENT: 1>
2026-03-30 15:11:00 [azure.servicebus._pyamqp.link] INFO: Link state changed: <LinkState.DETACHED: 0> -> <LinkState.ATTACH_SENT: 1>
2026-03-30 15:11:00 [azure.servicebus._pyamqp.management_link] INFO: Management link sender state changed: <LinkState.DETACHED: 0> -> <LinkState.ATTACH_SENT: 1>
2026-03-30 15:11:00 [azure.servicebus._pyamqp._connection] INFO: Connection state changed: <ConnectionState.OPEN_PIPE: 4> -> <ConnectionState.OPEN_SENT: 7>
2026-03-30 15:11:00 [azure.servicebus._pyamqp._connection] INFO: Connection state changed: <ConnectionState.OPEN_SENT: 7> -> <ConnectionState.OPENED: 9>
2026-03-30 15:11:00 [azure.servicebus._pyamqp.session] INFO: Session state changed: <SessionState.BEGIN_SENT: 1> -> <SessionState.MAPPED: 3>
2026-03-30 15:11:00 [azure.servicebus._pyamqp.link] INFO: Link state changed: <LinkState.ATTACH_SENT: 1> -> <LinkState.ATTACHED: 3>
2026-03-30 15:11:00 [azure.servicebus._pyamqp.management_link] INFO: Management link receiver state changed: <LinkState.ATTACH_SENT: 1> -> <LinkState.ATTACHED: 3>
2026-03-30 15:11:00 [azure.servicebus._pyamqp.link] INFO: Link state changed: <LinkState.ATTACH_SENT: 1> -> <LinkState.ATTACHED: 3>
2026-03-30 15:11:00 [azure.servicebus._pyamqp.management_link] INFO: Management link sender state changed: <LinkState.ATTACH_SENT: 1> -> <LinkState.ATTACHED: 3>
2026-03-30 15:11:00 [azure.servicebus._pyamqp.cbs] DEBUG: CBS completed opening with status: <ManagementOpenResult.OK: 1>
2026-03-30 15:11:00 [urllib3.connectionpool] DEBUG: Starting new HTTPS connection (1): login.microsoftonline.com:443
2026-03-30 15:11:00 [urllib3.connectionpool] DEBUG: https://login.microsoftonline.com:443 "POST /8ea908c1-4e85-4692-bc3f-3646b9b40891/oauth2/v2.0/token HTTP/1.1" 200 2018
2026-03-30 15:11:00 [azure.identity._credentials.chained] INFO: DefaultAzureCredential acquired a token from WorkloadIdentityCredential
2026-03-30 15:11:00 [azure.servicebus._pyamqp.cbs] DEBUG: CBS update in progress. Token put time: 1774883460
2026-03-30 15:11:00 [azure.servicebus._pyamqp.cbs] DEBUG: CBS update in progress. Token put time: 1774883460
2026-03-30 15:11:00 [azure.servicebus._pyamqp.cbs] DEBUG: CBS Put token result (<ManagementExecuteOperationResult.OK: 0>), status code: 202, status_description: b'Accepted'.
2026-03-30 15:11:01 [azure.servicebus._pyamqp.cbs] DEBUG: CBS status check: state == <CbsAuthState.OK: 0>, expired == False, refresh required == False
2026-03-30 15:11:01 [azure.servicebus._pyamqp.link] INFO: Link state changed: <LinkState.DETACHED: 0> -> <LinkState.ATTACH_SENT: 1>
2026-03-30 15:11:01 [azure.servicebus._pyamqp.link] INFO: Link state changed: <LinkState.ATTACH_SENT: 1> -> <LinkState.ATTACHED: 3>
2026-03-30 15:11:01 [azure.servicebus._pyamqp.cbs] DEBUG: CBS status check: state == <CbsAuthState.OK: 0>, expired == False, refresh required == False
2026-03-30 15:11:01 [azure.servicebus._pyamqp.cbs] DEBUG: CBS status check: state == <CbsAuthState.OK: 0>, expired == False, refresh required == False
2026-03-30 15:11:01 [azure.servicebus._pyamqp.cbs] DEBUG: CBS status check: state == <CbsAuthState.OK: 0>, expired == False, refresh required == False
2026-03-30 15:11:01 [azure.servicebus._pyamqp.cbs] DEBUG: CBS status check: state == <CbsAuthState.OK: 0>, expired == False, refresh required == False
2026-03-30 15:11:01 [crawlers.pipelines.post_to_azurebus_auto_selling] DEBUG: [AzureBusPipeline] sent process item CloudEvent for item da342e35-6b6e-5321-a7ff-636a4774a82d
2026-03-30 15:11:01 [scrapy.core.scraper] DEBUG: Scraped from <200 https://api.leboncoin.fr/finder/search>
{'auction_title': '',
 'c_o_2_emission_value': None,
 'category': None,
 'color': 'Rouge',
 'currency': 'EUR',
 'description': '****** AB MOTORS ******\n'
                '\n'
                "Professionnel en Véhicules d'occasions Vous propose à la "
                'vente parmi sa sélection\n'
                "d'occasions révisées et garanties :\n"
                '\n'
                '**** VOLVO V 40 2.0 BUSINESS GEARTRONIC 6  ****\n'
                '\n'
                '-1ere m.e.c : 11 / 04 / 2019\n'
                '-Couleur : ROUGE METALLISEE\n'
                '-Kilométrage : 75 000 KMS CERTIFIÉ ET GARANTIE\n'
                '-Cylindré : 1969 cc\n'
                '-Puissance : 120 CH\n'
                '-Puissance fiscal : 6 CV\n'
                '\n'
                '**** VEHICULE DANS UN ETAT NEUF !!! ****\n'
                '\n'
                '*** TRES BELLE VOLVO V40  ***\n'
                '\n'
                '*** 1 ER MAIN AVEC HISTORIQUE VOLVO ***\n'
                '\n'
                '=== OPTIONS ===\n'
                '\n'
                '- 4 Vitres électriques\n'
                '- Direction assistée\n'
                '- Ouverture / Fermeture centralisée\n'
                '- SIEGE CHAUFFANT\n'
                '- CLIMATISATION\n'
                '- GPS NAVIGATION\n'
                '- REGULATEUR DE VITESSE\n'
                '- LIMITEUR DE VITESSE\n'
                '- RETROVISEURS ELECTRIQUES\n'
                '- RETROVISEURS RABATTABLE\n'
                '- RADAR AR\n'
                '- DETECTEUR DE PLUIE\n'
                '- FEUX AUTO\n'
                '- ORDINATEUR DE BORD\n'
                '- VOLANT MULTIFONCTION\n'
                '- RADIO CD MP3\n'
                '- BLUETOOTH\n'
                '- TELEPHONE\n'
                '- DIVERS RANGEMENT\n'
                '- PORTE GOBLET AV + AR\n'
                '- JANTES ALU\n'
                '- ECT ECT......\n'
                '\n'
                '=== INFORMATIONS sur le VEHICULE ===\n'
                '\n'
                '-- AUCUN FRAIS À PREVOIR\n'
                '-- Intérieur et extérieur du véhicule comme NEUF !\n'
                '-- Mécanique en parfait Etat.\n'
                '-- Moteur fiable et robuste\n'
                '-- OCCASION à ne pas Rater ! À voir et à Essayer !\n'
                '\n'
                '------ Ce véhicule est vendu avec un contrôle technique '
                'récent ------\n'
                '\n'
                '============== SERVICE CARTE GRISE ===============\n'
                '\n'
                '- Nous Effectuons pour vous les démarches administrative\n'
                '\n'
                '(Cout Carte Grise et WW Provisoire en sus )\n'
                '\n'
                "- Se munir du PERMIS DE CONDUIRE + PIÈCE D'IDENTITÉ et\n"
                '\n'
                "d'un JUSTIFICATIF DE DOMICILE de moins de 3 Mois.\n"
                '\n'
                '======== PRIX: =========\n'
                '\n'
                '-- 15 990 € GARANTIE 3 MOIS ( MOTEUR/ BOITE )\n'
                '\n'
                '----- PRIX DE LA CARTE GRISE EN SUS -------\n'
                '\n'
                '----- PLUS DE PHOTOS SUR NOTRE SITE INTERNET -------\n'
                '\n'
                '-------- EXTENSION DE GARANTIE POSSIBLE ---------\n'
                '\n'
                'REPRISE POSSIBLE : A4 A6 BMW 320 330\n'
                '\n'
                '_______________________________________________________\n'
                '\n'
                '***** AB MOTORS *****\n'
                '\n'
                'ACHAT/VENTE/REPRISE\n'
                '\n'
                'VEHICULE REVISES ET GARANTIES\n'
                '\n'
                'ROUTE NATIONALE D630 59125 TRITH SAINT LEGER\n'
                '\n'
                'EN FACE DE LA ZONE YELLOW PARC ELECTRO DEPOT /CARTER CASH\n'
                '\n'
                '_____________________________________________________________',
 'doors_number': 5,
 'emission_standard': None,
 'engine': None,
 'engine_horse_power': 120,
 'expiration_date': None,
 'fuel_type': 'Diesel',
 'id': 'da342e35-6b6e-5321-a7ff-636a4774a82d',
 'is_damaged': False,
 'is_operable': True,
 'license_plate': None,
 'link_to_web_offer': 'https://www.leboncoin.fr/ad/voitures/3155153906',
 'listing': 'auction',
 'make': 'VOLVO',
 'model': 'V40',
 'odometer': 75000,
 'odometer_reading_unit': 'km',
 'origin_country_code': 'FR',
 'original_photo_count': 5,
 'photo_urls': ['https://img.leboncoin.fr/api/v1/lbcpb1/images/7b/9d/99/7b9d995e2e9b98890bfac54168d1d7243b225397.jpg?rule=ad-large',
                'https://img.leboncoin.fr/api/v1/lbcpb1/images/4d/d8/3e/4dd83eab2e334f8e31e9aa6315fd40939d3bd15b.jpg?rule=ad-large',
                'https://img.leboncoin.fr/api/v1/lbcpb1/images/7c/e6/6a/7ce66a07e086dee6d0184c6c401cc0fd6f7ddc9d.jpg?rule=ad-large',
                'https://img.leboncoin.fr/api/v1/lbcpb1/images/54/0b/70/540b70597d7640d7ddd4998468b50c9d351974b7.jpg?rule=ad-large',
                'https://img.leboncoin.fr/api/v1/lbcpb1/images/0f/27/ed/0f27ed62871dfb3e451c69eb021b6f6453bff5e0.jpg?rule=ad-large'],
 'photos': [{'BlobStorageUrl': 'https://alxproduction.blob.core.windows.net/top-deal-listing/listing_da342e35-6b6e-5321-a7ff-636a4774a82d/da342e35-6b6e-5321-a7ff-636a4774a82d_image_0.jpg',
             'Extension': 'jpg',
             'FileSizeInBytes': 162533,
             'Height': 800,
             'OriginUrl': 'https://img.leboncoin.fr/api/v1/lbcpb1/images/7b/9d/99/7b9d995e2e9b98890bfac54168d1d7243b225397.jpg?rule=ad-large',
             'Width': 1067},
            {'BlobStorageUrl': 'https://alxproduction.blob.core.windows.net/top-deal-listing/listing_da342e35-6b6e-5321-a7ff-636a4774a82d/da342e35-6b6e-5321-a7ff-636a4774a82d_image_1.jpg',
             'Extension': 'jpg',
             'FileSizeInBytes': 182538,
             'Height': 800,
             'OriginUrl': 'https://img.leboncoin.fr/api/v1/lbcpb1/images/4d/d8/3e/4dd83eab2e334f8e31e9aa6315fd40939d3bd15b.jpg?rule=ad-large',
             'Width': 1067},
            {'BlobStorageUrl': 'https://alxproduction.blob.core.windows.net/top-deal-listing/listing_da342e35-6b6e-5321-a7ff-636a4774a82d/da342e35-6b6e-5321-a7ff-636a4774a82d_image_2.jpg',
             'Extension': 'jpg',
             'FileSizeInBytes': 145394,
             'Height': 800,
             'OriginUrl': 'https://img.leboncoin.fr/api/v1/lbcpb1/images/7c/e6/6a/7ce66a07e086dee6d0184c6c401cc0fd6f7ddc9d.jpg?rule=ad-large',
             'Width': 1067},
            {'BlobStorageUrl': 'https://alxproduction.blob.core.windows.net/top-deal-listing/listing_da342e35-6b6e-5321-a7ff-636a4774a82d/da342e35-6b6e-5321-a7ff-636a4774a82d_image_3.jpg',
             'Extension': 'jpg',
             'FileSizeInBytes': 142995,
             'Height': 800,
             'OriginUrl': 'https://img.leboncoin.fr/api/v1/lbcpb1/images/54/0b/70/540b70597d7640d7ddd4998468b50c9d351974b7.jpg?rule=ad-large',
             'Width': 1067},
            {'BlobStorageUrl': 'https://alxproduction.blob.core.windows.net/top-deal-listing/listing_da342e35-6b6e-5321-a7ff-636a4774a82d/da342e35-6b6e-5321-a7ff-636a4774a82d_image_4.jpg',
             'Extension': 'jpg',
             'FileSizeInBytes': 143759,
             'Height': 800,
             'OriginUrl': 'https://img.leboncoin.fr/api/v1/lbcpb1/images/0f/27/ed/0f27ed62871dfb3e451c69eb021b6f6453bff5e0.jpg?rule=ad-large',
             'Width': 1067}],
 'price': 15990,
 'price_includes_vat': False,
 'registration_date': '2019-04-01',
 'seats_number': 5,
 'seller_name': None,
 'title': 'Volvo v 40 2.0 d2 120 cv business geartronic 6 .du 04/2019 avec 75 '
          '000 kms .1er main + carnet volvo',
 'transmission': 'automatic',
 'trim': None,
 'vin': None,
 'year': 2019}
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273155153906%27 HTTP/1.1" 200 None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Saving data for 3155153906: {'created_time': 1774883461.129895, 'last_price_update_time': 1774883461.12991}
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "PATCH /ScrapedListings(PartitionKey='auto_selling_leboncoin.fr',RowKey='3155153906') HTTP/1.1" 204 0
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Found listing with ID: 3155109267
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273155109267%27 HTTP/1.1" 200 None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scrape type for 3155109267: 1
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scraping new listing 3155109267
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] ERROR: Error extracting item: Field registration_date is not nullable
Traceback (most recent call last):
  File "/usr/src/app/crawlers/spiders/auto_selling_leboncoin.py", line 295, in _extract_listing_item
    item["registration_date"] = self._extract_registration_date(details_data)
    ~~~~^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/app/crawlers/items.py", line 116, in __setitem__
    raise ValueError(f"Field {key} is not nullable")
ValueError: Field registration_date is not nullable
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Extracted item: None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Found listing with ID: 3039023035
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273039023035%27 HTTP/1.1" 200 None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scrape type for 3039023035: 1
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scraping new listing 3039023035
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] ERROR: Error extracting item: Field registration_date is not nullable
Traceback (most recent call last):
  File "/usr/src/app/crawlers/spiders/auto_selling_leboncoin.py", line 295, in _extract_listing_item
    item["registration_date"] = self._extract_registration_date(details_data)
    ~~~~^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/app/crawlers/items.py", line 116, in __setitem__
    raise ValueError(f"Field {key} is not nullable")
ValueError: Field registration_date is not nullable
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Extracted item: None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Found listing with ID: 3151141229
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273151141229%27 HTTP/1.1" 200 None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scrape type for 3151141229: 1
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scraping new listing 3151141229
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] ERROR: Error extracting item: Field registration_date is not nullable
Traceback (most recent call last):
  File "/usr/src/app/crawlers/spiders/auto_selling_leboncoin.py", line 295, in _extract_listing_item
    item["registration_date"] = self._extract_registration_date(details_data)
    ~~~~^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/app/crawlers/items.py", line 116, in __setitem__
    raise ValueError(f"Field {key} is not nullable")
ValueError: Field registration_date is not nullable
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Extracted item: None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Found listing with ID: 3151159472
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273151159472%27 HTTP/1.1" 200 None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scrape type for 3151159472: 1
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scraping new listing 3151159472
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] ERROR: Error extracting item: Field registration_date is not nullable
Traceback (most recent call last):
  File "/usr/src/app/crawlers/spiders/auto_selling_leboncoin.py", line 295, in _extract_listing_item
    item["registration_date"] = self._extract_registration_date(details_data)
    ~~~~^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/app/crawlers/items.py", line 116, in __setitem__
    raise ValueError(f"Field {key} is not nullable")
ValueError: Field registration_date is not nullable
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Extracted item: None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Found listing with ID: 3151170246
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273151170246%27 HTTP/1.1" 200 None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scrape type for 3151170246: 1
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scraping new listing 3151170246
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] ERROR: Error extracting item: Field registration_date is not nullable
Traceback (most recent call last):
  File "/usr/src/app/crawlers/spiders/auto_selling_leboncoin.py", line 295, in _extract_listing_item
    item["registration_date"] = self._extract_registration_date(details_data)
    ~~~~^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/app/crawlers/items.py", line 116, in __setitem__
    raise ValueError(f"Field {key} is not nullable")
ValueError: Field registration_date is not nullable
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Extracted item: None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Found listing with ID: 3151623560
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273151623560%27 HTTP/1.1" 200 None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scrape type for 3151623560: 1
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scraping new listing 3151623560
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] ERROR: Error extracting item: Field registration_date is not nullable
Traceback (most recent call last):
  File "/usr/src/app/crawlers/spiders/auto_selling_leboncoin.py", line 295, in _extract_listing_item
    item["registration_date"] = self._extract_registration_date(details_data)
    ~~~~^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/app/crawlers/items.py", line 116, in __setitem__
    raise ValueError(f"Field {key} is not nullable")
ValueError: Field registration_date is not nullable
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Extracted item: None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Found listing with ID: 3151638204
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273151638204%27 HTTP/1.1" 200 None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scrape type for 3151638204: 1
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scraping new listing 3151638204
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Extracted item: {'auction_title': '',
 'c_o_2_emission_value': None,
 'category': None,
 'color': 'Noir',
 'currency': 'EUR',
 'description': '****** AB MOTORS ******\n'
                '\n'
                "Professionnel en Véhicules d'occasions Vous propose à la "
                'vente parmi sa sélection\n'
                "d'occasions révisées et garanties :\n"
                '\n'
                '**** AUDI A5 2.0 TDI COUPE 170 CV ****\n'
                '\n'
                '-1ere m.e.c : 29 / 09 / 2009\n'
                '-Couleur : NOIR METALLISEE\n'
                '-Kilométrage : 154 000 KMS CERTIFIÉ ET GARANTIE\n'
                '-Cylindré : 1968 cc\n'
                '-Puissance : 170 CH\n'
                '-Puissance fiscal : 9 CV\n'
                '\n'
                '**** VEHICULE DANS UN BON ETAT ****\n'
                '\n'
                '*** BEAU COUPE A5 2.0 TDI ***\n'
                '\n'
                '=== OPTIONS ===\n'
                '\n'
                '- Vitres électriques\n'
                '- Direction assistée\n'
                '- Ouverture / Fermeture centralisée\n'
                '- SIEGE CUIR\n'
                '- SIEGE ELEC\n'
                '- SIEGE CHAUFFANT\n'
                '- CLIMATISATION AUTO\n'
                '- GPS NAVIGATION\n'
                '- RADAR AV + AR\n'
                '- RETROVISEURS ELECTRIQUES\n'
                '- DETECTEUR DE PLUIE\n'
                '- FEUX AUTO\n'
                '- LED DE JOUR\n'
                '- ORDINATEUR DE BORD\n'
                '- VOLANT MULTIFONCTION\n'
                '- RADIO CD MP3\n'
                '- BLUETOOTH\n'
                '- TEL MAIN LIBRE\n'
                '- USB / AUX\n'
                '- JANTES ALU\n'
                '- ECT ECT......\n'
                '\n'
                '=== INFORMATIONS sur le VEHICULE ===\n'
                '\n'
                '-- AUCUN FRAIS À PREVOIR\n'
                '-- Intérieur et extérieur du véhicule comme NEUF !\n'
                '-- Mécanique en parfait Etat.\n'
                '-- Moteur fiable et robuste\n'
                '-- OCCASION à ne pas Rater ! À voir et à Essayer !\n'
                '\n'
                '------ Ce véhicule est vendu avec un contrôle technique '
                'récent ------\n'
                '\n'
                '============== SERVICE CARTE GRISE ===============\n'
                '\n'
                '- Nous Effectuons pour vous les démarches administrative\n'
                '\n'
                '(Cout Carte Grise et WW Provisoire en sus )\n'
                '\n'
                "- Se munir du PERMIS DE CONDUIRE + PIÈCE D'IDENTITÉ et\n"
                '\n'
                "d'un JUSTIFICATIF DE DOMICILE de moins de 3 Mois.\n"
                '\n'
                '======== PRIX: =========\n'
                '\n'
                '-- 9 490 € GARANTIE 3 MOIS ( MOTEUR/ BOITE )\n'
                '\n'
                '----- PRIX DE LA CARTE GRISE EN SUS -------\n'
                '\n'
                '----- PLUS DE PHOTOS SUR NOTRE SITE INTERNET -------\n'
                '\n'
                '-------- EXTENSION DE GARANTIE POSSIBLE ---------\n'
                '\n'
                'REPRISE POSSIBLE : A4 A6 BMW 320 330\n'
                '\n'
                '_______________________________________________________\n'
                '\n'
                '***** AB MOTORS *****\n'
                '\n'
                'ACHAT/VENTE/REPRISE\n'
                '\n'
                'VEHICULE REVISES ET GARANTIES\n'
                '\n'
                'ROUTE NATIONALE D630 59125 TRITH SAINT LEGER\n'
                '\n'
                'EN FACE DE LA ZONE YELLOW PARC ELECTRO DEPOT /CARTER CASH\n'
                '\n'
                '____________________________________________________________',
 'doors_number': 2,
 'emission_standard': None,
 'engine': None,
 'engine_horse_power': 170,
 'expiration_date': None,
 'fuel_type': 'Diesel',
 'is_damaged': False,
 'is_operable': True,
 'license_plate': None,
 'link_to_web_offer': 'https://www.leboncoin.fr/ad/voitures/3151638204',
 'listing': 'auction',
 'make': 'AUDI',
 'model': 'A5',
 'odometer': 154000,
 'odometer_reading_unit': 'km',
 'origin_country_code': 'FR',
 'original_photo_count': 0,
 'photo_urls': ['https://img.leboncoin.fr/api/v1/lbcpb1/images/fe/ab/cb/feabcb774bc99f4a13471b0600edfe29d5f19109.jpg?rule=ad-large',
                'https://img.leboncoin.fr/api/v1/lbcpb1/images/aa/ee/6e/aaee6e367cb0fa95efcd499cf8f9e34786f187a9.jpg?rule=ad-large',
                'https://img.leboncoin.fr/api/v1/lbcpb1/images/1a/0c/cc/1a0ccc79f47f3b64edf6d4b5c11aa83b48c7ce90.jpg?rule=ad-large',
                'https://img.leboncoin.fr/api/v1/lbcpb1/images/9e/4f/9c/9e4f9ce3785dcee511060bff0f14bdec41aa722e.jpg?rule=ad-large',
                'https://img.leboncoin.fr/api/v1/lbcpb1/images/a3/c0/6c/a3c06cf5c26fe6534d4abbe63adfe51ff4d91348.jpg?rule=ad-large'],
 'price': 9490,
 'price_includes_vat': False,
 'registration_date': '2009-09-01',
 'seats_number': 4,
 'seller_name': None,
 'title': 'Audi a5 2.0 tdi coupe 170 cv .du 09/2009 avec 154 000 kms + '
          'historique',
 'transmission': 'manual',
 'trim': None,
 'vin': None,
 'year': 2009}
2026-03-30 15:11:01 [crawlers.auto_selling.middlewares.id_gen_middleware] INFO: Generated ID for item: 7f0b7631-63f4-570a-b4c5-c9a41a8eeb36 with identifier: 3151638204
2026-03-30 15:11:01 [crawlers.middlewares.photo_download_middleware] INFO: Downloading 5 photos for item 7f0b7631-63f4-570a-b4c5-c9a41a8eeb36
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /PhotoDownloadCache()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%27https%3A%252F%252Fimg.leboncoin.fr%252Fapi%252Fv1%252Flbcpb1%252Fimages%252Ffe%252Fab%252Fcb%252Ffeabcb774bc99f4a13471b0600edfe29d5f19109.jpg%253Frule%3Dad-large%27 HTTP/1.1" 200 None
2026-03-30 15:11:01 [crawlers.middlewares.photo_download_middleware] INFO: Image https://img.leboncoin.fr/api/v1/lbcpb1/images/fe/ab/cb/feabcb774bc99f4a13471b0600edfe29d5f19109.jpg?rule=ad-large already downloaded
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /PhotoDownloadCache()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%27https%3A%252F%252Fimg.leboncoin.fr%252Fapi%252Fv1%252Flbcpb1%252Fimages%252Faa%252Fee%252F6e%252Faaee6e367cb0fa95efcd499cf8f9e34786f187a9.jpg%253Frule%3Dad-large%27 HTTP/1.1" 200 None
2026-03-30 15:11:01 [crawlers.middlewares.photo_download_middleware] INFO: Image https://img.leboncoin.fr/api/v1/lbcpb1/images/aa/ee/6e/aaee6e367cb0fa95efcd499cf8f9e34786f187a9.jpg?rule=ad-large already downloaded
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /PhotoDownloadCache()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%27https%3A%252F%252Fimg.leboncoin.fr%252Fapi%252Fv1%252Flbcpb1%252Fimages%252F1a%252F0c%252Fcc%252F1a0ccc79f47f3b64edf6d4b5c11aa83b48c7ce90.jpg%253Frule%3Dad-large%27 HTTP/1.1" 200 None
2026-03-30 15:11:01 [crawlers.middlewares.photo_download_middleware] INFO: Image https://img.leboncoin.fr/api/v1/lbcpb1/images/1a/0c/cc/1a0ccc79f47f3b64edf6d4b5c11aa83b48c7ce90.jpg?rule=ad-large already downloaded
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /PhotoDownloadCache()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%27https%3A%252F%252Fimg.leboncoin.fr%252Fapi%252Fv1%252Flbcpb1%252Fimages%252F9e%252F4f%252F9c%252F9e4f9ce3785dcee511060bff0f14bdec41aa722e.jpg%253Frule%3Dad-large%27 HTTP/1.1" 200 None
2026-03-30 15:11:01 [crawlers.middlewares.photo_download_middleware] INFO: Image https://img.leboncoin.fr/api/v1/lbcpb1/images/9e/4f/9c/9e4f9ce3785dcee511060bff0f14bdec41aa722e.jpg?rule=ad-large already downloaded
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /PhotoDownloadCache()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%27https%3A%252F%252Fimg.leboncoin.fr%252Fapi%252Fv1%252Flbcpb1%252Fimages%252Fa3%252Fc0%252F6c%252Fa3c06cf5c26fe6534d4abbe63adfe51ff4d91348.jpg%253Frule%3Dad-large%27 HTTP/1.1" 200 None
2026-03-30 15:11:01 [crawlers.middlewares.photo_download_middleware] INFO: Image https://img.leboncoin.fr/api/v1/lbcpb1/images/a3/c0/6c/a3c06cf5c26fe6534d4abbe63adfe51ff4d91348.jpg?rule=ad-large already downloaded
2026-03-30 15:11:01 [crawlers.pipelines.post_to_azurebus_auto_selling] INFO: Azure Bus Pipeline processing item: 7f0b7631-63f4-570a-b4c5-c9a41a8eeb36 with identifier 3151638204
2026-03-30 15:11:01 [azure.servicebus._pyamqp.cbs] DEBUG: CBS status check: state == <CbsAuthState.OK: 0>, expired == False, refresh required == False
2026-03-30 15:11:01 [azure.servicebus._pyamqp.cbs] DEBUG: CBS status check: state == <CbsAuthState.OK: 0>, expired == False, refresh required == False
2026-03-30 15:11:01 [crawlers.pipelines.post_to_azurebus_auto_selling] DEBUG: [AzureBusPipeline] sent process item CloudEvent for item 7f0b7631-63f4-570a-b4c5-c9a41a8eeb36
2026-03-30 15:11:01 [scrapy.core.scraper] DEBUG: Scraped from <200 https://api.leboncoin.fr/finder/search>
{'auction_title': '',
 'c_o_2_emission_value': None,
 'category': None,
 'color': 'Noir',
 'currency': 'EUR',
 'description': '****** AB MOTORS ******\n'
                '\n'
                "Professionnel en Véhicules d'occasions Vous propose à la "
                'vente parmi sa sélection\n'
                "d'occasions révisées et garanties :\n"
                '\n'
                '**** AUDI A5 2.0 TDI COUPE 170 CV ****\n'
                '\n'
                '-1ere m.e.c : 29 / 09 / 2009\n'
                '-Couleur : NOIR METALLISEE\n'
                '-Kilométrage : 154 000 KMS CERTIFIÉ ET GARANTIE\n'
                '-Cylindré : 1968 cc\n'
                '-Puissance : 170 CH\n'
                '-Puissance fiscal : 9 CV\n'
                '\n'
                '**** VEHICULE DANS UN BON ETAT ****\n'
                '\n'
                '*** BEAU COUPE A5 2.0 TDI ***\n'
                '\n'
                '=== OPTIONS ===\n'
                '\n'
                '- Vitres électriques\n'
                '- Direction assistée\n'
                '- Ouverture / Fermeture centralisée\n'
                '- SIEGE CUIR\n'
                '- SIEGE ELEC\n'
                '- SIEGE CHAUFFANT\n'
                '- CLIMATISATION AUTO\n'
                '- GPS NAVIGATION\n'
                '- RADAR AV + AR\n'
                '- RETROVISEURS ELECTRIQUES\n'
                '- DETECTEUR DE PLUIE\n'
                '- FEUX AUTO\n'
                '- LED DE JOUR\n'
                '- ORDINATEUR DE BORD\n'
                '- VOLANT MULTIFONCTION\n'
                '- RADIO CD MP3\n'
                '- BLUETOOTH\n'
                '- TEL MAIN LIBRE\n'
                '- USB / AUX\n'
                '- JANTES ALU\n'
                '- ECT ECT......\n'
                '\n'
                '=== INFORMATIONS sur le VEHICULE ===\n'
                '\n'
                '-- AUCUN FRAIS À PREVOIR\n'
                '-- Intérieur et extérieur du véhicule comme NEUF !\n'
                '-- Mécanique en parfait Etat.\n'
                '-- Moteur fiable et robuste\n'
                '-- OCCASION à ne pas Rater ! À voir et à Essayer !\n'
                '\n'
                '------ Ce véhicule est vendu avec un contrôle technique '
                'récent ------\n'
                '\n'
                '============== SERVICE CARTE GRISE ===============\n'
                '\n'
                '- Nous Effectuons pour vous les démarches administrative\n'
                '\n'
                '(Cout Carte Grise et WW Provisoire en sus )\n'
                '\n'
                "- Se munir du PERMIS DE CONDUIRE + PIÈCE D'IDENTITÉ et\n"
                '\n'
                "d'un JUSTIFICATIF DE DOMICILE de moins de 3 Mois.\n"
                '\n'
                '======== PRIX: =========\n'
                '\n'
                '-- 9 490 € GARANTIE 3 MOIS ( MOTEUR/ BOITE )\n'
                '\n'
                '----- PRIX DE LA CARTE GRISE EN SUS -------\n'
                '\n'
                '----- PLUS DE PHOTOS SUR NOTRE SITE INTERNET -------\n'
                '\n'
                '-------- EXTENSION DE GARANTIE POSSIBLE ---------\n'
                '\n'
                'REPRISE POSSIBLE : A4 A6 BMW 320 330\n'
                '\n'
                '_______________________________________________________\n'
                '\n'
                '***** AB MOTORS *****\n'
                '\n'
                'ACHAT/VENTE/REPRISE\n'
                '\n'
                'VEHICULE REVISES ET GARANTIES\n'
                '\n'
                'ROUTE NATIONALE D630 59125 TRITH SAINT LEGER\n'
                '\n'
                'EN FACE DE LA ZONE YELLOW PARC ELECTRO DEPOT /CARTER CASH\n'
                '\n'
                '____________________________________________________________',
 'doors_number': 2,
 'emission_standard': None,
 'engine': None,
 'engine_horse_power': 170,
 'expiration_date': None,
 'fuel_type': 'Diesel',
 'id': '7f0b7631-63f4-570a-b4c5-c9a41a8eeb36',
 'is_damaged': False,
 'is_operable': True,
 'license_plate': None,
 'link_to_web_offer': 'https://www.leboncoin.fr/ad/voitures/3151638204',
 'listing': 'auction',
 'make': 'AUDI',
 'model': 'A5',
 'odometer': 154000,
 'odometer_reading_unit': 'km',
 'origin_country_code': 'FR',
 'original_photo_count': 5,
 'photo_urls': ['https://img.leboncoin.fr/api/v1/lbcpb1/images/fe/ab/cb/feabcb774bc99f4a13471b0600edfe29d5f19109.jpg?rule=ad-large',
                'https://img.leboncoin.fr/api/v1/lbcpb1/images/aa/ee/6e/aaee6e367cb0fa95efcd499cf8f9e34786f187a9.jpg?rule=ad-large',
                'https://img.leboncoin.fr/api/v1/lbcpb1/images/1a/0c/cc/1a0ccc79f47f3b64edf6d4b5c11aa83b48c7ce90.jpg?rule=ad-large',
                'https://img.leboncoin.fr/api/v1/lbcpb1/images/9e/4f/9c/9e4f9ce3785dcee511060bff0f14bdec41aa722e.jpg?rule=ad-large',
                'https://img.leboncoin.fr/api/v1/lbcpb1/images/a3/c0/6c/a3c06cf5c26fe6534d4abbe63adfe51ff4d91348.jpg?rule=ad-large'],
 'photos': [{'BlobStorageUrl': 'https://alxproduction.blob.core.windows.net/top-deal-listing/listing_7f0b7631-63f4-570a-b4c5-c9a41a8eeb36/7f0b7631-63f4-570a-b4c5-c9a41a8eeb36_image_0.jpg',
             'Extension': 'jpg',
             'FileSizeInBytes': 176774,
             'Height': 800,
             'OriginUrl': 'https://img.leboncoin.fr/api/v1/lbcpb1/images/fe/ab/cb/feabcb774bc99f4a13471b0600edfe29d5f19109.jpg?rule=ad-large',
             'Width': 1067},
            {'BlobStorageUrl': 'https://alxproduction.blob.core.windows.net/top-deal-listing/listing_7f0b7631-63f4-570a-b4c5-c9a41a8eeb36/7f0b7631-63f4-570a-b4c5-c9a41a8eeb36_image_1.jpg',
             'Extension': 'jpg',
             'FileSizeInBytes': 204187,
             'Height': 800,
             'OriginUrl': 'https://img.leboncoin.fr/api/v1/lbcpb1/images/aa/ee/6e/aaee6e367cb0fa95efcd499cf8f9e34786f187a9.jpg?rule=ad-large',
             'Width': 1067},
            {'BlobStorageUrl': 'https://alxproduction.blob.core.windows.net/top-deal-listing/listing_7f0b7631-63f4-570a-b4c5-c9a41a8eeb36/7f0b7631-63f4-570a-b4c5-c9a41a8eeb36_image_2.jpg',
             'Extension': 'jpg',
             'FileSizeInBytes': 109859,
             'Height': 800,
             'OriginUrl': 'https://img.leboncoin.fr/api/v1/lbcpb1/images/1a/0c/cc/1a0ccc79f47f3b64edf6d4b5c11aa83b48c7ce90.jpg?rule=ad-large',
             'Width': 1067},
            {'BlobStorageUrl': 'https://alxproduction.blob.core.windows.net/top-deal-listing/listing_7f0b7631-63f4-570a-b4c5-c9a41a8eeb36/7f0b7631-63f4-570a-b4c5-c9a41a8eeb36_image_3.jpg',
             'Extension': 'jpg',
             'FileSizeInBytes': 78193,
             'Height': 800,
             'OriginUrl': 'https://img.leboncoin.fr/api/v1/lbcpb1/images/9e/4f/9c/9e4f9ce3785dcee511060bff0f14bdec41aa722e.jpg?rule=ad-large',
             'Width': 1067},
            {'BlobStorageUrl': 'https://alxproduction.blob.core.windows.net/top-deal-listing/listing_7f0b7631-63f4-570a-b4c5-c9a41a8eeb36/7f0b7631-63f4-570a-b4c5-c9a41a8eeb36_image_4.jpg',
             'Extension': 'jpg',
             'FileSizeInBytes': 138046,
             'Height': 800,
             'OriginUrl': 'https://img.leboncoin.fr/api/v1/lbcpb1/images/a3/c0/6c/a3c06cf5c26fe6534d4abbe63adfe51ff4d91348.jpg?rule=ad-large',
             'Width': 1067}],
 'price': 9490,
 'price_includes_vat': False,
 'registration_date': '2009-09-01',
 'seats_number': 4,
 'seller_name': None,
 'title': 'Audi a5 2.0 tdi coupe 170 cv .du 09/2009 avec 154 000 kms + '
          'historique',
 'transmission': 'manual',
 'trim': None,
 'vin': None,
 'year': 2009}
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273151638204%27 HTTP/1.1" 200 None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Saving data for 3151638204: {'created_time': 1774883461.463864, 'last_price_update_time': 1774883461.463875}
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "PATCH /ScrapedListings(PartitionKey='auto_selling_leboncoin.fr',RowKey='3151638204') HTTP/1.1" 204 0
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Found listing with ID: 3075223435
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273075223435%27 HTTP/1.1" 200 None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scrape type for 3075223435: 1
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scraping new listing 3075223435
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] ERROR: Error extracting item: Field registration_date is not nullable
Traceback (most recent call last):
  File "/usr/src/app/crawlers/spiders/auto_selling_leboncoin.py", line 295, in _extract_listing_item
    item["registration_date"] = self._extract_registration_date(details_data)
    ~~~~^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/app/crawlers/items.py", line 116, in __setitem__
    raise ValueError(f"Field {key} is not nullable")
ValueError: Field registration_date is not nullable
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Extracted item: None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Found listing with ID: 3067916022
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273067916022%27 HTTP/1.1" 200 None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scrape type for 3067916022: 1
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scraping new listing 3067916022
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] ERROR: Error extracting item: Field registration_date is not nullable
Traceback (most recent call last):
  File "/usr/src/app/crawlers/spiders/auto_selling_leboncoin.py", line 295, in _extract_listing_item
    item["registration_date"] = self._extract_registration_date(details_data)
    ~~~~^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/app/crawlers/items.py", line 116, in __setitem__
    raise ValueError(f"Field {key} is not nullable")
ValueError: Field registration_date is not nullable
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Extracted item: None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Found listing with ID: 3142755936
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273142755936%27 HTTP/1.1" 200 None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scrape type for 3142755936: 1
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scraping new listing 3142755936
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] ERROR: Error extracting item: Field registration_date is not nullable
Traceback (most recent call last):
  File "/usr/src/app/crawlers/spiders/auto_selling_leboncoin.py", line 295, in _extract_listing_item
    item["registration_date"] = self._extract_registration_date(details_data)
    ~~~~^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/app/crawlers/items.py", line 116, in __setitem__
    raise ValueError(f"Field {key} is not nullable")
ValueError: Field registration_date is not nullable
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Extracted item: None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Found listing with ID: 3142739892
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273142739892%27 HTTP/1.1" 200 None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scrape type for 3142739892: 1
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scraping new listing 3142739892
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] ERROR: Error extracting item: Field registration_date is not nullable
Traceback (most recent call last):
  File "/usr/src/app/crawlers/spiders/auto_selling_leboncoin.py", line 295, in _extract_listing_item
    item["registration_date"] = self._extract_registration_date(details_data)
    ~~~~^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/app/crawlers/items.py", line 116, in __setitem__
    raise ValueError(f"Field {key} is not nullable")
ValueError: Field registration_date is not nullable
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Extracted item: None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Found listing with ID: 3142727299
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273142727299%27 HTTP/1.1" 200 None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scrape type for 3142727299: 1
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scraping new listing 3142727299
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] ERROR: Error extracting item: Field registration_date is not nullable
Traceback (most recent call last):
  File "/usr/src/app/crawlers/spiders/auto_selling_leboncoin.py", line 295, in _extract_listing_item
    item["registration_date"] = self._extract_registration_date(details_data)
    ~~~~^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/app/crawlers/items.py", line 116, in __setitem__
    raise ValueError(f"Field {key} is not nullable")
ValueError: Field registration_date is not nullable
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Extracted item: None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Found listing with ID: 3141157360
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273141157360%27 HTTP/1.1" 200 None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scrape type for 3141157360: 1
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scraping new listing 3141157360
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] ERROR: Error extracting item: Field registration_date is not nullable
Traceback (most recent call last):
  File "/usr/src/app/crawlers/spiders/auto_selling_leboncoin.py", line 295, in _extract_listing_item
    item["registration_date"] = self._extract_registration_date(details_data)
    ~~~~^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/app/crawlers/items.py", line 116, in __setitem__
    raise ValueError(f"Field {key} is not nullable")
ValueError: Field registration_date is not nullable
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Extracted item: None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Found listing with ID: 3141126689
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273141126689%27 HTTP/1.1" 200 None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scrape type for 3141126689: 1
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scraping new listing 3141126689
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] ERROR: Error extracting item: Field registration_date is not nullable
Traceback (most recent call last):
  File "/usr/src/app/crawlers/spiders/auto_selling_leboncoin.py", line 295, in _extract_listing_item
    item["registration_date"] = self._extract_registration_date(details_data)
    ~~~~^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/app/crawlers/items.py", line 116, in __setitem__
    raise ValueError(f"Field {key} is not nullable")
ValueError: Field registration_date is not nullable
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Extracted item: None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Found listing with ID: 2837810228
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%272837810228%27 HTTP/1.1" 200 None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scrape type for 2837810228: 1
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scraping new listing 2837810228
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] ERROR: Error extracting item: Field registration_date is not nullable
Traceback (most recent call last):
  File "/usr/src/app/crawlers/spiders/auto_selling_leboncoin.py", line 295, in _extract_listing_item
    item["registration_date"] = self._extract_registration_date(details_data)
    ~~~~^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/app/crawlers/items.py", line 116, in __setitem__
    raise ValueError(f"Field {key} is not nullable")
ValueError: Field registration_date is not nullable
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Extracted item: None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Found listing with ID: 3063385664
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273063385664%27 HTTP/1.1" 200 None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scrape type for 3063385664: 1
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scraping new listing 3063385664
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] ERROR: Error extracting item: Field registration_date is not nullable
Traceback (most recent call last):
  File "/usr/src/app/crawlers/spiders/auto_selling_leboncoin.py", line 295, in _extract_listing_item
    item["registration_date"] = self._extract_registration_date(details_data)
    ~~~~^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/app/crawlers/items.py", line 116, in __setitem__
    raise ValueError(f"Field {key} is not nullable")
ValueError: Field registration_date is not nullable
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Extracted item: None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Found listing with ID: 2838402100
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%272838402100%27 HTTP/1.1" 200 None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scrape type for 2838402100: 1
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scraping new listing 2838402100
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] ERROR: Error extracting item: Field registration_date is not nullable
Traceback (most recent call last):
  File "/usr/src/app/crawlers/spiders/auto_selling_leboncoin.py", line 295, in _extract_listing_item
    item["registration_date"] = self._extract_registration_date(details_data)
    ~~~~^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/app/crawlers/items.py", line 116, in __setitem__
    raise ValueError(f"Field {key} is not nullable")
ValueError: Field registration_date is not nullable
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Extracted item: None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Found listing with ID: 3063947250
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273063947250%27 HTTP/1.1" 200 None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scrape type for 3063947250: 1
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scraping new listing 3063947250
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] ERROR: Error extracting item: Field registration_date is not nullable
Traceback (most recent call last):
  File "/usr/src/app/crawlers/spiders/auto_selling_leboncoin.py", line 295, in _extract_listing_item
    item["registration_date"] = self._extract_registration_date(details_data)
    ~~~~^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/app/crawlers/items.py", line 116, in __setitem__
    raise ValueError(f"Field {key} is not nullable")
ValueError: Field registration_date is not nullable
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Extracted item: None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Found listing with ID: 3063942358
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273063942358%27 HTTP/1.1" 200 None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scrape type for 3063942358: 1
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scraping new listing 3063942358
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] ERROR: Error extracting item: Field registration_date is not nullable
Traceback (most recent call last):
  File "/usr/src/app/crawlers/spiders/auto_selling_leboncoin.py", line 295, in _extract_listing_item
    item["registration_date"] = self._extract_registration_date(details_data)
    ~~~~^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/app/crawlers/items.py", line 116, in __setitem__
    raise ValueError(f"Field {key} is not nullable")
ValueError: Field registration_date is not nullable
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Extracted item: None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Found listing with ID: 3063377877
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273063377877%27 HTTP/1.1" 200 None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scrape type for 3063377877: 1
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scraping new listing 3063377877
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] ERROR: Error extracting item: Field registration_date is not nullable
Traceback (most recent call last):
  File "/usr/src/app/crawlers/spiders/auto_selling_leboncoin.py", line 295, in _extract_listing_item
    item["registration_date"] = self._extract_registration_date(details_data)
    ~~~~^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/app/crawlers/items.py", line 116, in __setitem__
    raise ValueError(f"Field {key} is not nullable")
ValueError: Field registration_date is not nullable
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Extracted item: None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Found listing with ID: 3132577838
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273132577838%27 HTTP/1.1" 200 None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scrape type for 3132577838: 1
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scraping new listing 3132577838
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] ERROR: Error extracting item: Field registration_date is not nullable
Traceback (most recent call last):
  File "/usr/src/app/crawlers/spiders/auto_selling_leboncoin.py", line 295, in _extract_listing_item
    item["registration_date"] = self._extract_registration_date(details_data)
    ~~~~^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/app/crawlers/items.py", line 116, in __setitem__
    raise ValueError(f"Field {key} is not nullable")
ValueError: Field registration_date is not nullable
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Extracted item: None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Found listing with ID: 3131623171
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273131623171%27 HTTP/1.1" 200 None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scrape type for 3131623171: 1
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Scraping new listing 3131623171
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Extracted item: {'auction_title': '',
 'c_o_2_emission_value': None,
 'category': None,
 'color': 'Gris',
 'currency': 'EUR',
 'description': '****** AB MOTORS ******\n'
                '\n'
                "Professionnel en Véhicules d'occasions Vous propose à la "
                'vente parmi sa sélection\n'
                "d'occasions révisées et garanties :\n"
                '\n'
                '**** PEUGEOT 307 SW 1.6 HDI 90 CV ****\n'
                '\n'
                '-1ere m.e.c : 19 / 06 / 2006\n'
                '-Couleur : GRIS METALLISEE\n'
                '-Kilométrage : 156 000 KMS CERTIFIÉ ET GARANTIE\n'
                '-Cylindré : 1560 cc\n'
                '-Puissance : 90 CH\n'
                '-Puissance fiscal : 5 CV\n'
                '\n'
                '**** VEHICULE DANS UN TRES BON ETAT ****\n'
                '\n'
                '*** 1 ER MAIN + HISTORIQUE KILOMETRIQUE ***\n'
                '\n'
                '=== OPTIONS ===\n'
                '\n'
                '- Vitres électriques\n'
                '- Direction assistée\n'
                '- Ouverture / Fermeture centralisée\n'
                '- CLIMATISATION AUTO\n'
                '- RETROVISEURS ELECTRIQUES\n'
                '- DETECTEUR DE PLUIE\n'
                '- FEUX AUTO\n'
                '- REGULATEUR DE VITESSE\n'
                '- LIMITEUR DE VITESSE\n'
                '- ORDINATEUR DE BORD\n'
                '- VOLANT MULTIFONCTION\n'
                '- RADAR AR\n'
                '- RADIO CD MP3\n'
                '- JANTES ALU\n'
                '- ECT ECT......\n'
                '\n'
                '=== INFORMATIONS sur le VEHICULE ===\n'
                '\n'
                '-- AUCUN FRAIS À PREVOIR\n'
                '-- Intérieur et extérieur du véhicule comme NEUF !\n'
                '-- Mécanique en parfait Etat.\n'
                '-- Moteur fiable et robuste\n'
                '-- OCCASION à ne pas Rater ! À voir et à Essayer !\n'
                '\n'
                '------ Ce véhicule est vendu avec un contrôle technique '
                'récent ------\n'
                '\n'
                '============== SERVICE CARTE GRISE ===============\n'
                '\n'
                '- Nous Effectuons pour vous les démarches administrative\n'
                '\n'
                '(Cout Carte Grise et WW Provisoire en sus )\n'
                '\n'
                "- Se munir du PERMIS DE CONDUIRE + PIÈCE D'IDENTITÉ et\n"
                '\n'
                "d'un JUSTIFICATIF DE DOMICILE de moins de 3 Mois.\n"
                '\n'
                '======== PRIX: =========\n'
                '\n'
                '-- 4 990 € GARANTIE 3 MOIS ( MOTEUR/ BOITE )\n'
                '\n'
                '-------- EXTENSION DE GARANTIE POSSIBLE ---------\n'
                '\n'
                '----- PRIX DE LA CARTE GRISE EN SUS -------\n'
                '\n'
                '----- PLUS DE PHOTOS SUR NOTRE SITE INTERNET -------\n'
                '\n'
                'REPRISE POSSIBLE : A4 A6 BMW 320 330\n'
                '\n'
                '_______________________________________________________\n'
                '\n'
                '***** AB MOTORS *****\n'
                '\n'
                'ACHAT/VENTE/REPRISE\n'
                '\n'
                'VEHICULE REVISES ET GARANTIES\n'
                '\n'
                'ROUTE NATIONALE D630 59125 TRITH SAINT LEGER\n'
                '\n'
                'EN FACE DE LA ZONE YELLOW PARC ELECTRO DEPOT /CARTER CASH\n'
                '\n'
                '_____________________________________________________________',
 'doors_number': 5,
 'emission_standard': None,
 'engine': None,
 'engine_horse_power': 90,
 'expiration_date': None,
 'fuel_type': 'Diesel',
 'is_damaged': False,
 'is_operable': True,
 'license_plate': None,
 'link_to_web_offer': 'https://www.leboncoin.fr/ad/voitures/3131623171',
 'listing': 'auction',
 'make': 'PEUGEOT',
 'model': '307',
 'odometer': 156000,
 'odometer_reading_unit': 'km',
 'origin_country_code': 'FR',
 'original_photo_count': 0,
 'photo_urls': ['https://img.leboncoin.fr/api/v1/lbcpb1/images/f4/3d/59/f43d59d1dbdd92ba1802119822397f240524cbe0.jpg?rule=ad-large',
                'https://img.leboncoin.fr/api/v1/lbcpb1/images/91/c3/c5/91c3c542c9ab0e34ace18dae4035343ef0e3fad4.jpg?rule=ad-large',
                'https://img.leboncoin.fr/api/v1/lbcpb1/images/00/dd/8d/00dd8dad7a09c50f00f416ae6743e5a3965589de.jpg?rule=ad-large',
                'https://img.leboncoin.fr/api/v1/lbcpb1/images/f7/53/aa/f753aaa48d4ed94b173423cea1b1e975b923f676.jpg?rule=ad-large',
                'https://img.leboncoin.fr/api/v1/lbcpb1/images/fe/90/fb/fe90fb5f7b6c122c31c7cd4783d4cbdf39341f7b.jpg?rule=ad-large'],
 'price': 4990,
 'price_includes_vat': False,
 'registration_date': '2006-06-01',
 'seats_number': 5,
 'seller_name': None,
 'title': 'Peugeot 307 sw 1.6 hdi 90 cv .du 06/2006 avec 156 000 kms',
 'transmission': 'manual',
 'trim': None,
 'vin': None,
 'year': 2006}
2026-03-30 15:11:01 [crawlers.auto_selling.middlewares.id_gen_middleware] INFO: Generated ID for item: 2fbb1281-b3be-5adb-85b5-f50bd2fc3d94 with identifier: 3131623171
2026-03-30 15:11:01 [crawlers.middlewares.photo_download_middleware] INFO: Downloading 5 photos for item 2fbb1281-b3be-5adb-85b5-f50bd2fc3d94
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /PhotoDownloadCache()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%27https%3A%252F%252Fimg.leboncoin.fr%252Fapi%252Fv1%252Flbcpb1%252Fimages%252Ff4%252F3d%252F59%252Ff43d59d1dbdd92ba1802119822397f240524cbe0.jpg%253Frule%3Dad-large%27 HTTP/1.1" 200 None
2026-03-30 15:11:01 [crawlers.middlewares.photo_download_middleware] INFO: Image https://img.leboncoin.fr/api/v1/lbcpb1/images/f4/3d/59/f43d59d1dbdd92ba1802119822397f240524cbe0.jpg?rule=ad-large already downloaded
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /PhotoDownloadCache()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%27https%3A%252F%252Fimg.leboncoin.fr%252Fapi%252Fv1%252Flbcpb1%252Fimages%252F91%252Fc3%252Fc5%252F91c3c542c9ab0e34ace18dae4035343ef0e3fad4.jpg%253Frule%3Dad-large%27 HTTP/1.1" 200 None
2026-03-30 15:11:01 [crawlers.middlewares.photo_download_middleware] INFO: Image https://img.leboncoin.fr/api/v1/lbcpb1/images/91/c3/c5/91c3c542c9ab0e34ace18dae4035343ef0e3fad4.jpg?rule=ad-large already downloaded
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /PhotoDownloadCache()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%27https%3A%252F%252Fimg.leboncoin.fr%252Fapi%252Fv1%252Flbcpb1%252Fimages%252F00%252Fdd%252F8d%252F00dd8dad7a09c50f00f416ae6743e5a3965589de.jpg%253Frule%3Dad-large%27 HTTP/1.1" 200 None
2026-03-30 15:11:01 [crawlers.middlewares.photo_download_middleware] INFO: Image https://img.leboncoin.fr/api/v1/lbcpb1/images/00/dd/8d/00dd8dad7a09c50f00f416ae6743e5a3965589de.jpg?rule=ad-large already downloaded
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /PhotoDownloadCache()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%27https%3A%252F%252Fimg.leboncoin.fr%252Fapi%252Fv1%252Flbcpb1%252Fimages%252Ff7%252F53%252Faa%252Ff753aaa48d4ed94b173423cea1b1e975b923f676.jpg%253Frule%3Dad-large%27 HTTP/1.1" 200 None
2026-03-30 15:11:01 [crawlers.middlewares.photo_download_middleware] INFO: Image https://img.leboncoin.fr/api/v1/lbcpb1/images/f7/53/aa/f753aaa48d4ed94b173423cea1b1e975b923f676.jpg?rule=ad-large already downloaded
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /PhotoDownloadCache()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%27https%3A%252F%252Fimg.leboncoin.fr%252Fapi%252Fv1%252Flbcpb1%252Fimages%252Ffe%252F90%252Ffb%252Ffe90fb5f7b6c122c31c7cd4783d4cbdf39341f7b.jpg%253Frule%3Dad-large%27 HTTP/1.1" 200 None
2026-03-30 15:11:01 [crawlers.middlewares.photo_download_middleware] INFO: Image https://img.leboncoin.fr/api/v1/lbcpb1/images/fe/90/fb/fe90fb5f7b6c122c31c7cd4783d4cbdf39341f7b.jpg?rule=ad-large already downloaded
2026-03-30 15:11:01 [crawlers.pipelines.post_to_azurebus_auto_selling] INFO: Azure Bus Pipeline processing item: 2fbb1281-b3be-5adb-85b5-f50bd2fc3d94 with identifier 3131623171
2026-03-30 15:11:01 [azure.servicebus._pyamqp.cbs] DEBUG: CBS status check: state == <CbsAuthState.OK: 0>, expired == False, refresh required == False
2026-03-30 15:11:01 [azure.servicebus._pyamqp.cbs] DEBUG: CBS status check: state == <CbsAuthState.OK: 0>, expired == False, refresh required == False
2026-03-30 15:11:01 [crawlers.pipelines.post_to_azurebus_auto_selling] DEBUG: [AzureBusPipeline] sent process item CloudEvent for item 2fbb1281-b3be-5adb-85b5-f50bd2fc3d94
2026-03-30 15:11:01 [scrapy.core.scraper] DEBUG: Scraped from <200 https://api.leboncoin.fr/finder/search>
{'auction_title': '',
 'c_o_2_emission_value': None,
 'category': None,
 'color': 'Gris',
 'currency': 'EUR',
 'description': '****** AB MOTORS ******\n'
                '\n'
                "Professionnel en Véhicules d'occasions Vous propose à la "
                'vente parmi sa sélection\n'
                "d'occasions révisées et garanties :\n"
                '\n'
                '**** PEUGEOT 307 SW 1.6 HDI 90 CV ****\n'
                '\n'
                '-1ere m.e.c : 19 / 06 / 2006\n'
                '-Couleur : GRIS METALLISEE\n'
                '-Kilométrage : 156 000 KMS CERTIFIÉ ET GARANTIE\n'
                '-Cylindré : 1560 cc\n'
                '-Puissance : 90 CH\n'
                '-Puissance fiscal : 5 CV\n'
                '\n'
                '**** VEHICULE DANS UN TRES BON ETAT ****\n'
                '\n'
                '*** 1 ER MAIN + HISTORIQUE KILOMETRIQUE ***\n'
                '\n'
                '=== OPTIONS ===\n'
                '\n'
                '- Vitres électriques\n'
                '- Direction assistée\n'
                '- Ouverture / Fermeture centralisée\n'
                '- CLIMATISATION AUTO\n'
                '- RETROVISEURS ELECTRIQUES\n'
                '- DETECTEUR DE PLUIE\n'
                '- FEUX AUTO\n'
                '- REGULATEUR DE VITESSE\n'
                '- LIMITEUR DE VITESSE\n'
                '- ORDINATEUR DE BORD\n'
                '- VOLANT MULTIFONCTION\n'
                '- RADAR AR\n'
                '- RADIO CD MP3\n'
                '- JANTES ALU\n'
                '- ECT ECT......\n'
                '\n'
                '=== INFORMATIONS sur le VEHICULE ===\n'
                '\n'
                '-- AUCUN FRAIS À PREVOIR\n'
                '-- Intérieur et extérieur du véhicule comme NEUF !\n'
                '-- Mécanique en parfait Etat.\n'
                '-- Moteur fiable et robuste\n'
                '-- OCCASION à ne pas Rater ! À voir et à Essayer !\n'
                '\n'
                '------ Ce véhicule est vendu avec un contrôle technique '
                'récent ------\n'
                '\n'
                '============== SERVICE CARTE GRISE ===============\n'
                '\n'
                '- Nous Effectuons pour vous les démarches administrative\n'
                '\n'
                '(Cout Carte Grise et WW Provisoire en sus )\n'
                '\n'
                "- Se munir du PERMIS DE CONDUIRE + PIÈCE D'IDENTITÉ et\n"
                '\n'
                "d'un JUSTIFICATIF DE DOMICILE de moins de 3 Mois.\n"
                '\n'
                '======== PRIX: =========\n'
                '\n'
                '-- 4 990 € GARANTIE 3 MOIS ( MOTEUR/ BOITE )\n'
                '\n'
                '-------- EXTENSION DE GARANTIE POSSIBLE ---------\n'
                '\n'
                '----- PRIX DE LA CARTE GRISE EN SUS -------\n'
                '\n'
                '----- PLUS DE PHOTOS SUR NOTRE SITE INTERNET -------\n'
                '\n'
                'REPRISE POSSIBLE : A4 A6 BMW 320 330\n'
                '\n'
                '_______________________________________________________\n'
                '\n'
                '***** AB MOTORS *****\n'
                '\n'
                'ACHAT/VENTE/REPRISE\n'
                '\n'
                'VEHICULE REVISES ET GARANTIES\n'
                '\n'
                'ROUTE NATIONALE D630 59125 TRITH SAINT LEGER\n'
                '\n'
                'EN FACE DE LA ZONE YELLOW PARC ELECTRO DEPOT /CARTER CASH\n'
                '\n'
                '_____________________________________________________________',
 'doors_number': 5,
 'emission_standard': None,
 'engine': None,
 'engine_horse_power': 90,
 'expiration_date': None,
 'fuel_type': 'Diesel',
 'id': '2fbb1281-b3be-5adb-85b5-f50bd2fc3d94',
 'is_damaged': False,
 'is_operable': True,
 'license_plate': None,
 'link_to_web_offer': 'https://www.leboncoin.fr/ad/voitures/3131623171',
 'listing': 'auction',
 'make': 'PEUGEOT',
 'model': '307',
 'odometer': 156000,
 'odometer_reading_unit': 'km',
 'origin_country_code': 'FR',
 'original_photo_count': 5,
 'photo_urls': ['https://img.leboncoin.fr/api/v1/lbcpb1/images/f4/3d/59/f43d59d1dbdd92ba1802119822397f240524cbe0.jpg?rule=ad-large',
                'https://img.leboncoin.fr/api/v1/lbcpb1/images/91/c3/c5/91c3c542c9ab0e34ace18dae4035343ef0e3fad4.jpg?rule=ad-large',
                'https://img.leboncoin.fr/api/v1/lbcpb1/images/00/dd/8d/00dd8dad7a09c50f00f416ae6743e5a3965589de.jpg?rule=ad-large',
                'https://img.leboncoin.fr/api/v1/lbcpb1/images/f7/53/aa/f753aaa48d4ed94b173423cea1b1e975b923f676.jpg?rule=ad-large',
                'https://img.leboncoin.fr/api/v1/lbcpb1/images/fe/90/fb/fe90fb5f7b6c122c31c7cd4783d4cbdf39341f7b.jpg?rule=ad-large'],
 'photos': [{'BlobStorageUrl': 'https://alxproduction.blob.core.windows.net/top-deal-listing/listing_2fbb1281-b3be-5adb-85b5-f50bd2fc3d94/2fbb1281-b3be-5adb-85b5-f50bd2fc3d94_image_0.jpg',
             'Extension': 'jpg',
             'FileSizeInBytes': 166747,
             'Height': 800,
             'OriginUrl': 'https://img.leboncoin.fr/api/v1/lbcpb1/images/f4/3d/59/f43d59d1dbdd92ba1802119822397f240524cbe0.jpg?rule=ad-large',
             'Width': 1067},
            {'BlobStorageUrl': 'https://alxproduction.blob.core.windows.net/top-deal-listing/listing_2fbb1281-b3be-5adb-85b5-f50bd2fc3d94/2fbb1281-b3be-5adb-85b5-f50bd2fc3d94_image_1.jpg',
             'Extension': 'jpg',
             'FileSizeInBytes': 189832,
             'Height': 800,
             'OriginUrl': 'https://img.leboncoin.fr/api/v1/lbcpb1/images/91/c3/c5/91c3c542c9ab0e34ace18dae4035343ef0e3fad4.jpg?rule=ad-large',
             'Width': 1067},
            {'BlobStorageUrl': 'https://alxproduction.blob.core.windows.net/top-deal-listing/listing_2fbb1281-b3be-5adb-85b5-f50bd2fc3d94/2fbb1281-b3be-5adb-85b5-f50bd2fc3d94_image_2.jpg',
             'Extension': 'jpg',
             'FileSizeInBytes': 157809,
             'Height': 800,
             'OriginUrl': 'https://img.leboncoin.fr/api/v1/lbcpb1/images/00/dd/8d/00dd8dad7a09c50f00f416ae6743e5a3965589de.jpg?rule=ad-large',
             'Width': 1067},
            {'BlobStorageUrl': 'https://alxproduction.blob.core.windows.net/top-deal-listing/listing_2fbb1281-b3be-5adb-85b5-f50bd2fc3d94/2fbb1281-b3be-5adb-85b5-f50bd2fc3d94_image_3.jpg',
             'Extension': 'jpg',
             'FileSizeInBytes': 147272,
             'Height': 800,
             'OriginUrl': 'https://img.leboncoin.fr/api/v1/lbcpb1/images/f7/53/aa/f753aaa48d4ed94b173423cea1b1e975b923f676.jpg?rule=ad-large',
             'Width': 1067},
            {'BlobStorageUrl': 'https://alxproduction.blob.core.windows.net/top-deal-listing/listing_2fbb1281-b3be-5adb-85b5-f50bd2fc3d94/2fbb1281-b3be-5adb-85b5-f50bd2fc3d94_image_4.jpg',
             'Extension': 'jpg',
             'FileSizeInBytes': 149081,
             'Height': 800,
             'OriginUrl': 'https://img.leboncoin.fr/api/v1/lbcpb1/images/fe/90/fb/fe90fb5f7b6c122c31c7cd4783d4cbdf39341f7b.jpg?rule=ad-large',
             'Width': 1067}],
 'price': 4990,
 'price_includes_vat': False,
 'registration_date': '2006-06-01',
 'seats_number': 5,
 'seller_name': None,
 'title': 'Peugeot 307 sw 1.6 hdi 90 cv .du 06/2006 avec 156 000 kms',
 'transmission': 'manual',
 'trim': None,
 'vin': None,
 'year': 2006}
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273131623171%27 HTTP/1.1" 200 None
2026-03-30 15:11:01 [auto_selling_leboncoin.fr] INFO: Saving data for 3131623171: {'created_time': 1774883461.953716, 'last_price_update_time': 1774883461.953731}
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:01 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "PATCH /ScrapedListings(PartitionKey='auto_selling_leboncoin.fr',RowKey='3131623171') HTTP/1.1" 204 0
2026-03-30 15:11:02 [auto_selling_leboncoin.fr] INFO: No more listings found to scrape
2026-03-30 15:11:02 [scrapy.core.engine] INFO: Closing spider (finished)
2026-03-30 15:11:02 [crawlers.pipelines.save_to_cdlq_db_auto_selling] DEBUG: [SaveToCdlqDbAutoSelling] failed to close cursor: 'SaveToCdlqDbAutoSelling' object has no attribute 'cursor'
2026-03-30 15:11:02 [crawlers.pipelines.save_to_cdlq_db_auto_selling] DEBUG: [SaveToCdlqDbAutoSelling] failed to close connection: 'SaveToCdlqDbAutoSelling' object has no attribute 'conn'
2026-03-30 15:11:02 [azure.servicebus._pyamqp.cbs] DEBUG: CBS status check: state == <CbsAuthState.OK: 0>, expired == False, refresh required == False
2026-03-30 15:11:02 [azure.servicebus._pyamqp.cbs] DEBUG: CBS status check: state == <CbsAuthState.OK: 0>, expired == False, refresh required == False
2026-03-30 15:11:02 [crawlers.pipelines.post_to_azurebus_auto_selling] DEBUG: [AzureBusPipeline] sent process scrape complete CloudEvent for item 4a8df3aa2c1f11f18e133aacc95538c6
2026-03-30 15:11:02 [azure.servicebus._pyamqp.link] INFO: Link state changed: <LinkState.ATTACHED: 3> -> <LinkState.DETACH_SENT: 4>
2026-03-30 15:11:02 [azure.servicebus._pyamqp.link] INFO: Link state changed: <LinkState.ATTACHED: 3> -> <LinkState.DETACH_SENT: 4>
2026-03-30 15:11:02 [azure.servicebus._pyamqp.management_link] INFO: Management link receiver state changed: <LinkState.ATTACHED: 3> -> <LinkState.DETACH_SENT: 4>
2026-03-30 15:11:02 [azure.servicebus._pyamqp.link] INFO: Link state changed: <LinkState.ATTACHED: 3> -> <LinkState.DETACH_SENT: 4>
2026-03-30 15:11:02 [azure.servicebus._pyamqp.management_link] INFO: Management link sender state changed: <LinkState.ATTACHED: 3> -> <LinkState.DETACH_SENT: 4>
2026-03-30 15:11:02 [azure.servicebus._pyamqp.session] INFO: Session state changed: <SessionState.MAPPED: 3> -> <SessionState.END_SENT: 4>
2026-03-30 15:11:02 [azure.servicebus._pyamqp._connection] INFO: Connection state changed: <ConnectionState.OPENED: 9> -> <ConnectionState.CLOSE_SENT: 11>
2026-03-30 15:11:02 [azure.servicebus._pyamqp._connection] INFO: Connection state changed: <ConnectionState.CLOSE_SENT: 11> -> <ConnectionState.END: 13>
2026-03-30 15:11:02 [azure.servicebus._pyamqp.session] INFO: Session state changed: <SessionState.END_SENT: 4> -> <SessionState.DISCARDING: 6>
2026-03-30 15:11:02 [azure.servicebus._pyamqp.link] INFO: Link state changed: <LinkState.DETACH_SENT: 4> -> <LinkState.DETACHED: 0>
2026-03-30 15:11:02 [azure.servicebus._pyamqp.management_link] INFO: Management link sender state changed: <LinkState.DETACH_SENT: 4> -> <LinkState.DETACHED: 0>
2026-03-30 15:11:02 [azure.servicebus._pyamqp.link] INFO: Link state changed: <LinkState.DETACH_SENT: 4> -> <LinkState.DETACHED: 0>
2026-03-30 15:11:02 [azure.servicebus._pyamqp.management_link] INFO: Management link receiver state changed: <LinkState.DETACH_SENT: 4> -> <LinkState.DETACHED: 0>
2026-03-30 15:11:02 [azure.servicebus._pyamqp.link] INFO: Link state changed: <LinkState.DETACH_SENT: 4> -> <LinkState.DETACHED: 0>
2026-03-30 15:11:02 [azure.servicebus._pyamqp._transport] DEBUG: Transport endpoint is already disconnected: OSError(107, 'Transport endpoint is not connected')
2026-03-30 15:11:02 [crawlers.pipelines.post_to_azurebus_auto_selling] INFO: [AzureBusPipeline] connection closed
2026-03-30 15:11:02 [auto_selling_leboncoin.fr] INFO: auto_selling_leboncoin.fr Crawl ended with reason finished, scrape types: {<ScrapeType.NEW: 1>: 0, <ScrapeType.NEW_DUPLICATE_ID: 4>: 0, <ScrapeType.PRICE_UPDATE: 2>: 0, <ScrapeType.AUCTION_UPDATE: 3>: 0, <ScrapeType.SKIPPED: 0>: 0}
2026-03-30 15:11:02 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:02 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273142727299%27 HTTP/1.1" 200 None
2026-03-30 15:11:02 [auto_selling_leboncoin.fr] INFO: Saving data for 3142727299: {'created_time': 1774883462.611956}
2026-03-30 15:11:02 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:02 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "PATCH /ScrapedListings(PartitionKey='auto_selling_leboncoin.fr',RowKey='3142727299') HTTP/1.1" 204 0
2026-03-30 15:11:02 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:02 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273142755936%27 HTTP/1.1" 200 None
2026-03-30 15:11:02 [auto_selling_leboncoin.fr] INFO: Saving data for 3142755936: {'created_time': 1774883462.670914}
2026-03-30 15:11:02 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:02 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "PATCH /ScrapedListings(PartitionKey='auto_selling_leboncoin.fr',RowKey='3142755936') HTTP/1.1" 204 0
2026-03-30 15:11:02 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:02 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273155176435%27 HTTP/1.1" 200 None
2026-03-30 15:11:02 [auto_selling_leboncoin.fr] INFO: Saving data for 3155176435: {'created_time': 1774883462.709785}
2026-03-30 15:11:02 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:02 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "PATCH /ScrapedListings(PartitionKey='auto_selling_leboncoin.fr',RowKey='3155176435') HTTP/1.1" 204 0
2026-03-30 15:11:02 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:02 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%272837810228%27 HTTP/1.1" 200 None
2026-03-30 15:11:02 [auto_selling_leboncoin.fr] INFO: Saving data for 2837810228: {'created_time': 1774883462.761936}
2026-03-30 15:11:02 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:02 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "PATCH /ScrapedListings(PartitionKey='auto_selling_leboncoin.fr',RowKey='2837810228') HTTP/1.1" 204 0
2026-03-30 15:11:02 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:02 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273151141229%27 HTTP/1.1" 200 None
2026-03-30 15:11:02 [auto_selling_leboncoin.fr] INFO: Saving data for 3151141229: {'created_time': 1774883462.808815}
2026-03-30 15:11:02 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:02 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "PATCH /ScrapedListings(PartitionKey='auto_selling_leboncoin.fr',RowKey='3151141229') HTTP/1.1" 204 0
2026-03-30 15:11:02 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:02 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273141157360%27 HTTP/1.1" 200 None
2026-03-30 15:11:02 [auto_selling_leboncoin.fr] INFO: Saving data for 3141157360: {'created_time': 1774883462.848003}
2026-03-30 15:11:02 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:02 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "PATCH /ScrapedListings(PartitionKey='auto_selling_leboncoin.fr',RowKey='3141157360') HTTP/1.1" 204 0
2026-03-30 15:11:02 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:02 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273142739892%27 HTTP/1.1" 200 None
2026-03-30 15:11:02 [auto_selling_leboncoin.fr] INFO: Saving data for 3142739892: {'created_time': 1774883462.889657}
2026-03-30 15:11:02 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:02 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "PATCH /ScrapedListings(PartitionKey='auto_selling_leboncoin.fr',RowKey='3142739892') HTTP/1.1" 204 0
2026-03-30 15:11:02 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:02 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273063377877%27 HTTP/1.1" 200 None
2026-03-30 15:11:02 [auto_selling_leboncoin.fr] INFO: Saving data for 3063377877: {'created_time': 1774883462.920853}
2026-03-30 15:11:02 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:02 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "PATCH /ScrapedListings(PartitionKey='auto_selling_leboncoin.fr',RowKey='3063377877') HTTP/1.1" 204 0
2026-03-30 15:11:02 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:02 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273141126689%27 HTTP/1.1" 200 None
2026-03-30 15:11:02 [auto_selling_leboncoin.fr] INFO: Saving data for 3141126689: {'created_time': 1774883462.966808}
2026-03-30 15:11:02 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:02 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "PATCH /ScrapedListings(PartitionKey='auto_selling_leboncoin.fr',RowKey='3141126689') HTTP/1.1" 204 0
2026-03-30 15:11:02 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273075223435%27 HTTP/1.1" 200 None
2026-03-30 15:11:03 [auto_selling_leboncoin.fr] INFO: Saving data for 3075223435: {'created_time': 1774883463.007198}
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "PATCH /ScrapedListings(PartitionKey='auto_selling_leboncoin.fr',RowKey='3075223435') HTTP/1.1" 204 0
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273067916022%27 HTTP/1.1" 200 None
2026-03-30 15:11:03 [auto_selling_leboncoin.fr] INFO: Saving data for 3067916022: {'created_time': 1774883463.046901}
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "PATCH /ScrapedListings(PartitionKey='auto_selling_leboncoin.fr',RowKey='3067916022') HTTP/1.1" 204 0
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273151159472%27 HTTP/1.1" 200 None
2026-03-30 15:11:03 [auto_selling_leboncoin.fr] INFO: Saving data for 3151159472: {'created_time': 1774883463.084532}
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "PATCH /ScrapedListings(PartitionKey='auto_selling_leboncoin.fr',RowKey='3151159472') HTTP/1.1" 204 0
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273039023035%27 HTTP/1.1" 200 None
2026-03-30 15:11:03 [auto_selling_leboncoin.fr] INFO: Saving data for 3039023035: {'created_time': 1774883463.122736}
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "PATCH /ScrapedListings(PartitionKey='auto_selling_leboncoin.fr',RowKey='3039023035') HTTP/1.1" 204 0
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273132577838%27 HTTP/1.1" 200 None
2026-03-30 15:11:03 [auto_selling_leboncoin.fr] INFO: Saving data for 3132577838: {'created_time': 1774883463.167138}
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "PATCH /ScrapedListings(PartitionKey='auto_selling_leboncoin.fr',RowKey='3132577838') HTTP/1.1" 204 0
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273063942358%27 HTTP/1.1" 200 None
2026-03-30 15:11:03 [auto_selling_leboncoin.fr] INFO: Saving data for 3063942358: {'created_time': 1774883463.234747}
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "PATCH /ScrapedListings(PartitionKey='auto_selling_leboncoin.fr',RowKey='3063942358') HTTP/1.1" 204 0
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273155234568%27 HTTP/1.1" 200 None
2026-03-30 15:11:03 [auto_selling_leboncoin.fr] INFO: Saving data for 3155234568: {'created_time': 1774883463.276074}
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "PATCH /ScrapedListings(PartitionKey='auto_selling_leboncoin.fr',RowKey='3155234568') HTTP/1.1" 204 0
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273151170246%27 HTTP/1.1" 200 None
2026-03-30 15:11:03 [auto_selling_leboncoin.fr] INFO: Saving data for 3151170246: {'created_time': 1774883463.339308}
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "PATCH /ScrapedListings(PartitionKey='auto_selling_leboncoin.fr',RowKey='3151170246') HTTP/1.1" 204 0
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273151623560%27 HTTP/1.1" 200 None
2026-03-30 15:11:03 [auto_selling_leboncoin.fr] INFO: Saving data for 3151623560: {'created_time': 1774883463.372056}
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "PATCH /ScrapedListings(PartitionKey='auto_selling_leboncoin.fr',RowKey='3151623560') HTTP/1.1" 204 0
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273155109267%27 HTTP/1.1" 200 None
2026-03-30 15:11:03 [auto_selling_leboncoin.fr] INFO: Saving data for 3155109267: {'created_time': 1774883463.413927}
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "PATCH /ScrapedListings(PartitionKey='auto_selling_leboncoin.fr',RowKey='3155109267') HTTP/1.1" 204 0
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273063385664%27 HTTP/1.1" 200 None
2026-03-30 15:11:03 [auto_selling_leboncoin.fr] INFO: Saving data for 3063385664: {'created_time': 1774883463.454255}
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "PATCH /ScrapedListings(PartitionKey='auto_selling_leboncoin.fr',RowKey='3063385664') HTTP/1.1" 204 0
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%272838402100%27 HTTP/1.1" 200 None
2026-03-30 15:11:03 [auto_selling_leboncoin.fr] INFO: Saving data for 2838402100: {'created_time': 1774883463.573506}
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "PATCH /ScrapedListings(PartitionKey='auto_selling_leboncoin.fr',RowKey='2838402100') HTTP/1.1" 204 0
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20RowKey%20eq%20%273063947250%27 HTTP/1.1" 200 None
2026-03-30 15:11:03 [auto_selling_leboncoin.fr] INFO: Saving data for 3063947250: {'created_time': 1774883463.635202}
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "PATCH /ScrapedListings(PartitionKey='auto_selling_leboncoin.fr',RowKey='3063947250') HTTP/1.1" 204 0
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "POST /Tables HTTP/1.1" 409 None
2026-03-30 15:11:03 [urllib3.connectionpool] DEBUG: https://alxsourcingstorageprod.table.core.windows.net:443 "GET /ScrapedListings()?$filter=PartitionKey%20eq%20%27auto_selling_leboncoin.fr%27%20and%20last_price_update_time%20lt%201773587463 HTTP/1.1" 200 None
2026-03-30 15:11:03 [scrapy.extensions.feedexport] INFO: Stored jsonlines feed (3 items) in: file:///var/lib/scrapyd/items/sourcing_v2/auto_selling_leboncoin.fr/4a8df3aa2c1f11f18e133aacc95538c6.jl
2026-03-30 15:11:03 [scrapy.statscollectors] INFO: Dumping Scrapy stats:
{'downloader/request_bytes': 707,
 'downloader/request_count': 2,
 'downloader/request_method_count/GET': 1,
 'downloader/request_method_count/POST': 1,
 'downloader/response_bytes': 744743,
 'downloader/response_count': 2,
 'downloader/response_status_count/200': 2,
 'elapsed_time_seconds': 20.943327,
 'feedexport/success_count/FileFeedStorage': 1,
 'finish_reason': 'finished',
 'finish_time': datetime.datetime(2026, 3, 30, 15, 11, 3, 813262, tzinfo=datetime.timezone.utc),
 'item_scraped_count': 3,
 'log_count/DEBUG': 219,
 'log_count/ERROR': 22,
 'log_count/INFO': 216,
 'memusage/max': 149426176,
 'memusage/startup': 149426176,
 'request_depth_max': 1,
 'response_received_count': 2,
 'scheduler/dequeued': 2,
 'scheduler/dequeued/memory': 2,
 'scheduler/enqueued': 2,
 'scheduler/enqueued/memory': 2,
 'scrape_type/new': 25,
 'scrapy-zyte-api/429': 0,
 'scrapy-zyte-api/attempts': 2,
 'scrapy-zyte-api/error_ratio': 0.0,
 'scrapy-zyte-api/errors': 0,
 'scrapy-zyte-api/fatal_errors': 0,
 'scrapy-zyte-api/mean_connection_seconds': 5.609633252024651,
 'scrapy-zyte-api/mean_response_seconds': 5.88452906999737,
 'scrapy-zyte-api/processed': 2,
 'scrapy-zyte-api/request_args/customHttpRequestHeaders': 2,
 'scrapy-zyte-api/request_args/experimental.responseCookies': 1,
 'scrapy-zyte-api/request_args/httpRequestBody': 1,
 'scrapy-zyte-api/request_args/httpRequestMethod': 1,
 'scrapy-zyte-api/request_args/httpResponseBody': 2,
 'scrapy-zyte-api/request_args/httpResponseHeaders': 2,
 'scrapy-zyte-api/request_args/responseCookies': 1,
 'scrapy-zyte-api/request_args/url': 2,
 'scrapy-zyte-api/status_codes/200': 2,
 'scrapy-zyte-api/success': 2,
 'scrapy-zyte-api/success_ratio': 1.0,
 'scrapy-zyte-api/throttle_ratio': 0.0,
 'source/items_encountered': 25,
 'source/total_available': 25,
 'start_time': datetime.datetime(2026, 3, 30, 15, 10, 42, 869935, tzinfo=datetime.timezone.utc)}
2026-03-30 15:11:03 [scrapy.core.engine] INFO: Spider closed (finished)
2026-03-30 15:11:04 [asyncio] ERROR: Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x7f154f332f90>
2026-03-30 15:11:04 [asyncio] ERROR: Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x7f154f3337d0>

PROJECT (sourcing_v2)
SPIDER (auto_selling_leboncoin.fr)