GNU/Linux >> Tutoriels Linux >  >> Linux

Extraire des données d'un tableau HTML

Utilisez pandas.read_html :

import pandas as pd
html_tables = pd.read_html('resources/test.html')
df = html_tables[0]
df.T # transpose to align
                   0
Tests            103
Failures          24
Success Rate  76.70%
Average Time   71 ms

Une solution Python utilisant BeautifulSoup4 (Modifier : avec un saut approprié. Edit3 : Utilisation de class="details" pour sélectionner le table ):

from bs4 import BeautifulSoup

html = """
  <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
    <tr valign="top">
      <th>Tests</th>
      <th>Failures</th>
      <th>Success Rate</th>
      <th>Average Time</th>
      <th>Min Time</th>
      <th>Max Time</th>
   </tr>
   <tr valign="top" class="Failure">
     <td>103</td>
     <td>24</td>
     <td>76.70%</td>
     <td>71 ms</td>
     <td>0 ms</td>
     <td>829 ms</td>
  </tr>
</table>"""

soup = BeautifulSoup(html)
table = soup.find("table", attrs={"class":"details"})

# The first tr contains the field names.
headings = [th.get_text() for th in table.find("tr").find_all("th")]

datasets = []
for row in table.find_all("tr")[1:]:
    dataset = zip(headings, (td.get_text() for td in row.find_all("td")))
    datasets.append(dataset)

print datasets

Le résultat ressemble à ceci :

[[(u'Tests', u'103'),
  (u'Failures', u'24'),
  (u'Success Rate', u'76.70%'),
  (u'Average Time', u'71 ms'),
  (u'Min Time', u'0 ms'),
  (u'Max Time', u'829 ms')]]

Edit2 : Pour produire la sortie souhaitée, utilisez quelque chose comme ceci :

for dataset in datasets:
    for field in dataset:
        print "{0:<16}: {1}".format(field[0], field[1])

Résultat :

Tests           : 103
Failures        : 24
Success Rate    : 76.70%
Average Time    : 71 ms
Min Time        : 0 ms
Max Time        : 829 ms

Linux
  1. Obtenir des balises Wispr à partir d'un portail d'authentification Fon ?

  2. Tirer au hasard un certain nombre de lignes à partir d'un fichier de données ?

  3. DAEMON Sync - Synchroniser les données de Linux vers les appareils Android et iOS

  4. extraire du texte de fichiers MS word en python

  5. Compresser les fichiers lors de la lecture des données de STDIN

Comment créer une table dans Hive

Comment exporter une table de MySQL vers CSV

Nettoyez votre table wp_options et vos données chargées automatiquement

Comment insérer des données dans la base de données MySQL à l'aide de PHP dans XAMPP

Comment afficher les données d'un fichier texte sous Linux

Empêcher un serveur Apache 2 de consigner des données sensibles