我使用 MRTG 来监控设备的 CPU/MEM/流量使用情况,每个设备都有不同的端口/vlan/接口。当我想创建一个显示所有接口统计信息的表格/excel 时,我发现它非常低效,因为我需要点击大约 400 个网页并从 html 中复制表格(输入/输出流量、最大/平均/当前 CPU 使用率、最大/平均连接数等)。
我的问题:是否有任何脚本/工具可以自动化这项工作?[从每个网页中提取某些表格值并填写表格/excel]。
答案1
你可能会发现有比解析 MRTG 生成的 HTML 更好的方法来获取你想要的数据(例如,直接使用 SNMP)。但是,如果真的需要解析 HTML,这可能会有所帮助:
如果你愿意使用 Python,那么 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
答案2
我终于找到了 Firefox 扩展Firefox 的 iMacros在记录和重放重复工作时非常有用。它可以高效地从具有相同结构的大量网页中提取数据。
此外,iMacros 还详细介绍了教程和示例代码. 如果您对此有顾虑(像我一样),那么 Firefox 的 iMacros 可免费用于个人和商业用途。
我强烈推荐宏如果您想自动化一些繁琐的工作!