为什么会收到此错误? IndexError:列表索引超出范围

时间:2020-09-03 22:56:27

标签: python html css

免责声明:我在Python中有点菜鸟,所以就是这样。
我正在尝试从网站上对该数字进行抓取,但我一直收到此错误。

DWORD_PTR res;
SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)TEXT("TapsEnabled"), 0, 1000, &res);

我正在尝试检索该数字price = soup.find_all('div', {'id':'ember105'})[0].find('text').text IndexError: list index out of range

我在做什么错了?

下面的Python和HTML

14,795
import bs4
import requests
from bs4 import BeautifulSoup

r = requests.get('https://covid19.min-saude.pt/')
soup = bs4.BeautifulSoup(r.text,"lxml")
nCases= soup.find_all('div', {'id':'ember106'})[0].find('text').text
print('number cases = ' + str(nCases))

2 个答案:

答案 0 :(得分:0)

这是因为您什么都没找到。

在以下命令中...

nCases= soup.find_all('div', {'id':'ember106'})[0] ...

您假定您在find_all()命令中找到了某些内容。似乎这不是一个安全的假设。检查find_all()函数的结果大小是否大于0。

您可能想对链接后的find()函数执行相同的操作

答案 1 :(得分:0)

看起来您要查找的数据不在初始页面加载中;如果您选中r.text,则其中不包含任何称为“ ember106”的元素。

在网页上,它显示在iframe中,该iframe本身通过JavaScript(可能是JSON)加载。

您要么必须(a)通过Selenium抓取以便所有机器都可以运行,要么(b)手工对其进行跟踪,找出JSON数据来自何处并直接到达那里。

>