[docs]classItalyMinistryOfInfrastructureAndTransport(SimpleSpider):""" Domain Public Contracts Service (SCP) of the Ministry of Infrastructure and Transport Spider arguments from_date Download only data from this time onward (YYYY-MM-DD format). If ``until_date`` is provided, defaults to '2022-01-01'. until_date Download only data until this time (YYYY-MM-DD format). If ``from_date`` is provided, defaults to today. Swagger API documentation https://www.serviziocontrattipubblici.it/ocds-ms/swagger-ui.html """name='italy_ministry_of_infrastructure_and_transport'# BaseSpiderdate_format='date'default_from_date='2022-01-01'# SimpleSpiderdata_type='release_package'defstart_requests(self):url=('https://www.serviziocontrattipubblici.it/ocdsReleasePackages-ms/v1.0/ocdsReleasePackages''?page=1&pageSize=5')ifself.from_dateandself.until_date:from_date=self.from_date.strftime(self.date_format)until_date=self.until_date.strftime(self.date_format)url=f'{url}&dataInvioDa={from_date}&dataInvioA={until_date}'yieldscrapy.Request(url,meta={'file_name':'page-1.json','page':1})@handle_http_errordefparse(self,response):data=response.json()# A success response is returned instead of an error response: for example, for unavailable date periods.# {# "esito": false,# "errorData": "Si รจ verificato un errore durante la creazione di OCDS"# }if'errorData'indata:data['http_code']=response.statusyieldself.build_file_error_from_response(response,errors=data)# An empty release package is returned after the last meaningful page is reached.if'releases'notindata:returnyield fromsuper().parse(response)page=response.request.meta['page']+1yieldself.build_request(replace_parameters(response.url,page=page),meta={'page':page},formatter=parameters('page'))