自动从 html 网页中提取表格值

自动从 html 网页中提取表格值

我使用 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 BeautifulSoupeasy_install BeautifulSoup),并且假设您已经保存了上述代码,htmltable2csv.py您可以在这样的页面上显示所有表格:

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

答案2

我终于找到了 Firefox 扩展Firefox 的 iMacros在记录和重放重复工作时非常有用。它可以高效地从具有相同结构的大量网页中提取数据。

此外,iMacros 还详细介绍了教程示例代码. 如果您对此有顾虑(像我一样),那么 Firefox 的 iMacros 可免费用于个人和商业用途。

我强烈推荐如果您想自动化一些繁琐的工作!

相关内容