当前位置: 首页 > 面试题库 >

将HTML表转换为JSON

毛德曜
2023-03-14
问题内容

我正在尝试将通过BeautifulSoup提取的表转换为JSON。

到目前为止,尽管我不确定如何从此处处理数据,但我设法隔离了所有行。任何建议将不胜感激。

[<tr><td><strong>Balance</strong></td><td><strong>$18.30</strong></td></tr>, 
<tr><td>Card name</td><td>Name</td></tr>, 
<tr><td>Account holder</td><td>NAME</td></tr>, 
<tr><td>Card number</td><td>1234</td></tr>, 
<tr><td>Status</td><td>Active</td></tr>]

(为了方便阅读,换行了)

这是我的尝试:

result = []
allrows = table.tbody.findAll('tr')
for row in allrows:
    result.append([])
    allcols = row.findAll('td')
    for col in allcols:
        thestrings = [unicode(s) for s in col.findAll(text=True)]
        thetext = ''.join(thestrings)
        result[-1].append(thetext)

这给了我以下结果:

[
 [u'Card balance', u'$18.30'],
 [u'Card name', u'NAMEn'],
 [u'Account holder', u'NAME'],
 [u'Card number', u'1234'],
 [u'Status', u'Active']
]

问题答案:

您的数据可能类似于:

html_data = """
<table>
  <tr>
    <td>Card balance</td>
    <td>$18.30</td>
  </tr>
  <tr>
    <td>Card name</td>
    <td>NAMEn</td>
  </tr>
  <tr>
    <td>Account holder</td>
    <td>NAME</td>
  </tr>
  <tr>
    <td>Card number</td>
    <td>1234</td>
  </tr>
  <tr>
    <td>Status</td>
    <td>Active</td>
  </tr>
</table>
"""

我们可以使用以下代码从中以列表的形式获得您的结果:

from bs4 import BeautifulSoup
table_data = [[cell.text for cell in row("td")]
                         for row in BeautifulSoup(html_data)("tr")]

要将结果转换为JSON(如果您不关心顺序):

import json
print json.dumps(dict(table_data))

结果:

{
    "Status": "Active",
    "Card name": "NAMEn",
    "Account holder":
    "NAME", "Card number": "1234",
    "Card balance": "$18.30"
}

如果您需要相同的订单,请使用以下命令:

from collections import OrderedDict
import json
print json.dumps(OrderedDict(table_data))

这给你:

{
    "Card balance": "$18.30",
    "Card name": "NAMEn",
    "Account holder": "NAME",
    "Card number": "1234",
    "Status": "Active"
}


 类似资料:
  • 我有很多HTML表,我正在尝试将其转换为json格式,但我的代码只适用于第一个水平表(第一个图像),而不是第二个垂直表(第二个图像)... 我在这里附上了我的代码和示例表 到目前为止我尝试的代码 以上HTML表的输出: 表2的HTML代码 null 如果表是水平表(表1),那么旧的输出就足够了 如果表是一个垂直表(表2),那么输出应该如下所示: 我试过修改代码,但对我没有任何建议???

  • 问题内容: 是否有任何jQuery或javascript库根据给定的json数据生成动态表?我不想定义列,该库应该读取json哈希中的键并生成列。 当然,我可以自己遍历json数据并生成html表。我只想知道是否存在可以简单重用的此类库。 问题答案: 感谢大家的答复,这使用jQuery。 程式码片段:

  • 问题内容: 我们有一个水晶报表,我们需要将其作为电子邮件发送出去,但是从水晶报表生成的HTML几乎很丑陋,并且导致某些电子邮件客户端出现问题。我想将其导出为富文本格式,并尽可能将其转换为HTML。 有什么建议么? 问题答案: 我会在CodeProject RTFConverter上签出此工具。这个家伙很好地细分了程序的工作方式以及转换的细节。

  • 问题内容: 我有一些需要用XML迷惑的HTML文件。我们正在使用这些HTML为应用程序提供内容,但是现在我们必须以XML形式提供这些内容。 HTML文件包含,表格,div,图像,p,b或强标签等。 我用谷歌搜索并找到了一些应用程序,但是我还无法实现。 您能否建议一种将这些文件内容转换为XML的方法? 问题答案: 我成功使用了命令行实用程序。在Linux上,我使用迅速安装了它。然后命令: 给了一个x

  • 问题内容: 将PDF文档转换为HTML在浏览器中查看的最佳解决方案是什么?该站点有多个PDF文档,访问者可以单击HTML格式的视图,并且应在屏幕上以HTML文件的形式查看。 运行PHP,Linux,Apache的标准网站。 问题答案: pdftohtml可以正常工作:快速,稳定,但是html结果充其量是丑陋的。我已经在有很多工作简历的网站上使用了很长时间。 但是,这是提取文本内容的好方法。 或Go

  • 问题内容: 我想将从下面的脚本中获取的HTML表转换为CSV文件,但是出现如下类型错误: TypeError:序列项0:预期的字符串,找到标记 将其转换为CSV文件的最简单方法是什么?我尝试为: 但它写了“无” HTML是这样的: 问题答案: 这是csv lib的工作,将每一个td放入每一行并提取文本,它将处理每一行中缺少值的地方: 与您在页面上看到的表格完全匹配的表格: 如果您想使用字幕: 但是