Analysez l'API Researchmap avec Python et créez automatiquement un fichier Word pour la liste des succès

Chers chercheurs, Merci pour votre travail acharné aujourd'hui. Il était difficile de copier les réalisations entrées dans le researchmap, j'ai donc analysé API. Allons jusqu'à créer un fichier Word à partir de Python.

environnement

Installez python-docx

Veuillez consulter ici. Mais c'est une ligne:

bash


pip install python-docx

Analyse JSON

Je suis une personne JSON faible, alors que sont @ id '' et @ type ''? !! ?? !! Je l'ai fait avec des larmes. Veuillez me faire savoir s'il existe une méthode plus efficace. (Au fait, je ne comprends pas vraiment la portée du mot "parse". Je pense qu'il fait référence au point où vous obtenez le JSON et récupérez les informations nécessaires, mais dites-moi si vous faites une erreur. )

Obtenez JSON

J'ai fait référence à ici.

python


import requests
import json

url = "https://api.researchmap.jp/kage"
response = requests.get(url)
jsonData = response.json()

Vous pouvez obtenir des données comme celles-ci. (Quand j'ai utilisé l'instruction print, elle était écrite de manière serrée sans saut de ligne, donc je ne l'ai pas utilisée.) スクリーンショット 2020-11-17 0.20.40.png

Extraire les données requises de JSON

Identifier l'emplacement des données de performance

Je suis une personne JSON faible, je fais donc défiler le JSON affiché et examine de plus près la structure. Il semble que les données de performance soient stockées dans la partie appelée `` @ graph ''. スクリーンショット 2020-11-17 0.24.05.png

Affichons certains des éléments de `` @ graph ''.

python


for i in range(len(jsonData['@graph'])):
    print(i)
    print(jsonData['@graph'][i]['@type'])

Résultat de sortie


0
research_interests
1
research_areas
2
research_experience
3
published_papers
4
books_etc
5
misc
6
presentations
7
awards
8
research_projects
9
education
10
teaching_experience
11
committee_memberships

Les données de performance y sont incluses. Extrayons les documents publiés de l'élément 3.

Afficher les journaux publiés comme une liste de performances

J'ai pu l'afficher comme ça avec le script suivant.

python


for i in range(len(jsonData['@graph'][3]['items'])):
    author_list = []
    authors = jsonData['@graph'][3]['items'][i]['authors']['en']
    title = jsonData['@graph'][3]['items'][i]['paper_title']['en']
    journal = jsonData['@graph'][3]['items'][i]['publication_name']['en']
    date =  jsonData['@graph'][3]['items'][i]['publication_date']
    vol = jsonData['@graph'][3]['items'][i]['volume']
    doi = jsonData['@graph'][3]['items'][i]['identifiers']['doi'][0]
    
    #Organiser l'apparence de l'auteur
    for j in range(len(authors)):
        author = ''.join(authors[j].values())
        author_list.append(author)
    
    print(', '.join(author_list))
    print(title)
    print(journal, vol, date)
    print('doi:', doi)
    print('')

スクリーンショット 2020-11-17 0.34.01.png Vous pouvez copier ceci dans un fichier Word, mais c'est un gros problème, alors faisons de notre mieux.

Écrire dans un fichier Word

Liste avec des nombres en python-docx

Je veux faire une liste de réalisations avec des chiffres. Tout d'abord, testons l'écriture de la liste. J'ai fait référence à ici.

python


from docx import Document

doc = Document()
docx_file = 'test.docx'

p0 = doc.add_paragraph('Item 1', style='List Number')
p1 = doc.add_paragraph('Item 2', style='List Number')

doc.save(docx_file)

Un fichier Word a été créé et la liste a été écrite. スクリーンショット 2020-11-19 21.58.56.png

Formater les données de performance pour l'écriture

Un petit changement par rapport à la déclaration imprimée ci-dessus.

python


#Liste pour stocker toutes les données papier
papers = []

for i in range(len(jsonData['@graph'][3]['items'])):
    author_list = []
    authors = jsonData['@graph'][3]['items'][i]['authors']['en']
    title = jsonData['@graph'][3]['items'][i]['paper_title']['en']
    journal = jsonData['@graph'][3]['items'][i]['publication_name']['en']
    date =  jsonData['@graph'][3]['items'][i]['publication_date']
    vol = jsonData['@graph'][3]['items'][i]['volume']
    doi = jsonData['@graph'][3]['items'][i]['identifiers']['doi'][0]
    
    #Organiser l'apparence de l'auteur
    for j in range(len(authors)):
        author = ''.join(authors[j].values())
        author_list.append(author)
    
    #Formatez le papier et stockez-le dans la liste
    paper = [', '.join(author_list), title, ', '.join([journal, vol, date]), ' '.join(['doi:', doi])]
    papers.append('\n'.join(paper))

スクリーンショット 2020-11-19 22.13.05.png Écrivez la liste des `` papiers '' dans Word.

Écrire des données dans un fichier Word

J'ai fait référence à ici pour l'ajout de titres.

python


doc = Document()
docx_file = 'publication.docx'

#Titre
heading = doc.add_heading('Réalisations de recherche', level=1)
subheading = doc.add_heading('Papier original', level=2)

#Liste des articles
for paper in papers:
    p = doc.add_paragraph(paper, style='List Number')

doc.save(docx_file)

スクリーンショット 2020-11-19 22.21.11.png Les données ont été écrites dans le fichier Word! Le reste est juste pour organiser la belle apparence. En regardant ici, rendons toutes les couleurs de police noires pour le moment.

python


from docx.shared import RGBColor

doc = Document()
docx_file = 'publication.docx'

#Titre
heading = doc.add_heading('Réalisations de recherche', level=1)
heading.runs[0].font.color.rgb = RGBColor(0, 0, 0)
subheading = doc.add_heading('Papier original', level=2)
subheading.runs[0].font.color.rgb = RGBColor(0, 0, 0)

#Liste des articles
for paper in papers:
    p = doc.add_paragraph(paper, style='List Number')

doc.save(docx_file)

スクリーンショット 2020-11-19 22.28.31.png Vous pouvez maintenant créer un fichier Word de votre liste de réalisations à partir de researchmap sans avoir à le copier et le coller manuellement!

référence

Recommended Posts

Analysez l'API Researchmap avec Python et créez automatiquement un fichier Word pour la liste des succès
Automatisez la suppression de l'arrière-plan pour les derniers portraits dans un répertoire avec Python et API
[Python] Créer une liste de dates et d'heures pour une période spécifiée
Créer un fichier binaire en Python
Creusez le répertoire et créez une liste de chemins de répertoire + noms de fichiers
Changer la liste dans l'instruction for
[GPS] Créer un fichier kml avec Python
Créer un fichier GIF en utilisant Pillow en Python
Création d'un wrapper Python pour l'API Qiita
Copiez la liste en Python
Conseils pour accéder à l'API ATND avec Python
Créez un fichier MIDI en Python en utilisant pretty_midi
[Python] Créer une liste de date et d'heure (type datetime) pour une certaine période
Créez une API REST à l'aide du modèle appris dans Lobe et TensorFlow Serving.
Créer un projet et une application Django dans un environnement virtuel Python et démarrer le serveur
Créez une base de données propre pour les tests avec FastAPI et effectuez le test Unittest de l'API avec pytest
Enregistrez le modèle pystan et les résultats dans un fichier pickle
Créer une fonction en Python
Créer un dictionnaire en Python
Créer une portée locale en Python sans polluer l'espace de noms
Liste des informations sur les arguments de méthode pour les classes et les modules en Python
Crache une liste de noms de fichiers, de dates de dernière modification et de codes de caractères en python3
Créer un compte enfant de connect with Stripe en Python
Obtenez le type MIME en Python et déterminez le format de fichier
En Python, les éléments de la liste sont triés et sortis sous forme d'éléments et de multiples.
Obtenez le nombre d'éléments spécifiques dans la liste python
Créez un script pour votre compétence Pepper dans une feuille de calcul et chargez SayText directement à partir du script
Obtenez de manière récursive la liste Excel dans un dossier spécifique avec python et écrivez-la dans Excel.
Créez un fichier dox avec des vignettes des photos dans le dossier en utilisant la bibliothèque Python python-docx et le logiciel gratuit «Réduction uniquement».
Astuces utiles liées à la liste et aux instructions en Python
[Note] Importation de fichiers dans le répertoire parent en Python
Créez un Twitter BOT avec le SDK GoogleAppEngine pour Python
Créez le code qui renvoie "A et prétendant B" en python
Comment obtenir la dernière (dernière) valeur d'une liste en Python
Python: créer un dictionnaire à partir d'une liste de clés et de valeurs
Créer une nouvelle liste en combinant des éléments en double dans la liste
Google recherche la chaîne sur la dernière ligne du fichier en Python
Créez un modèle pour stocker les informations de l'API Google Livres pour une manipulation et des tests intuitifs
Exporter la liste de clés incluse dans S3 Bucket dans un fichier
Concurrence avec VS Code Créez un environnement Python pour les professionnels sous Windows
Recherchez le nom du fichier, y compris le mot et l'extension spécifiés dans le répertoire
[Python / Django] Créer une API Web qui répond au format JSON
Créez une illusion rayée avec correction gamma pour Python3 et openCV3
Créez un script shell pour exécuter le fichier python plusieurs fois
Créez un sélecteur de couleurs pour la roue chromatique avec Python + Qt (PySide)
Spécifiez ou créez un dossier python, puis enregistrez la capture d'écran.
[Introduction à Python] Comment utiliser l'opérateur in dans l'instruction for?
Lisez le fichier en Python avec un chemin relatif depuis le programme
Python vba pour créer une chaîne de date pour créer un nom de fichier
Obtenez la formule dans le fichier Excel sous forme de chaîne en Python
Créer et renvoyer un fichier CSV CP932 pour Excel avec Chalice
Obtenir l'API arXiv en Python
Différence entre list () et [] en Python
[python] Gérer les fonctions dans une liste
Créer un conteneur DI avec Python
Frappez l'API Sesami en Python
Créez Gmail en Python sans utiliser l'API