[elr0y] Enrichissement de données via l'API Sirene

C'est ainsi que commença la déchéance de MF, Requiem et Wizard's Lair
quodo
Modérateur
Messages : 167
Inscription : 22 avr. 2021, 22:21

[elr0y] Enrichissement de données via l'API Sirene

Message par quodo »

Vu que je suis nul en dev, j'ai une question palpitante pour les meilleurs codeurs du forum :

J'ai un fichier (csv ou Google Sheet) extrait de mon CRM avec les données suivantes :

Account Name, Company Name, ImmatriculationSIRET, N TVA, Total Shipping price VAT excl.

Je veux taper dans la base de donnée opendata/sireneV3 pour récupérer le code NAF de chaque entreprise pour me permettre de faire quelques stats.

Le fichier fait, évidemment 20 000 lignes sinon ça serait trop simple.

J'ai réussi à faire une petite fonction en python qui peut me sortir ce code pour 1 ligne, ce qui est bien mais pas top.

Code : Tout sélectionner

import requests
from requests.structures import CaseInsensitiveDict
url = "https://api.insee.fr/entreprises/sirene/V3/siret/38839861200019?champs=activitePrincipaleUniteLegale"
headers = CaseInsensitiveDict()
headers["Accept"] = "application/json"
headers["Authorization"] = "Bearer [TOKEN]
resp = requests.get(url, headers=headers)
print(resp.json()["etablissement"]["uniteLegale"]["activitePrincipaleUniteLegale"])
Quel est le moyen le plus simple d'industrialiser ça ?

Solution qui ne fonctionne pas : importxml (la fonction est bridée par Google Sheets)
elr0y
Membre
Messages : 592
Inscription : 26 avr. 2021, 02:07

Re: [elr0y] Enrichissement de données via l'API Sirene

Message par elr0y »

https://www.talend.com/fr/products/talend-open-studio/
Les ETL, c'est parfaitement adapte aux gens comme toi qui ne developpent pas.
Avatar de l’utilisateur
Monsieur S
Membre
Messages : 83
Inscription : 27 avr. 2021, 13:37

Re: [elr0y] Enrichissement de données via l'API Sirene

Message par Monsieur S »

Autres solutions :
1/ Tu ajoutes une boucle sur ton fichier source et qui exécute ton script Python pour chaque ligne. (tu en es pas loin mais il faut coder)
2/ Tu écris le "même" code dans Apps Script de Google Spreadsheet. (pas super performant mais ça fait le taf)
3/ Tu télécharges la source de données stock de cette API au format CSV et tu fais ta jointure dans ton tableur préféré. (penser à télécharger régulièrement les données sources pour être à jour)
elr0y
Membre
Messages : 592
Inscription : 26 avr. 2021, 02:07

Re: [elr0y] Enrichissement de données via l'API Sirene

Message par elr0y »

Verifie quand meme le nombre de requetes par seconde qu'ils t'autorisent :
https://api.insee.fr/catalogue/site/themes/wso2/subthemes/insee/pages/item-info.jag?name=Sirene&version=V3&provider=insee a écrit : 5) Limites d'utilisation

L'usage d'API Sirene est soumis à une limite de 30 interrogations par minute.
[...]
L'Insee se réserve le droit de résilier, sans préavis ni indemnité d'aucune sorte, tout compte faisant l'objet d'une utilisation illicite, frauduleuse ou contraire aux présentes CGU.
Ton script sur 20000 lignes risque de te faire bannir tes credentials et te prendrait plus de 11h a executer en rajoutant un delai pour respecter la frequence d'interrogation.

Tu peux lui preferer celle exposee sur data.gouv.fr :
https://entreprise.data.gouv.fr/api_doc/sirene a écrit :Limite de requêtes

Le serveur accepte un maximum de 7 requêtes par seconde. Au delà, un code 429 est renvoyé indiquant que la volumétrie d'appels a été dépassée. L'IP sera blacklistée si les appels ne sont pas régulés suite aux retours 429.
Soit 420 par minute, il te faudrait alors 48 minutes pour faire l'integralite de ton CSV.

Dans les 2 cas, c'est tres sale (et long) comme maniere de proceder.
quodo
Modérateur
Messages : 167
Inscription : 22 avr. 2021, 22:21

Re: [elr0y] Enrichissement de données via l'API Sirene

Message par quodo »

J'ai pas de soucis à ce que ça prenne du temps, ça pourrait prendre une semaine que ça changerait rien pour moi, tant que c'est une machine qui s'en occupe.
elr0y
Membre
Messages : 592
Inscription : 26 avr. 2021, 02:07

Re: [elr0y] Enrichissement de données via l'API Sirene

Message par elr0y »

C'est plus un probleme de transaction en l'occurence, vu que tu vas en faire 20000 en 50-700 minutes, l'integrite/la coherence de tes donnees n'est pas garantie : il va falloir que tu prevoies un mecanisme de rollback/resume en cas d'indisponibilite du serveur/mise a jour pendant l'execution des donnees de leur cote/plantage du tien.

Tu peux installer l'APi directement dans un environnement que tu maitrises pour t'affranchir de la contrainte du nombre de requetes : https://github.com/etalab/sirene_as_api_ansible mais ca ne resout pas le probleme de tes 20000 requetes/transactions.

La solution 3/ de Monsieur S semble la plus pertinente : https://www.data.gouv.fr/en/datasets/ba ... ren-siret/

Et tu peux toujours utiliser Talend Open Studio Data Integration pour merger et manipuler les donnees de tes deux sources sans avoir a coder.