如何解决无法从汤.findAll获得所有结果
我在网站(https://covid.knoxcountytn.gov/case-count.html)上找到了此表:
<table class="table table-striped" id="cases_table"></table>
(我在这里删除了表主体,因为它很长),我需要一种将数据放入其中的方法。
这两个都不返回:
table=soup.findAll('table',{'id': 'cases_table'})
table = soup.select('table#cases_table')
这:
table=soup.findAll('tbody')
返回一个不是我要寻找的肢体的肢体。
我也尝试过使用它:
table = soup.find_all('table')[x]
当x为0时,得到的表不是我想要的。当x为1时,我得到一个索引超出范围错误。
我曾尝试使用lxml,html5lib和html.parser,但它们都没有改变。
如果还有其他解决此问题的有效方法(我正尝试在此网站上获取活跃的案例,因为纽约州不每日发布该案例,而约翰·霍普金斯也没有该案例),请让我知道
P.S。我认为问题出在请求模块,因为当我将带有请求命令的页面下载到文本文件时,该部分也丢失了。
解决方法
如果您查看页面的源代码,则不会看到此元素<table class="table table-striped" id="cases_table"></table>
。它使用ajax
进行加载。但是您可以直接获取数据:
import requests
import csv,io
url = "https://covid.knoxcountytn.gov/includes/covid_cases.csv"
content_of_csv = requests.get(url).text
for i in csv.reader(io.StringIO(content_of_csv)):
if i[0] == "Number of Active Cases":
print("The number: " + i[1],"Percent: " + i[2])
结果:
The number: 2192 Percent: 42.70%
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。