免责声明:我在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))
答案 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数据来自何处并直接到达那里。
>