GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Extrahieren von Daten aus einer HTML-Tabelle

Verwenden Sie 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

Eine Python-Lösung mit BeautifulSoup4 (Edit: mit richtigem Überspringen. Edit3: Mit class="details" um die table auszuwählen ):

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

Das Ergebnis sieht so aus:

[[(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: Um die gewünschte Ausgabe zu erzeugen, verwenden Sie etwa Folgendes:

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

Ergebnis:

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

Linux
  1. Wispr-Tags von einem Fon-Authentifizierungsportal erhalten?

  2. Extrahieren von Text aus MS-Word-Dateien in Python

  3. Dateien komprimieren, während Daten von STDIN gelesen werden

  4. So kopieren Sie eine Tabelle von einer MySQL-Datenbank in eine andere MySQL-Datenbank

  5. Zeichnen Sie zufällig eine bestimmte Anzahl von Linien aus einer Datendatei

So erstellen Sie eine Tabelle in Hive

So exportieren Sie eine Tabelle von MySQL nach CSV

Bereinigen Sie Ihre wp_options-Tabelle und automatisch geladene Daten

So fügen Sie Daten in eine MySQL-Datenbank mit PHP in XAMPP ein

So zeigen Sie Daten aus einer Textdatei in Linux an

Verhindern, dass ein Apache 2-Server sensible Daten protokolliert