Source code for kingfisher_scrapy.spiders.brazil_medicamentos_transparentes
import scrapy
from kingfisher_scrapy.base_spiders import CompressedFileSpider, IndexSpider
from kingfisher_scrapy.util import components
[docs]
class BrazilMedicamentosTransparentes(CompressedFileSpider, IndexSpider):
"""
Domain
Medicamentos Transparentes by TransparĂȘncia Brasil
API documentation
https://medicamentos-api.transparencia.org.br/docs#/DadosAbertos
Bulk download documentation
https://medicamentos.transparencia.org.br/dados-abertos
"""
name = "brazil_medicamentos_transparentes"
# SimpleSpider
data_type = "release_package"
# IndexSpider
result_count_pointer = "/response/count"
limit = 100
parse_list_callback = "parse_page"
param_limit = "take"
param_offset = "skip"
async def start(self):
yield scrapy.Request(
f"https://medicamentos-api.transparencia.org.br/dados-abertos?skip=0&take={self.limit}",
callback=self.parse_list,
)
def parse_page(self, response):
for item in response.json()["response"]["records"]:
for file in item["files"]:
if file["type"] == "json":
url = file["url"]
yield scrapy.Request(url, meta={"file_name": components(-1)(url)})