GNU/Linux >> Belajar Linux >  >> Linux

Mengekstraksi data dari tabel HTML

Gunakan 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

Solusi Python menggunakan BeautifulSoup4 (Edit: dengan skipping yang tepat. Edit3: Menggunakan class="details" untuk memilih 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

Hasilnya terlihat seperti ini:

[[(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: Untuk menghasilkan keluaran yang diinginkan, gunakan sesuatu seperti ini:

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

Hasil:

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

Linux
  1. MySQL – Mengonversi ke Data Per Tabel untuk InnoDB

  2. Mendapatkan Tag Wispr Dari Portal Otentikasi Fon?

  3. Buat Data Pembacaan Teks Dari File?

  1. Gambarkan Secara Acak Sejumlah Garis Dari File Data?

  2. Sinkronisasi DAEMON – Menyinkronkan Data dari Linux ke Perangkat Android dan iOS

  3. mengekstraksi teks dari file MS word dengan python

  1. Kompres file saat membaca data dari STDIN

  2. Cara menyalin tabel dari satu database mysql ke database mysql lainnya

  3. Gambarlah sejumlah garis secara acak dari file data