htmlテーブルをjsonオブジェクトに変換してファイルに書き込もうとしています。基本的には、プリンタの設定ページから取得したプリンタデータです。htmlテーブルをPythonのjsonオブジェクトに変換する
これは
html_data = urllib2.urlopen('http://192.168.2.198/sys_count.html')
soup = BeautifulSoup(html_data,"lxml")
table_data = [[cell.text for cell in row("td")]
for row in soup.body.find_all('table', attrs={'class' : 'matrix'})]
with open('/home/abc/Desktop/JsonData.txt', 'w') as outfile:
json.dump(table_data, outfile, sort_keys = 'true', indent = 4, separators=(',',':'),
ensure_ascii=False)
出力され、私のコードです:
[
[
"Black & White",
"79555",
"Full Colour",
"0"
],
[
"Copy",
"30697",
"Printer",
"48798",
"Others",
"60",
"Scan Send",
"Black & White",
"648",
"Full Colour",
"747"
],
[
"Document Feeder",
"11709",
"Duplex",
"13799"
]
]
私は出力になりたい - 他のテーブルのための
{
{
"Black & White": "79555",
"Full Colour": "0"
},
など....
は多くの方法を試しましたが、私がリストをdictに変換しようとすると、タイプエラーが発生します。助けが必要。
参考のため、私はPython 2.7を使用しています。それが助けば。
詳細については、[プリンタ]ページの画像を追加してください。
Snapshot of printer setup page
編集質問と使用ボタン:
FWIWは、ここ
list_to_dict
のdictの理解バージョンです。 – furas(キー、値)のペアのリストがあれば、リストのリストをdictsのリストに簡単に変換できます。しかし、そこには値が一致しないキーのような "Scan Send"があります。それとも、「その他」キーの追加値です。または、それは「ブラック&ホワイト」、「648」、「フルカラー」、「747」のものを含むサブ辞書のキーです。これは、タスクを少しトリッキーにします。 –
だから、 "Scan Send"はサブディクションのキーでなければなりません。しかし、あなたがテーブルのデータを抽出した方法がその構造情報を失うので、 'table_data'リストからそれを見るのは容易ではありません。それをプログラムにハードコーディングするだけです。 「スキャン送信」のように、サブディクテーションに必要なデータが続く他のキーが存在する可能性はありますか? –