自動從 html 網頁中提取表值
我使用 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 BeautifulSoup
或easy_install BeautifulSoup
) 並假設您已經保存了上面的程式碼,因為htmltable2csv.py
您可以在這樣的頁面上顯示所有表格:python htmltable2csv.py http://www.w3schools.com/tags/tag_table.asp