[Python] Comment récupérer un fichier html local et le générer au format CSV à l'aide de Beautiful Soup

introduction

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.

Environnement de développement

pyenv: 1.2.15 python: 3.6.5 Beautiful Soup: 4.4.0 VSCode: 1.41.1

Construction de l'environnement Python

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)

Qu'est-ce que la belle soupe?

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/

Introduction de la belle soupe

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éparation du fichier html

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é ~-->

Travaux de grattage

Créer un fichier Python

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

Exécution de fichiers Python

$ cd sample_file
$ python script.py

Résultat de sortie

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

Traitement CSV

1. Meilleure lisibilité des fichiers CSV

Si vous utilisez VS Code, vous pouvez rendre le CSV beaucoup plus facile à voir en introduisant une extension appelée Rainbow CSV.

before

スクリーンショット 2020-01-05 10.12.25.png

after スクリーンショット 2020-01-05 10.12.49.png

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

2. Processus pour les données sur les semences

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. 970a4afb7683f49554298fc9937affa6.gif 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/)

Résumé

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.

URL de référence

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/

Recommended Posts

[Python] Comment récupérer un fichier html local et le générer au format CSV à l'aide de Beautiful Soup
[Python] Comment stocker un fichier csv en tant que données de tableau à une dimension
Comment lire un fichier CSV avec Python 2/3
Comment rechercher des données HTML à l'aide de Beautiful Soup
Lisez le fichier CSV avec Python et convertissez-le en DataFrame tel quel
Comment saisir une chaîne de caractères en Python et la sortir telle quelle ou dans la direction opposée.
[Python] Comment nommer les données de table et les sortir avec csv (méthode to_csv)
[Python] Comment générer une table pandas dans un fichier Excel
Sortie vers un fichier csv avec Python
Comment coller un fichier CSV dans un fichier Excel à l'aide de Pandas
Traitez le résultat de l'exécution de Splunk en utilisant Python et enregistrez-le dans un fichier
Comment créer un fichier factice CSV contenant du japonais à l'aide de Faker
[Python] Comment convertir un fichier db en csv
[Python] Gratter une table avec Beautiful Soup
Comment installer le package python dans un environnement local en tant qu'utilisateur général
[Python] Comment lire le fichier csv (méthode read_csv du module pandas)
Comment déguiser un fichier ZIP en fichier PNG
Lire JSON avec Python et générer un CSV
Comment créer un fichier JSON en Python
J'ai essayé de lire un fichier CSV en utilisant Python
Exécutez des fichiers Python à partir de HTML en utilisant Django
Comment générer "Ketsumaimo" en standard en Python
Apprentissage amélioré 35 python Développement local, attachez un lien vers myModule et importez-le.
[Introduction à Pandas] Lire un fichier csv sans nom de colonne et lui donner un nom de colonne
Divisez chaque diapositive PowerPoint en un fichier JPG et exportez-le avec python
Comment lire les fichiers de numéros de série en boucle, les traiter et les représenter graphiquement
[Python] Comment créer un environnement de serveur Web local avec SimpleHTTPServer et CGIHTTPServer
Comment configurer un environnement Python à l'aide de pyenv
Essayez de créer un fichier compressé en utilisant Python et zlib
Comment créer un bel environnement Python sur un nouveau Mac et installer Jupter Notebook
Comment convertir un fichier JSON en fichier CSV avec Python Pandas
Comment créer un package Python à l'aide de VS Code
Lire le fichier json avec Python, le formater et générer le json
Comment enregistrer une table récupérée par python en csv
Script Python qui crée un fichier JSON à partir d'un fichier CSV
Comment exécuter une commande à l'aide d'un sous-processus en Python
Afficher le résultat de sortie de sklearn.metrics.classification_report sous forme de fichier CSV
Sortie d'un vidage binaire en binaire et retour dans un fichier binaire
Comment dessiner de manière interactive un pipeline d'apprentissage automatique avec scikit-learn et l'enregistrer au format HTML
Une histoire qui facilite l'estimation de la surface habitable à l'aide d'Elasticsearch et de Python
[Python / Ruby] Comprendre le code Comment obtenir des données en ligne et les écrire au format CSV
[Python] Qu'est-ce qu'un tuple? Explique comment utiliser sans toucher et comment l'utiliser avec des exemples.
Essayez de le faire avec GUI, PyQt en Python
Comment exécuter un fichier Python à une invite de commande Windows 10
Changer la destination de sortie standard en un fichier en Python
Comment importer des fichiers où vous le souhaitez en Python
Comment transloquer un tableau à deux dimensions en utilisant uniquement python [Note]
Comment convertir Youtube en mp3 et le télécharger en toute sécurité [Python]
Les bases de l'apprentissage Python ~ Comment générer (afficher) une chaîne de caractères ~
Comment écrire une classe méta qui prend en charge à la fois python2 et python3
Comment utiliser un fichier autre que .fabricrc comme fichier de configuration
Exportez les informations produit au format CSV à l'aide de l'API de recherche de produits Rakuten [Python]
Vue d'ensemble de l'environnement virtuel Python et comment le créer
Exécutez le code de sortie sur le serveur Web local en tant que "A, faisant semblant d'être B" en python
Comment télécharger des fichiers sur Cloud Storage à l'aide de Python [Créer une caméra à point fixe avec Raspberry PI # 1]
Comment faire coexister Python 3.x et 2.x sur Mac (j'ai également inclus opencv en bonus)
[Python scraping] Affiche l'URL et le titre du site contenant un mot-clé spécifique dans un fichier texte
Extraire le jeu de données bigquery et la liste des tables avec python et la sortie en CSV
Comment installer OpenCV sur Cloud9 et l'exécuter en Python