从HTML表格中提取数据

9 浏览
0 Comments

从HTML表格中提取数据

我正在寻找一种在Linux shell环境中从HTML中获取特定信息的方法。

我感兴趣的部分如下:

Tests Failures Success Rate Average Time Min Time Max Time
103 24 76.70% 71 ms 0 ms 829 ms

我想将其存储在shell变量中,或者从上述HTML中提取的键值对中输出。例如:

Tests         : 103
Failures      : 24
Success Rate  : 76.70%
依此类推..

目前我能做的是创建一个Java程序,使用sax解析器或html解析器(如jsoup)来提取这些信息。

但是在这里使用Java似乎有点多余,因为你要执行的"包装"脚本中要包含可运行的jar文件。

我相信肯定有"shell"语言可以实现同样的功能,比如Perl、Python、Bash等。

我的问题是我对这些语言一窍不通,有人能帮我解决这个"相当简单"的问题吗?

快速更新:

我忘了提到我在.html文档中有更多的表格和更多的行,对此表示抱歉(早上太匆忙了)。

更新2:

尝试安装BeautifulSoup,因为我没有root权限:

$ wget http://www.crummy.com/software/BeautifulSoup/bs4/download/4.0/beautifulsoup4-4.1.0.tar.gz
$ tar -zxvf beautifulsoup4-4.1.0.tar.gz
$ cp -r beautifulsoup4-4.1.0/bs4 .
$ vi htmlParse.py #(将代码从Tichodromas的答案中粘贴进去,只是为了确保这是我粘贴的内容)
$ 运行文件(python htmlParse.py)

错误:

$ python htmlParse.py
Traceback (most recent call last):
  File "htmlParse.py", line 1, in ?
    from bs4 import BeautifulSoup
  File "/home/gdd/setup/py/bs4/__init__.py", line 29
    from .builder import builder_registry
         ^
SyntaxError: invalid syntax

更新3:

运行Tichodromas的答案会出现以下错误:

Traceback (most recent call last):
  File "test.py", line 27, in ?
    headings = [th.get_text() for th in table.find("tr").find_all("th")]
TypeError: 'NoneType' object is not callable

有什么想法吗?

0