python - 将 HTML 表转换为 JSON

标签 python html json beautifulsoup html-table

我正在尝试将通过 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"
}

关于python - 将 HTML 表转换为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18544634/

相关文章:

python - 使用 Scikit Learn 进行 Unigram 分析

python - 矩阵从 C 函数到 Python

html - 更改背景图像和 :hover color of li

javascript - 在 Firebug 中哪里可以找到 PIE.htc?

javascript - 使用javascript解析json

json - imback 功能不向机器人返回值

Python:使用 re.match 检查字符串

html - 为什么选择类内的类不起作用

java - java中从JSON数据获取整数

python - 如何根据 csv 中的列找到前三行?