Tôi đang có một bảng HTML như thế này. Đã thử sử dụng pandas.read_html và BeautifulSoup,. Thực sự bực bội, giúp đỡ !!
Đây là mã Python ban đầu của tôi:
url = '//financials.morningstar.com/ajax/keystatsAjax.html?t=wja&culture=en-CA®ion=CAN'
lm_json = requests.get[url].json[]
ksContent = BeautifulSoup[lm_json["ksContent"],"html.parser"]
table = ksContent.find["table", {'class': "r_table1 text2"}]
jsonD = json.dumps[table.text]
jsonL = json.loads[jsonD]
'Bảng' sẽ có bảng HTML, nhưng chuyển đổi JSON tạo ra một văn bản thuần túy.
hỏi ngày 18 tháng 1 năm 2019 lúc 22:00Jan 18, 2019 at 22:00
Colin Zhongcolin ZhongColin Zhong
6971 Huy hiệu vàng7 Huy hiệu bạc16 Huy hiệu đồng1 gold badge7 silver badges16 bronze badges
2
Điều này có thể được giải quyết bằng cách sử dụng Python Pandas:
first_table = result.find["table"]
df = pd.read_html[str[first_table]]
with open["./table.json", "a+"] as f:
f.write[df[0].to_json[orient='records']]
f.close[]
Làm việc cho tôi.
Đã trả lời ngày 23 tháng 6 năm 2020 lúc 2:14Jun 23, 2020 at 2:14
water_ak47water_ak47water_ak47
98610 Huy hiệu bạc9 Huy hiệu đồng10 silver badges9 bronze badges
jsonD = json.dumps[htmlContent.text]
Chuyển đổi nội dung HTML thô thành đại diện chuỗi JSON. jsonL = json.loads[jsonD]
phân tích chuỗi JSON trở lại vào một đối tượng chuỗi/unicode thông thường. Điều này dẫn đến không có op, vì bất kỳ sự thoát nào được thực hiện bởi dumps[]
được hoàn nguyên bởi loads[]
. jsonL
chứa dữ liệu giống như
first_table = result.find["table"]
df = pd.read_html[str[first_table]]
with open["./table.json", "a+"] as f:
f.write[df[0].to_json[orient='records']]
f.close[]
0.Đã trả lời ngày 18 tháng 1 năm 2019 lúc 22:06Jan 18, 2019 at 22:06
Shane Fontaineshane FontaineShane Fontaine
2.3743 Huy hiệu vàng13 Huy hiệu bạc23 Huy hiệu đồng3 gold badges13 silver badges23 bronze badges
1
Chuyển đổi bảng HTML [không có hàng/colspan] sang JSON bằng cách sử dụng Pythonhtml-table-to-json
Đầu vào
TÔINgười bánSản phẩm 1 Intel Bộ xử lý 2 AMD GPU 3 Gigabyte Bo mạch chủ Đầu ra
[
{
"product": "Processor",
"vendor": "Intel",
"id": "1"
},
{
"product": "GPU",
"vendor": "AMD",
"id": "2"
},
{
"product": "Mainboard",
"vendor": "Gigabyte",
"id": "3"
}
]
Đầu vào [không có tiêu đề bảng]
1 | Intel | Bộ xử lý |
2 | AMD | GPU |
3 | Gigabyte | Bo mạch chủ |
Đầu ra
[ [ "1", "Intel", "Processor" ], [ "2", "AMD", "GPU" ], [ "3", "Gigabyte", "Mainboard" ] ]
Đầu vào
Intel | Bộ xử lý Salary | AMD | GPU | |
Gigabyte | Bo mạch chủ CARD 1605 | Đầu ra | Đầu vào [không có tiêu đề bảng] | |
Ngày | Mô tả giao dịch Another Transaction | THĂNG BẰNG | 13 tháng 7 năm 2022 | |
Ngày | Mô tả giao dịch TO XX-XXXX-XXXXXXX-51 | THĂNG BẰNG | 13 tháng 7 năm 2022 | |
Đầu ra
[ { "date": "13 Jul 2022", "transaction description": "SOME WORKPLACESalary", "debit/cheque": "", "credit/deposit": "$3,509.30", "balance": "OD $1,725.53" }, { "date": "12 Jul 2022", "transaction description": "ATM DEPOSITCARD 1605", "debit/cheque": "", "credit/deposit": "$400.00", "balance": "OD $5,234.83" }, { "date": "11 Jul 2022", "transaction description": "Another TransactionAnother Transaction", "debit/cheque": "", "credit/deposit": "$104.00", "balance": "OD $5,634.83" }, { "date": "11 Jul 2022", "transaction description": "MB TRANSFERTO XX-XXXX-XXXXXXX-51", "debit/cheque": "$4.50", "credit/deposit": "", "balance": "OD $5,738.83" } ]
Đầu vào [không có tiêu đề bảng]
- Ngày
- Mô tả giao dịch