GNU/Linux >> Znalost Linux >  >> Linux

Extrahování dat z HTML tabulky

Použijte 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

Řešení Pythonu využívající BeautifulSoup4 (Upravit: se správným přeskakováním. Úprava3: Pomocí class="details" vyberte 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

Výsledek vypadá takto:

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

Úprava2: Chcete-li vytvořit požadovaný výstup, použijte něco takového:

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

Výsledek:

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

Linux
  1. Získávání značek Wispr z portálu pro ověřování Fon?

  2. Upravit příchozí poštu z textu/prostého na text/html?

  3. Vytvořit data pro čtení textu ze souboru?

  1. DAEMON Sync – Synchronizace dat z Linuxu do zařízení Android a iOS

  2. extrahování textu ze souborů MS Word v pythonu

  3. Komprimujte soubory při čtení dat ze STDIN

  1. Náhodně nakreslit určitý počet řádků z datového souboru?

  2. Jak zkopírovat tabulku z jedné databáze mysql do jiné databáze mysql

  3. Náhodně nakreslete určitý počet řádků z datového souboru