GNU/Linux >> Tutoriales Linux >  >> Linux

Extraer datos de la tabla HTML

Usa 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

Una solución de Python que usa BeautifulSoup4 (Editar: con el salto adecuado. Editar3: Usando class="details" para seleccionar el 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

El resultado se ve así:

[[(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')]]

Editar2: Para producir el resultado deseado, use algo como esto:

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

Resultado:

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

Linux
  1. ¿Dibujar aleatoriamente un cierto número de líneas de un archivo de datos?

  2. DAEMON Sync:sincroniza datos de Linux a dispositivos Android e iOS

  3. extraer texto de archivos de MS word en python

  4. Cómo enviar datos al portapapeles local desde una sesión SSH remota

  5. Comprima archivos mientras lee datos de STDIN

Cómo crear una tabla en Hive

Cómo exportar una tabla de MySQL a CSV

Limpie su tabla wp_options y los datos cargados automáticamente

Cómo insertar datos en la base de datos MySQL usando PHP en XAMPP

Cómo mostrar datos de un archivo de texto en Linux

obtener fuente HTML o texto enriquecido del portapapeles X