From 0c9c893862a254c5bd2dba21d75df271622b2c8a Mon Sep 17 00:00:00 2001 From: Andres Aguilera Date: Fri, 19 Jun 2020 15:51:47 -0400 Subject: [PATCH] Add Moldova Mtender --- kingfisher_scrapy/spiders/moldova_mtender.py | 34 ++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 kingfisher_scrapy/spiders/moldova_mtender.py diff --git a/kingfisher_scrapy/spiders/moldova_mtender.py b/kingfisher_scrapy/spiders/moldova_mtender.py new file mode 100644 index 000000000..c2e4c65e6 --- /dev/null +++ b/kingfisher_scrapy/spiders/moldova_mtender.py @@ -0,0 +1,34 @@ +import json + +from kingfisher_scrapy.base_spider import SimpleSpider +from kingfisher_scrapy.util import components, handle_http_error, join, parameters, replace_parameter + + +class MoldovaMTender(SimpleSpider): + """ + Spider arguments + sample + Download only one set of releases. + """ + name = 'moldova_mtender' + data_type = 'release_package' + base_url = 'http://public.eprocurement.systems/ocds/tenders/' + + def start_requests(self): + url = 'https://public.mtender.gov.md/tenders/' + yield self.build_request(url, formatter=components(-1), callback=self.parse_list) + + @handle_http_error + def parse_list(self, response): + data = json.loads(response.text) + # The last page returns an empty JSON object. + if not data: + return + for item in data['data']: + yield self.build_request(self.base_url + item['ocid'], formatter=components(-2)) + + if self.sample: + return + + url = replace_parameter(response.request.url, 'offset', data['offset']) + yield self.build_request(url, formatter=join(components(-1), parameters('offset')), callback=self.parse_list)