sian:2022:apihal

TP découverte de l'API HAL

Hal est une plateforme numérique pour le dépôt et le partage d'articles scientifiques. Il contient environ 2 000 000 de notice bibliographique et 1 000 000 d'articles. Cette plateforme propose une API pour la récupération des informations sur les documents dont la documentation est ici

  • Regardez rapidement la documentation, en comparant au requêtes SQL, comment considérez-vous les champs suivant :
    • le champ q ou les filtres fq
    • le champ fl
    • le champ sort, les champs rows et start
    • les facets
  • Quel paramètres de requêtes faudrait-il envoyer pour obtenir les différents mots clefs utilisés cette année dans les articles déposés ?

Cliquez pour afficher ⇲

Cliquez pour masquer ⇱

Le plus simple pour cela est d'utiliser les facets c'est à dire de faire une requète avec les parametre suivant:

q=submittedDateY_i:2022
fl=keyword_s,submittedDateY_i
wt=json
facet=true
facet.field=keyword_s

Ce qui donne l'url https://api.archives-ouvertes.fr/search/?q=submittedDateY_i:2022&fl=keyword_s,submittedDateY_i&wt=json&facet=true&facet.field=keyword_s

Vous pouvez utiliser le notebook à cette url https://jupyter.imst.os.univ-lyon1.fr/

Requests est une bibliothèque python facilitant les requète HTTP donc sur les API basée sur le web.

  • En utilisantrequests, téléchargez les informations de l'ensemble des articles du laboratoire ELICO. Affichez les titres et les auteurs. Enfin, stockez le résultat dans un fichier.

Correction de la première question

Correction de la première question

Le notebook peux être trouvé ici: https://jupyter.imst.os.univ-lyon1.fr/hub/user-redirect/lab/tree/public/api_hall.ipynb

Voici son code

#!/usr/bin/env python
# coding: utf-8

# # Utilisation de request

# In[31]:


import requests
import json
import pandas as pd


# In[59]:

parametres = {
    "q":"labStructAcronym_s:ELICO",
    "wt":"json",
    "fl":"authFullName_s,title_s",
    "rows": 10000
}


# In[60]:

r = requests.get('https://api.archives-ouvertes.fr/search/', params=parametres)


# In[64]:

resultat = r.json()
liste_reps = resultat["response"]["docs"]
# print(liste_reps)

# In[71]:

result = []
for rep in liste_reps:
    elem = {}
    elem["titre"] = rep["title_s"][0]
    elem["nbAuteur"] = len(rep["authFullName_s"])
    elem["auteurs"] = rep["authFullName_s"]
#    print(elem)
    result.append(elem)
    
df = pd.DataFrame(result)


# In[72]:


df


# In[78]:

df.to_excel("article_elico.xlsx")

# In[79]:

df.to_csv("article_elico.csv")

* Utilisez les facettes pour obtenir

  • le nombre d'article par an,
  • le nombre d'article par auteur.

Nous allons utiliser la librairie plotly pour afficher les résultats.

  • Affichez le nombre d'articles par an sous la forme d'un line-chart
  • Affichez le nombre d'articles par auteur sous la forme d'un bar-chart
  • sian/2022/apihal.txt
  • Dernière modification : 2022/12/13 23:11
  • de fabien.rico