Je voulais extraire des données texte d'un fichier html local, j'ai donc essayé diverses choses, mais comme la bibliothèque Python Beautiful Soup était très pratique, je vais partager comment l'utiliser et comment la générer dans un fichier CSV.
pyenv: 1.2.15 python: 3.6.5 Beautiful Soup: 4.4.0 VSCode: 1.41.1
Pour la construction de l'environnement, je me suis référé à la leçon suivante de Progate. Préparez un environnement de développement Python! (Mac)
Un type de bibliothèque Python basée sur des balises HTML et des sélecteurs CSS à partir de données HTML Vous pouvez effectuer un grattage. Référence officielle: https://www.crummy.com/software/BeautifulSoup/bs4/doc/ Traduction japonaise de référence (ver 3.0): https://tdoc.info/beautifulsoup/
Installez en utilisant pip. J'ai fait référence à l'article suivant.
[Introduction à Python] Qu'est-ce que pip? Explication facile à comprendre de la façon d'utiliser! Grattons avec une belle soupe de Python
Vous pouvez l'installer avec la commande suivante.
pip install beautifulsoup4
Préparez le fichier html à extraire localement. Voici un exemple de fichier.
/sample_file/sample.html
<!--~ abrégé ~-->
<div>
<ul lass="sample">
<li class="sample">
<a href="aaa">aaaaaa</a>
</li>
<li class="sample">
<a href="bbb">bbbbb</a>
</li>
</ul>
<div class="sample">
<a href="ccc">ccc</a>
</div>
<div class="sample">
<div class="sample">
<a href="ddd">ddddd</a>
</div>
</div>
</div>
<!--~ abrégé ~-->
Ensuite, créez un programme Python. Créez-le dans le même répertoire que le fichier html.
/sample_file/script.py
import bs4
import csv #module"CSV"Appel
#Créer une soupe à partir d'un fichier html à gratter
soup = bs4.BeautifulSoup(open('sample.html'), 'html.parser')
links = soup.find_all('a') #Obtenez tous les éléments d'une balise
csvlist = [] #Créer un tableau
for link in links: #Stocker les données textuelles d'une balise dans un tableau
sample_txt = link.text
csvlist.append(sample_txt)
#Ouvrez le fichier CSV. Si le fichier n'existe pas, créez-en un nouveau
f = open("output_sample.csv", "w")
writecsv = csv.writer(f, lineterminator='\n')
writecsv.writerow(csvlist) #production
f.close() #Fermer le fichier CSV
J'ai fait référence à l'article suivant.
Analyse HTML avec Python (Beautiful Soup) Exportez le HTML récupéré par Beautiful Soup au format CSV
$ cd sample_file
$ python script.py
Le fichier CSV sera généré dans le même répertoire que celui indiqué ci-dessous.
output_sample.csv
aaaaaa,bbbbb,ccc,ddddd
Si vous utilisez VS Code, vous pouvez rendre le CSV beaucoup plus facile à voir en introduisant une extension appelée Rainbow CSV.
before
after
Pour l'introduction de Rainbow CSV, je me suis référé à l'article suivant. Présentation de "Rainbow CSV" qui rend CSV plus facile à voir avec VS Code
Le grattage avec la méthode ci-dessus peut entraîner de nombreux sauts de ligne. Lorsque vous souhaitez utiliser le fichier CSV comme contenu du tableau dans les données de départ, etc. Vous souhaiterez peut-être supprimer les sauts de ligne pour créer une ligne. Dans un tel cas, il est recommandé de supprimer tous les sauts de ligne avec la fonction de remplacement de code VS. Je me suis référé à l'article suivant pour cette méthode. [[Visual Studio Code] Comment remplacer le code de saut de ligne en une seule ligne] (https://kukka.me/vsc-newline/)
Vous pouvez effectuer un grattage avec Beautiful Soup. Vous pouvez sortir un fichier CSV en utilisant le module "CSV". Si le fichier CSV contient de nombreux sauts de ligne en raison de la structure du fichier html, La fonction de remplacement du code VS est pratique.
https://prog-8.com/docs/python-env https://www.crummy.com/software/BeautifulSoup/bs4/doc/ https://www.sejuku.net/blog/50417 https://www.sejuku.net/blog/75137 https://maku77.github.io/python/parse-html-by-beautiful-soup.html https://5log.hateblo.jp/entry/2019/01/03/075552 https://qiita.com/0w0/items/07a481921a2ac09a049f https://kukka.me/vsc-newline/