J'ai récemment appris le scraping et je l'ai implémenté. Cette fois, j'ai créé un mot-clé dans " Articles CiNii - Recherche d'articles japonais - Institut national d'informatique ". Tous les «titres», «auteurs» et «supports de publication papier» des articles ayant atteint le mot-clé sont acquis et enregistrés au format CSV. C'était une bonne étude pour apprendre le grattage, alors j'ai écrit un article. Nous espérons que cela aidera ceux qui apprennent le grattage!
Voici le code que j'ai écrit moi-même. L'explication est écrite avec le code, alors jetez-y un œil. En outre, rendez-vous sur le site de " Articles CiNii - Recherche d'articles japonais - Institut national d'informatique " et Chrome Je pense que cette compréhension s'approfondira si vous le faites tout en examinant la structure du HTML en utilisant la fonction de vérification de. Cette fois, j'ai enregistré ce code sous le nom "search.py".
import sys
import os
import requests
import pandas as pd
from bs4 import BeautifulSoup
import re
def main():
url ='https://ci.nii.ac.jp/search?q={}&count=200'.format(sys.argv[1])
res = requests.get(url)
soup = BeautifulSoup(res.content , "html.parser")
#Vérifiez le nombre de recherches.
#Dans le texte'\n Résultats de la recherche\n\t\n\cas t0\n\t'Il contient des données comme celles-ci.
search_count_result = soup.find_all("h1" , {"class":"heading"})[0].text
#Obtenez le nombre de recherches à l'aide d'expressions régulières
pattern = '[0-9]+'
result = re.search(pattern, search_count_result)
#S'il n'y a pas de résultat de recherche, la fonction se termine ici
search_count = int(result.group())
if search_count == 0:
return print('Il n'y a pas de résultats de recherche.')
print('Le nombre de recherches est' + str(search_count) + 'C'est une question.')
#Création d'un répertoire pour stocker des données.
try:
os.makedirs(sys.argv[1])
print("Un nouveau répertoire a été créé.")
except FileExistsError:
print("Ce sera un répertoire qui existe déjà.")
#Pour obtenir tous les résultats de la recherche, obtenez le nombre de pour.
#Cette fois, il est mis à 200 car il est affiché tous les 200 cas.
if search_count // 200 == 0:
times = 1
elif search_count % 200 == 0:
times = search_count // 200
else:
times = search_count // 200 + 1
#Acquérir des auteurs, des titres et des supports de publication à la fois
title_list = []
author_list = []
media_list = []
#Traitement pour supprimer les caractères vides ici
escape = str.maketrans({"\n":'',"\t":''})
for time in range(times):
#Obtenir l'URL
count = 1 + 200 * time
#search?q={}Saisissez ici le mot-clé que vous souhaitez rechercher.
#count=200&start={}Il compte tous les 200 et entre le nombre à afficher.
url ='https://ci.nii.ac.jp/search?q={}&count=200&start={}'.format(sys.argv[1], count)
print(url)
res = requests.get(url)
soup = BeautifulSoup(res.content , "html.parser")
for paper in soup.find_all("dl", {"class":"paper_class"}):#Tournez la boucle pour chaque papier.
#Obtenir le titre
title_list.append(paper.a.text.translate(escape))
#Acquisition de l'auteur
author_list.append(paper.find('p' , {'class':"item_subData item_authordata"}).text.translate(escape))
#Acquisition de supports de publication
media_list.append(paper.find('p' , {'class':"item_extraData item_journaldata"}).text.translate(escape))
#Enregistrer au format CSV en tant que bloc de données.
jurnal = pd.DataFrame({"Title":title_list , "Author":author_list , "Media":media_list})
#Le codage est effectué pour éviter les caractères déformés.
jurnal.to_csv(str(sys.argv[1] + '/' + str(sys.argv[1]) + '.csv'),encoding='utf_8_sig')
print('J'ai créé un fichier.')
print(jurnal.head())
if __name__ == '__main__':
#Le code que vous souhaitez exécuter uniquement lorsque vous exécutez le module directement
main()
J'ai essayé de mettre en œuvre ce que j'ai réellement créé. Tout d'abord, saisissez ce qui suit dans le terminal. Cette fois, j'ai saisi l'apprentissage automatique comme mot-clé de recherche. À la place de l'apprentissage automatique, vous pouvez saisir le mot-clé que vous souhaitez rechercher.
python search.apprentissage automatique py
Si tout se passe bien, cela ressemblera à ceci:
Le contenu du CSV ressemble à ceci.
Comment était-ce? J'ai appris le grattage il y a environ trois jours, mais le code était sale, mais c'était relativement facile à mettre en œuvre. Je pense que j'ai encore plus de temps pour étudier, alors je continuerai à faire de mon mieux.
Recommended Posts