Как преобразовать данные таблицы js в таблицу .csv?

Уважаемые, мне нужно преобразовать json-данные о госпитализации Covid с правительственной веб-страницы: https://onemocneni-aktualne.mzcr.cz/covid-19#panel3-hospitalization

Я просматриваю веб-страницу и идентифицирую таблицу в показанном ниже html-коде.

Я использовал следующий код Python и получил следующий результат:

import bs4 as bs
import urllib.request
import json

source = urllib.request.urlopen("https://onemocneni-aktualne.mzcr.cz/covid-19#panel3-hospitalization")
soup = bs.BeautifulSoup(source)
js_test = soup.find("div", id = "js-hospitalization-table-data")

#Convert to JSON object
jsonData = json.loads(js_test.attrs["data-table"])   
print (jsonData['body'])

Спасибо.

Что такое «таблица данных»?

martineau 21.12.2020 19:10

Я думал, что файл .csv...

Jara 21.12.2020 19:20

Судя по полученному результату, похоже, что data-table находится в формате JSON, поэтому вам нужно будет преобразовать данные в этом формате в CSV, что может быть или не быть возможным, потому что последний не поддерживает вложенные структуры данных, в то время как другой делает.

martineau 21.12.2020 19:31

я пытался импортировать эти данные json в xls или Power BI, но безуспешно. поэтому моя идея заключалась в том, чтобы извлечь текст за «телом»: и преобразовать данные в [ xxx ] в файл .csv .. есть идеи? Спасибо

Jara 21.12.2020 19:59

Извините, я не знаю, как использовать BeautifulSoup, но если вы можете получить от него только значение data-table или то, что он возвращает, то я мог бы помочь преобразовать его в формат CSV.

martineau 21.12.2020 20:36

уфф. вот:

Jara 21.12.2020 22:16

импортировать bs4 как bs import urllib.request import json source = urllib.request.urlopen("onemocneni-aktualne.mzcr.cz/…) суп = bs.BeautifulSoup(источник) js_test = суп.найти("div", id = "js-hospitalization-table-data") jsonData = json.loads(js_test.attrs["data-table"]) #Convert to JSON Object.print (jsonData['body'])

Jara 21.12.2020 22:17

Пожалуйста, добавьте код к вашему вопросу.

martineau 21.12.2020 22:17

Пожалуйста. см. выше, а точнее ниже

Jara 21.12.2020 22:36

Извините, как я уже сказал, я не знаком с BeautifulSoup (и даже не установил его).

martineau 21.12.2020 22:40

Спасибо. вы в любом случае, очень помогаете двигаться дальше

Jara 21.12.2020 22:43
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
11
151
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Нужные вам данные находятся в формате JSON, вы можете преобразовать их в словарь Python (dict) и получить данные под ключом body с помощью встроенного модуля json.

import json
import bs4 as bs
import urllib.request

source = urllib.request.urlopen(
    "https://onemocneni-aktualne.mzcr.cz/covid-19#panel3-hospitalization"
)
soup = bs.BeautifulSoup(source, "html.parser")

json_data = json.loads(
    soup.find("div", id = "js-hospitalization-table-data")["data-table"]
)

print(type(json_data))
print(*json_data["body"])

Выход (частичный):

<class 'dict'>
['01.03.2020', 0, 0, 0, 0, 0] ['02.03.2020', 0, 0, 0, 0, 0] ... ['20.12.2020', 4398, 588, 0.1337, 34796, 0.7152]

Большое спасибо. Однако я не нашел, как преобразовать этот словарь в таблицу или фрейм данных. не могли бы вы добавить это для меня? Спасибо

Jara 21.12.2020 22:44

@Jara Это другой вопрос. См. Как конвертировать файл JSON в Dataframe. Если вы все еще застряли, рассмотрите возможность задать новый вопрос здесь, в Stackoverflow.

MendelG 21.12.2020 23:02

Другие вопросы по теме