Source code for kingfisher_scrapy.spiders.croatia
import scrapy
from form2request import form2request
from kingfisher_scrapy.base_spiders import CompressedFileSpider
from kingfisher_scrapy.util import BROWSER_USER_AGENT
[docs]
class Croatia(CompressedFileSpider):
"""
Domain
Elektronički oglasnik javne nabave (Electronic public procurement notices)
Bulk download documentation
https://eojn.nn.hr/SPIN/application/ipn/Oglasnik/PreuzimanjeUgovoraOCD.aspx
"""
name = "croatia"
custom_settings = {
"USER_AGENT": BROWSER_USER_AGENT,
}
# BaseSpider
validate_json = True # https://github.com/open-contracting/kingfisher-collect/issues/886
# SimpleSpider
data_type = "release_package"
async def start(self):
yield scrapy.Request(
"https://eojn.nn.hr/SPIN/application/ipn/Oglasnik/PreuzimanjeUgovoraOCD.aspx", callback=self.parse_list
)
def parse_list(self, response):
form = response.xpath("//form")
for priority, link in enumerate(form.xpath(".//a[@id]")):
file_id = link.attrib["id"]
yield form2request(
form,
data={
"__EVENTTARGET": file_id.replace("_", "$"),
"__EVENTARGUMENT": "",
},
click=link,
).to_scrapy(callback=self.parse, meta={"file_name": f"{file_id}.zip"}, priority=priority)