Skip to content

Commit

Permalink
Merge pull request #971 from open-contracting/957-anambra
Browse files Browse the repository at this point in the history
nigeria: Add Bon Maximus base, update nigeria_anambra_state
  • Loading branch information
yolile authored Oct 25, 2022
2 parents 47936e1 + 0fa8727 commit 193f582
Show file tree
Hide file tree
Showing 5 changed files with 45 additions and 50 deletions.
4 changes: 2 additions & 2 deletions docs/spiders.rst
Original file line number Diff line number Diff line change
Expand Up @@ -923,12 +923,12 @@ Nigeria
scrapy crawl nigeria_abia_state
.. autoclass:: kingfisher_scrapy.spiders.nigeria_anambra_state_records.NigeriaAnambraStateRecords
.. autoclass:: kingfisher_scrapy.spiders.nigeria_anambra_state.NigeriaAnambraState
:no-members:

.. code-block:: bash
scrapy crawl nigeria_anambra_state_records
scrapy crawl nigeria_anambra_state
.. autoclass:: kingfisher_scrapy.spiders.nigeria_budeshi_records.NigeriaBudeshiRecords
:no-members:
Expand Down
17 changes: 17 additions & 0 deletions kingfisher_scrapy/spiders/nigeria_anambra_state.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
from kingfisher_scrapy.spiders.nigeria_bon_maximus_base import NigeriaBonMaximusBase


class NigeriaAnambraState(NigeriaBonMaximusBase):
"""
Domain
Anambra State
API documentation
https://eprocure.bpp.an.gov.ng/awarded_contracts.php
"""
name = 'nigeria_anambra_state'

# SimpleSpider
data_type = 'release_package'

# NigeriaBonMaximusBase
url_prefix = 'https://eprocure.bpp.an.gov.ng/'
30 changes: 0 additions & 30 deletions kingfisher_scrapy/spiders/nigeria_anambra_state_records.py

This file was deleted.

23 changes: 23 additions & 0 deletions kingfisher_scrapy/spiders/nigeria_bon_maximus_base.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import scrapy

from kingfisher_scrapy.base_spiders import SimpleSpider
from kingfisher_scrapy.util import components, get_parameter_value, handle_http_error


class NigeriaBonMaximusBase(SimpleSpider):
# SimpleSpider
data_type = 'release_package'

# url_prefix must be provided by subclasses.

def start_requests(self):
url = f'{self.url_prefix}awarded_contracts.php'
yield scrapy.Request(url, meta={'file_name': 'all.html'}, callback=self.parse_list)

@handle_http_error
def parse_list(self, response):
for url in response.xpath('//table[@id="contractTable"]/tbody/tr/td[2]/a/@href').getall():
# The URLs look like
# https://url_prefix/existing_award_details.php?id=ocds-xwwr9a-000103-OS/HLT/02
ocid = get_parameter_value(url, 'id').replace('/', '_')
yield self.build_request(f'{self.url_prefix}media/{ocid}.json', formatter=components(-1))
21 changes: 3 additions & 18 deletions kingfisher_scrapy/spiders/nigeria_osun_state.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
import scrapy
from kingfisher_scrapy.spiders.nigeria_bon_maximus_base import NigeriaBonMaximusBase

from kingfisher_scrapy.base_spiders import SimpleSpider
from kingfisher_scrapy.util import components, get_parameter_value, handle_http_error


class NigeriaOsunState(SimpleSpider):
class NigeriaOsunState(NigeriaBonMaximusBase):
"""
Domain
Nigeria Osun State Open Contracting Portal
Expand All @@ -16,17 +13,5 @@ class NigeriaOsunState(SimpleSpider):
# SimpleSpider
data_type = 'release_package'

# Local
# NigeriaBonMaximusBase
url_prefix = 'https://egp.osunstate.gov.ng/'

def start_requests(self):
url = f'{self.url_prefix}awarded_contracts.php'
yield scrapy.Request(url, meta={'file_name': 'all.html'}, callback=self.parse_list)

@handle_http_error
def parse_list(self, response):
for url in response.xpath('//table[@id="contractTable"]/tbody/tr/td[2]/a/@href').getall():
# The URLs look like
# https://egp.osunstate.gov.ng/existing_award_details.php?id=ocds-xwwr9a-000103-OS/HLT/02
ocid = get_parameter_value(url, 'id').replace('/', '_')
yield self.build_request(f'{self.url_prefix}media/{ocid}.json', formatter=components(-1))

0 comments on commit 193f582

Please sign in to comment.