使用python刮刮冠状病毒互动图

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用python刮刮冠状病毒互动图相关的知识,希望对你有一定的参考价值。

我正在尝试抓取与COVID-19相关的数据。我可以从网站上下载一些数据,例如总案例数,但不能下载交互式图表中的数据。

我通常通过在inspect元素页面的'network'中找到源来使用json抓取交互式图形。但是,我无法找到要刮擦的交互式图形的“网络”。

有人可以帮我从“总死亡人数”图表中提取数据吗?或网站上的任何其他图形。谢谢。

只是要弄清楚。我不想从“国家”表中抓取数据。我已经做到了。我要做的是从图表中获取数据。例如,来自死亡率比率图与日期或活动病例图与时间日期图的数据。

谢谢

import requests
import urllib.request
import time
import json
from bs4 import BeautifulSoup 
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns

url= 'https://www.worldometers.info/coronavirus/#countries'
r = requests.get(url)
soup= BeautifulSoup(r.text, "html.parser")

例如,受影响国家的数量:

len(soup.find_all('table',{'id':'main_table_countries'})[0].find('tbody').find_all('tr'))

website

答案

这是我的看法:

首先,您必须以NumPy数组的形式获取表:

import requests
from bs4 import BeautifulSoup
import numpy as np

def convertDigit(string):
    if string.replace(",", "").isdigit():
        return int(string.replace(",", ""))
    return string

url = 'https://www.worldometers.info/coronavirus/#countries'
r = requests.get(url)
soup = BeautifulSoup(r.text, "html.parser") # Parse html

table = soup.find("table", {"id": "main_table_countries"}).find_all("tbody") # table
tr_elems = table[0].find_all("tr") # All rows in table

data = []
for tr in tr_elems: # Loop through rows
    td_elems = tr.find_all("td") # Each collumn in row
    data.append([convertDigit(td.text.strip()) for td in td_elems])

np_array = np.array(data)

现在,您的所有数据都在np_array内部。之后,将numpy数组转换为图形应该非常简单。

以上是关于使用python刮刮冠状病毒互动图的主要内容,如果未能解决你的问题,请参考以下文章

我如何像冠状病毒一样设置 OpenStreetMap 的样式

python制作刮刮乐惊喜揭秘呀~趣味代码

HTML+CSS+JS实现 ❤️新型冠状病毒射击小游戏❤️

2019-nCoV新型冠状病毒

宁哥科普:新型冠状病毒能被杀死吗?

创业+110期丨首个冠状病毒杀灭性能测试标准发布,零微科技填补行业空白