从 HTML 表中提取数据

2024-03-09

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

这是我感兴趣的一点:

<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
  <tr valign="top">
    <th>Tests</th>
    <th>Failures</th>
    <th>Success Rate</th>
    <th>Average Time</th>
    <th>Min Time</th>
    <th>Max Time</th>
  </tr>
  <tr valign="top" class="Failure">
    <td>103</td>
    <td>24</td>
    <td>76.70%</td>
    <td>71 ms</td>
    <td>0 ms</td>
    <td>829 ms</td>
  </tr>
</table>

我想存储在 shell 变量中或在从上面的 html 中提取的键值对中回显这些变量。例子 :

Tests         : 103
Failures      : 24
Success Rate  : 76.70 %
and so on..

我现在能做的是创建一个java程序,它将使用sax解析器或html解析器(例如jsoup)来提取此信息。

但是在这里使用 java 似乎会产生开销,因为将可运行的 jar 包含在要执行的“包装器”脚本中。

我确信一定有“shell”语言可以做同样的事情,即 perl、python、bash 等。

我的问题是我对这些的经验为零,有人可以帮助我解决这个“相当简单”的问题

快速更新:

我忘了提及,我在 .html 文档中有更多的表格和更多的行,对此感到抱歉(清晨)。

更新#2:

尝试像这样安装 Bsoup,因为我没有 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 # (paste code from ) Tichodromas' answer, just in case this (http://pastebin.com/4Je11Y9q) is what I pasted
$ run file (python htmlParse.py)

error:

$ 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

有任何想法吗?


Python 解决方案使用美丽汤4 http://www.crummy.com/software/BeautifulSoup/bs4/doc/ (Edit:适当的跳过。Edit3: Using class="details"选择table):

from bs4 import BeautifulSoup

html = """
  <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
    <tr valign="top">
      <th>Tests</th>
      <th>Failures</th>
      <th>Success Rate</th>
      <th>Average Time</th>
      <th>Min Time</th>
      <th>Max Time</th>
   </tr>
   <tr valign="top" class="Failure">
     <td>103</td>
     <td>24</td>
     <td>76.70%</td>
     <td>71 ms</td>
     <td>0 ms</td>
     <td>829 ms</td>
  </tr>
</table>"""

soup = BeautifulSoup(html)
table = soup.find("table", attrs={"class":"details"})

# The first tr contains the field names.
headings = [th.get_text() for th in table.find("tr").find_all("th")]

datasets = []
for row in table.find_all("tr")[1:]:
    dataset = zip(headings, (td.get_text() for td in row.find_all("td")))
    datasets.append(dataset)

print datasets

结果如下:

[[(u'Tests', u'103'),
  (u'Failures', u'24'),
  (u'Success Rate', u'76.70%'),
  (u'Average Time', u'71 ms'),
  (u'Min Time', u'0 ms'),
  (u'Max Time', u'829 ms')]]

Edit2:要产生所需的输出,请使用如下内容:

for dataset in datasets:
    for field in dataset:
        print "{0:<16}: {1}".format(field[0], field[1])

Result:

