从HTML网页自动提取表值

我使用MRTG来监视设备的CPU / MEM /stream量使用情况,每个设备有不同的端口/ vlan /接口。 当我想创build一个显示所有接口统计信息的表/ excel时,我发现效率非常低,因为我需要点击大约400个网页并复制表(input/输出stream量,最大/平均/当前CPU使用率,最大/平均连接等)从HTML。

我的问题:是否有任何脚本/工具来自动化这项工作? [从每个网页中提取特定的表值并填写表格/ excel]。

您可能会发现,比parsing由MRTG生成的HTML(例如,直接使用SNMP)有更好的方法来获取所需的数据。 但是,如果真的需要parsingHTML,这可能会有所帮助:

如果你愿意使用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 

我终于findFirefox扩展iMacros for Firefox非常有用的录制和重放重复的工作。 它在从具有相同结构的大量网页中提取数据时运行良好并且高效。

更重要的是,iMacros有详细的教程和示例代码 。 iMacros的Firefox是免费的个人和商业用途,如果你有这个问题(像我一样)。

如果你想自动执行一些繁琐的工作,我会强烈推荐iMacros !