如何解决从未找到与表相关的标签的网页中收集数据
我正在尝试从URL India Covid 19 cases中提取“ COVID-19 Statewise Status”数据。尽管页面以表格形式显示数据,但我认为没有直接嵌入的表。我没有找到标题的<table>,<tr>,<td>
等
有人可以帮我提取表格数据吗?
from urllib.request import Request,urlopen
from bs4 import BeautifulSoup
url = 'https://www.mygov.in/covid-19/'
html = urlopen(url)
soup = BeautifulSoup(html,'lxml')
type(soup)
title = soup.title
print(title)
<title>#IndiaFightsCorona COVID-19 in India,Corona Virus Tracker | mygov.in </title>
text = soup.get_text()
print(soup.text)
#IndiaFightsCorona COVID-19 in India,Corona Virus Tracker | mygov.in
@import url("//www.mygov.in/modules/system/system.base.css?qfdcj4");
@import url("//www.mygov.in/modules/system/system.menus.css?qfdcj4");
@import url("//www.mygov.in/modules/system/system.messages.css?qfdcj4");
tables= soup.find_all('table')
print(tables)
[]
rows= soup.find_all('tr')
print(rows[:10])
[]
我想通过单击下面图片中显示的“ COVID-19 Statewise Status”标题末尾的“ +”按钮从出现的表中提取数据。
解决方法
根据我对您的帖子的理解,您必须删除表中可用的 Covid19 状态数据。
使用python尝试以下方法-requests涉及到请求时,简单,直接,可靠,快速且代码更少。
- 首先,我检查了是否公开了任何API URL /调用,这些API / URL以JSON格式提供数据,可以将其用作提取所需数据的目的,并且可以使用。 API CALL URL
- 获取URL后,我向该API发出了请求,作为响应,我获得了所有JSON格式的数据。
- 最后,我遍历了对于已确诊病例,在役病例,死亡和康复病例所需的重要数据,以及它们之间相应的差异。您可以以相同的方式获取其他详细信息,例如Covid便利设施信息,Epass URL等。
import requests
from urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
def scrap_covid19_india_stats():
URL = 'https://www.mygov.in/sites/default/files/covid/covid_state_counts_ver1.json'
json_data = requests.get(URL,verify=False).json()
for state_wise in json_data['Name of State / UT']:
print('-'*100)
print('State : ' + json_data['Name of State / UT'][state_wise] + ',' +
'Total Confirmed Cases : ' + str(json_data['Total Confirmed cases'][state_wise]) + ',' +
'Active Cases : ' + str(json_data['Active'][state_wise]) + ',' +
'Recovered/Discharged/Migrated: ' + str(json_data['Cured/Discharged/Migrated'][state_wise]) + ',' +
'Deceased : ' + str(json_data['Death'][state_wise]) + ',' +
'Diff. Confirmed Cases : ' + str(json_data['diff_confirmed_covid_cases'][state_wise]) + ',' +
'Diff. Active Cases : ' + str(json_data['diff_active_covid_cases'][state_wise]) + ',' +
'Diff. Cured Cases : ' + str(json_data['diff_cured_discharged'][state_wise]) + ',' +
'Diff. Deceased Cases : ' + str(json_data['diff_death'][state_wise]))
print('-'*100)
scrap_corvid19_india_stats()