Si vous envisagez le scraping pour récupérer des articles sur le site legifrance vous devriez considérer l'API publique disponible dans le catalogue d'API Piste.
Obtention des identifiants OAuth
Commencez par créer un compte sur Piste.
Ensuite, rendez-vous sous "API > Consentement CGU API" pour accépter les CGU de Légifrance
Créez une application dans l'onglet application.
Une fois créée, modifiez votre application pour y ajouter l'API Légifrance
De retour dans l'onglet applications, cliquez sur votre application puis récupérer votre client id et votre client secret.
Obtention d'un token
L'obtention d'un token se fait via une requête POST sur l'url : https://oauth.piste.gouv.fr/api/oauth/token
Exemple de requête avec cURL :
curl -X POST \
'https://oauth.piste.gouv.fr/api/oauth/token' \
--header 'Accept-Encoding: gzip,deflate' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Content-Length: 140' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'client_id=xxx' \
--data-urlencode 'client_secret=yyy' \
--data-urlencode 'scope=openid'
Voici le même exemple sous python :
import requests
from requests_oauthlib import OAuth2Session
client_id = "xxx"
client_secret = "yyy"
res = requests.post(
"https://oauth.piste.gouv.fr/api/oauth/token",
data={
"grant_type": "client_credentials",
"client_id": client_id,
"client_secret": client_secret,
"scope": "openid"
}
)
res.json()
# {'access_token': 'WxkeizeaK7vqh1A3swGD14RASpM4tTf2PXzC32SV1mzBOebmx1asYA',
# 'token_type': 'Bearer',
# 'expires_in': 3600,
# 'scope': 'openid resource.READ'}
Récupération d'un article à l'aide du token
Le jeton obtenu ci-dessus permet de requête l'API Piste Légifrance.
Voici un exemple avec cURL :
curl -X POST \
'https://api.piste.gouv.fr/dila/legifrance/lf-engine-app/consult/getArticle' \
--header 'Authorization: Bearer k0ESUrVPNCywGOm4Ef9Qehgxj8Ktr4gMhtPNc3DRilz5v11y3JKEDP' \
--header 'Content-Type: application/json' \
--data-raw '{
"id": "LEGIARTI000006307920"
}'
Le même exemple en python :
import requests
response = requests.post(
"https://api.piste.gouv.fr/dila/legifrance/lf-engine-app/consult/getArticle",
json={"id": "LEGIARTI000006307920"},
headers={
"Authorization": "Bearer k0ESUrVPNCywGOP4Ef9Qehgxj8Ktr4gMhtPNc3DRilz5v11y3JKEDP",
"Content-Type": "application/json",
},
)
response.json()
# {
# "executionTime": 0,
# "dereferenced": false,
# "article": {
# "id": "LEGIARTI000006307920",
# "idTexte": null,
# "type": "AUTONOME",
# "texte": "L'impôt sur le revenu est établi d'après le montant total du revenu net annuel dont dispose chaque foyer fiscal. ..."
# }
# }
La documentation de l'API est disponible dans le rubrique "API > Mes API" puis en cliquant sur Légifrance.
pylegifrance
Je suis tombé par hasard sur la librairie pylegifrance dont l'objectif est de faciliter la récupération des articles legifrance via l'API de Piste.
Il s'agit plus d'un protoype de librairie puisqu'elle n'est pas encore publiée sur pypi mais a l'air prometteuse donc à surveiller.
Top comments (0)