Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 从找不到表相关标记的网页中删除数据_Python 3.x_Web Scraping_Beautifulsoup - Fatal编程技术网

Python 3.x 从找不到表相关标记的网页中删除数据

Python 3.x 从找不到表相关标记的网页中删除数据,python-3.x,web-scraping,beautifulsoup,Python 3.x,Web Scraping,Beautifulsoup,我试图从URL中提取“新冠病毒-19状态”数据。虽然页面以表格形式显示数据,但我认为没有直接嵌入表。我没有找到,等标题 有人能帮我提取表格数据吗 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)

我试图从URL中提取“新冠病毒-19状态”数据。虽然页面以表格形式显示数据,但我认为没有直接嵌入表。我没有找到
等标题

有人能帮我提取表格数据吗

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])

[]
从urllib.request导入请求,urlopen
从bs4导入BeautifulSoup
url='1〕https://www.mygov.in/covid-19/'
html=urlopen(url)
soup=BeautifulSoup(html,'lxml')
类型(汤)
title=soup.title
印刷品(标题)
#印度的IndiaFightsCorona新冠病毒-19,Corona病毒追踪者| mygov.in
text=soup.get_text()
打印(soup.text)
#印度的IndiaFightsCorona新冠病毒-19,Corona病毒追踪者| mygov.in
@导入url(“//www.mygov.in/modules/system/system.base.css?qfdcj4”);
@导入url(“//www.mygov.in/modules/system/system.menus.css?qfdcj4”);
@导入url(“//www.mygov.in/modules/system/system.messages.css?qfdcj4”);
tables=soup.find_all('table'))
打印(表格)
[]
行=汤。全部查找('tr')
打印(行[:10])
[]
我想通过单击下图所示的“COVID-19状态”标题末尾的“+”按钮,从显示的表格中提取数据


根据我在你的帖子中的理解,你必须从表中获取的Covid19状态数据

使用python试试下面的方法——简单、直接、可靠、快速,在处理请求时所需的代码更少

  • 首先,我检查了是否公开了任何API URL/调用,这些API URL/调用以JSON格式提供数据,这些数据可以用于提取所需数据,并且是可用的
  • 在获取URL之后,我向这个API发出了一个请求,作为响应,我获得了JSON格式的所有数据
  • 最后,我循环浏览了这些数据,这些数据对于确诊病例、活动病例、死亡和康复以及它们在不同状态下的相应差异都是必要的和重要的。您可以通过同样的方式获取其他详细信息,如新冠病毒设施信息、Epass URL等

  • 您希望从页面中获取哪些信息?我看不到桌子there@Andrej,请查看添加到问题中的其他信息。谢谢,谢谢,这很有效。但是,我想从按下页面“COVID-19状态”标题末尾的“+”按钮时出现的表中提取数据。为了清楚起见,我在原始问题中添加了图片。@Srinivas此脚本仅提取表数据。如果您运行并匹配所有4个KPI的值,您将了解确切的细节。如果您对上述解决方案是否适用还有任何疑问,请告知我,然后请投票并接受它-谢谢。。但是我看到标题是不同的。代码中映射到名称的jason_数据字段与网页中显示的不同。我可以根据网页重命名代码中的json字段,但我希望它们直接来自网页。希望你能理解我想表达的意思。不管标题是相同的还是不同的,因为HTML表格标题只是用来表示和阅读的。如果更改JSON字段的名称,则不会得到任何结果,但会出现一些错误。看看我在print语句中提到的文本,它只是向您显示,我正在获取这些特定信息,而不管我的列/标题的名称如何。这也不会影响数据的原始性。如果您运行这些值并将其与网站匹配,您将发现它们是相同的。
    import requests
    from urllib3.exceptions import InsecureRequestWarning
    requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
    
    def scrape_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)
    
    scrape_covid19_india_stats()