使用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'))
答案
这是我的看法:
首先,您必须以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刮刮冠状病毒互动图的主要内容,如果未能解决你的问题,请参考以下文章