Scripting

自動從 html 網頁中提取表值

  • February 22, 2012

我使用 MRTG 來監控設備的 CPU/MEM/流量使用情況,每個設備都有不同的埠/vlan/介面。當我想創建一個表格/excel顯示所有介面的統計資訊時,我發現它非常低效,因為我需要點擊進入大約 400 個網頁並複製表格(輸入/輸出流量,Max/Avg/目前 CPU 使用率,Max/來自 html 的平均連接數等)。

我的問題:是否有任何腳本/工具可以使這項工作自動化?

$$ Extract certain table values from each web page and fill in a table/excel $$.

我終於發現 Firefox的 Firefox 擴展 iMacros在記錄和回放重複性工作方面非常有用。它在從具有相同結構的海量網頁中提取數據方面表現出色且高效。

更重要的是,iMacros 有詳細的教程範常式式碼。iMacros for Firefox 可免費用於個人和商業用途,如果您對此有顧慮(如我)。

如果您想自動化一些繁瑣的工作,我強烈推薦iMacros !

您可能會發現有比解析 MRTG 生成的 HTML 更好的方法來獲取您想要的數據(例如,直接使用 SNMP)。但是,如果確實需要解析 HTML,這可能會有所幫助:

如果您願意使用 Python,那麼 BeautifulSoup 庫將為您提供幫助。您仍然需要編寫一些程式碼,但BeautifulSoup非常靈活。

這是一個將頁面中的所有 HTML 表格轉儲為 CSV 的粗略範例:

import sys
import csv
import urllib2

import BeautifulSoup

page    = urllib2.urlopen(sys.argv[1]).read()
soup    = BeautifulSoup.BeautifulSoup(page)
csvout  = csv.writer(sys.stdout)

for table in soup.findAll('table'):
   print '#'
   print '# Table'
   print '# Fields: ' + ','.join([tr.text for tr in table.findAll('th')])
   for row in table.findAll('tr'):
       csvout.writerow([tr.text for tr in row.findAll('td')])
   print

假設您已經安裝了 Python 以及 BeautifulSoup (pip install BeautifulSoupeasy_install BeautifulSoup) 並假設您已經保存了上面的程式碼,因為htmltable2csv.py您可以在這樣的頁面上顯示所有表格:

python htmltable2csv.py http://www.w3schools.com/tags/tag_table.asp

引用自:https://serverfault.com/questions/361779