Tests           : 103
Failures        : 24
Success Rate    : 76.70%
Average Time    : 71 ms
Min Time        : 0 ms
Max Time        : 829 ms
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 HTML 表中提取数据 的相关文章

  • 从Python中的字符串中提取货币金额

    我正在制作一个程序 从字符串中获取货币并将其转换为其他货币 例如 如果字符串是 the car cost me 13 250 我需要得到 and 13250 我已经有了这个正则表达式 1 确实如此 但是该字符串很有可能有多个价格 并且全部使
  • Tweepy StreamListener 到 CSV

    我是 python 新手 我正在尝试开发一个应用程序 使用 Tweepy 和 Streaming API 从 Twitter 检索数据并将数据转换为 CSV 文件 问题是此代码不会创建输出 CSV 文件 也许是因为我应该将代码设置为在实现例
  • 更新 Sqlalchemy 中的多个列

    我有一个在 Flask 上运行的应用程序 并使用 sqlalchemy 与数据库交互 我想用用户指定的值更新表的列 我正在使用的查询是 def update table value1 value2 value3 query update T
  • 查找模块中显式定义的函数 (python)

    好的 我知道您可以使用 dir 方法列出模块中的所有内容 但是有什么方法可以仅查看该模块中定义的函数吗 例如 假设我的模块如下所示 from datetime import date datetime def test return Thi
  • 更改 Altair 中的构面标题位置?

    如何将方面标题 在本例中为年份 移动到每个图的上方 默认值似乎位于图表的一侧 这可以轻易改变吗 import altair as alt from vega datasets import data df data seattle weat
  • 登录网站并使用 python 请求下载文件

    我有一个带有 HTML 表单的网站 登录后 它会将我带到 start php 站点 然后将我重定向到overview php 我想从该服务器下载文件 当我单击 ZIP 文件的下载链接时 链接后面的地址是 getimage php path
  • 可以用 Django 制作移动应用程序吗?

    我想知道我是否可以在我的网站上使用 Django 代码 并以某种方式在移动应用程序 Flutter 等框架中使用它 那么是否可以使用我现在拥有的 Django 后端并在移动应用程序中使用它 所以就像models views etc 是的 有
  • 如何绑定值 INSERT INTO mysql perl

    我有下面的代码可以工作 但我需要知道如何绑定它们以确保安全 如果我只是将 new row 替换为 并将其放入执行中我收到错误 感谢您的帮助 foreach my field account field order new row param
  • PySide6.1 与 matplotlib 3.4 不兼容

    当我只安装PySide6时 GUI程序运行良好 但是一旦我安装了matplotlib及其依赖包 包括pyqt5 则GUI程序将无法运行并输出以下错误消息 This application failed to start because no
  • Pandas 滚动窗口 Spearman 相关性

    我想使用滚动窗口计算 DataFrame 两列之间的 Spearman 和 或 Pearson 相关性 我努力了df corr df col1 rolling P corr df col2 P为窗口尺寸 但我似乎无法定义该方法 添加meth
  • 解析根元素内元素之间的 XML 文本

    我正在尝试用 Python 解析 XML 以下是 XML 结构的示例 a aaaa1 b bbbb b aaaa2 a
  • 如果输入被重定向则执行操作

    我想知道如果我的输入被重定向 我应该如何在 C 程序中执行操作 例如 假设我有已编译的程序 prog 并且我将输入 input txt 重定向到它 我这样做 prog lt input txt 我如何在代码中检测到这一点 一般来说 您无法判
  • 如何使用 Keras ImageDataGenerator 预测单个图像?

    我已经训练 CNN 对图像进行 3 类分类 在训练模型时 我使用 keras 的 ImageDataGenerator 类对图像应用预处理功能并重新缩放它 现在我的网络在测试集上训练得非常准确 但我不知道如何在单图像预测上应用预处理功能 如
  • 是否可以将 pd.Series 分配给无序 pd.DataFrame 中的列而不映射到索引(即不重新排序值)?

    在 Pandas 中创建或分配新列时 我发现了一些意外的行为 当我对 pd DataFrame 进行过滤或排序 从而混合索引 然后从 pd Series 创建新列时 Pandas 会重新排序该系列以映射到 DataFrame 索引 例如 d
  • 检测 IDLE 的存在/如何判断 __file__ 是否未设置

    我有一个脚本需要使用 file 所以我了解到 IDLE 没有设置这个 有没有办法从我的脚本中检测到 IDLE 的存在 if file not in globals file is not set 如果你想做一些特别的事情 file 未设置
  • 如何在 robobrowser-python 中发出 POST 请求

    http robobrowser readthedocs org en latest api html http robobrowser readthedocs org en latest api html 我正在尝试使用 APIbrows
  • 更改 Python Cmd 模块处理自动完成的方式

    我有一个 Cmd 控制台 设置为自动完成 Magic the Gathering 收藏管理系统的卡牌名称 它使用文本参数在数据库中查询卡片 并使用结果自动完成 建议卡片 然而 这些卡片名称有多个单词 Cmd 会从last到行尾的空间 例如
  • Django 模型:如何使用 mixin 类来覆盖 django 模型以实现 save 等功能

    我想在每次保存模型之前验证值 所以 我必须重写保存函数 代码几乎是一样的 我想把它写在 mixin 类中 但失败了 我不知道如何写 super func 我英语不好 抱歉 class SyncableMixin object def sav
  • python sklearn中的fit方法

    我问自己关于 sklearn 中拟合方法的各种问题 问题1 当我这样做时 from sklearn decomposition import TruncatedSVD model TruncatedSVD svd 1 model fit X
  • 长/宽数据到宽/长

    我有一个数据框 如下所示 import pandas as pd d decil 1 decil 1 decil 2 decil 2 decil 3 decil 3 decil kommune AA BB AA BB AA BB 2010

