복붙노트

[PYTHON] HTML 표를 JSON으로 변환

PYTHON

HTML 표를 JSON으로 변환

내가 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']
]

해결법

  1. ==============================

    1.아마도 귀하의 데이터는 다음과 같습니다.

    아마도 귀하의 데이터는 다음과 같습니다.

    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"
    }
    
  2. from https://stackoverflow.com/questions/18544634/convert-a-html-table-to-json by cc-by-sa and MIT license