随机推荐

  • Chrome SVG 网络字体在选择输入中出现奇怪的字符

    Windows 8 上的 Chrome 26 0 1410 64m 在渲染 WebFonts 时出现问题 这是一个已知问题 解决方案是首先提供字体的 svg 版本而不是 woff 版本 它修复了抗锯齿并使字体看起来再次漂亮 此方法的缺点是选
  • Safari iOS 12.2 和 12.3 中的错误

    所以我刚才在做个人项目时注意到了一些奇怪的事情 以下代码将导致位置问题div如果手机在方向之间来回切换 则元素处于纵向模式 而不是div如果固定或与屏幕底部齐平 div 将漂浮在屏幕上方并且根本不接触屏幕底部 html width 100
  • Java 中的泛型和反射

    这可能是一个非常基本的问题 但我对 Java 中的泛型确实很陌生 而且我很难改变我的思维过程与 C 中的完成方式 所以请耐心等待 我正在尝试用 Java 构建一个通用存储库 我创建了一个 IRepository 界面 如下所示 public
  • 在asp.net中使用表单身份验证时,是否可以使用iis 7来管理用户

    我有一个使用表单身份验证的 ASP NET Web 应用程序 一切都已配置并正常工作 但是 我正在处理创建和维护用户和角色成员资格的问题 我知道我可以推出自己的解决方案 但我想知道是否有替代解决方案 iis7 是否提供用于管理表单身份验证用
  • 如何使用 WinAPI 锁定内存中的页面?

    我需要防止应用程序的内存页面在 Windows 上从 RAM 中换出 是否有与 POSIX 等效的 WinAPI 函数mlockall http opengroup org onlinepubs 007908799 xsh mlockall
  • Erlang中socket的“packet”选项怎么能如此加速tcp传输呢?

    使用 packet 4 通过本地主机上的两个不同端口传输1G数据只需要8秒 而使用 packet raw 则无法在30秒内完成相同的任务 我知道如果使用后一种方法 数据将以数万个小块的形式到达 在archlinux上大小为1460字节 我已
  • 检查文件是否包含字符串

    所以我在这里找到了这个问题 但我对输出以及如何使用 if 语句处理它有疑问 这就是我所拥有的 但它总是说这是真的 即使文件中不存在监视器这个词 if File readlines testfile txt grep monitor do s
  • 为什么Java不支持在finally抛出异常时从try/catch中检索丢失的异常?

    在 Java 7 中 该功能被添加到 通过getSuppressed 获取从 try with resources 语句的隐式 finally 块抛出的异常 似乎仍然没有一种方法 据我所知 可以做相反的事情 当有一个显式的finally块并
  • 在 HTTP 请求中指定端口号 (node.js)

    使用请求模块发出 HTTP 请求时是否可以指定端口号 我在文档中没有看到任何有关此内容的信息 var request require request this works request method GET url http exampl
  • h 标签的额外字间距

    I have h2标签并且有内容 before HTML h2 class glyphicon arrow heading text white margin zero This is h2 tag and it has word spac
  • 创建运行批处理文件的快捷方式

    我想创建一个 powershell 脚本 在 Windows 7 任务栏中创建一个快捷方式 从 cmd exe 运行批处理文件 尝试按照这两篇文章中的说明进行操作 https superuser com questions 100249 h
  • 具有动态依赖关系的静态库

    我遇到过很多类似的问题 但我并没有真正得到答案 因此 我有一个依赖于 Static lib 的 App exe 而 Static lib 又依赖于动态库 Dynamic dll 在 Static lib 中 我链接到 Dynamic lib
  • 爬虫脚本php

    我在这里抓取了一段脚本来抓取网站 将其放在我的服务器上并且它可以工作 唯一的问题是 如果我尝试爬行并将深度设置为 4 以上 则它不起作用 我想知道这是由于服务器缺乏资源还是代码本身造成的
  • 如何进行复杂的查询? | ChartJS 和 Django

    我使用下面的 Chart JS 库创建了一个图表 我的 models py 下面 class Organization models Model name models CharField max length 250 unique Tru
  • XmlSerializer 没有序列化我的类中的所有内容

    我有一个非常基本的类 它是子类的列表 加上一些摘要数据 Serializable public class ProductCollection List
  • 数学/算法/ JS:如何确定 2 个以上矩形是否相交,给定每个矩形的 TopLeft(x0, y0) 和 Bottom-Right(x1, y1)

    我遇到了完成我的申请所需的数学问题 所以我寻求帮助 给定 2 个 或更多 但基本上是 2 个 矩形 每个矩形有 2 个已知点 左上角 x1 y1 and 右下角 x2 y2 如果需要解决问题 我可以通过这些信息找到长度 TL x1 y1 T
  • 逃离 SharePoint [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 你们中有人尝试过从共享点运行吗 我已经使用过 sharepoint 足够多的经验 知道这不是我感兴趣的东西 我的兴趣更多的是 API 后端 分布式开发
  • 查找字典中具有非零值的最大键的有效方法

    我是 Python 新手 尝试以更 Pythonic 和更高效的方式实现代码 给定一个包含数字键和值的字典 找到具有非零值的最大键的最佳方法是什么 Thanks 像这样的事情应该相当快 gt gt gt x 0 5 1 7 2 0 gt g
  • Chrome 和 Safari 中的 Facebook Connect 登录重定向

    我在使用 Facebook Connect 时遇到问题 似乎无法理解 用户单击 fb login 按钮 出现弹出窗口并进行身份验证 弹出窗口关闭并调用登录函数 正如预期的那样 这种情况在 IE 和 Firefox 中发生 但是在 Chrom
  • 从 HTML 表中提取数据

    我正在寻找一种在 Linux shell 环境中从 HTML 获取某些信息的方法 这是我感兴趣的一点 table class details border 0 cellpadding 5 cellspacing 2 width 95 tr