我正在尝试使用Python节省https://aws.amazon.com/ec2/spot/instance-advisor/中表中按需和中断信息的频率。
通过在网络浏览器(我使用的是Chrome)上单击“检查”并查看源代码,我发现表中的所有数据都存储在
和标记之间。但是,在我的代码中,当我这么做
NoSuchElementException
我看到
和之间没有任何东西。是什么原因导致这种差异?如何在Python中下载网页的全部内容?
任何帮助将不胜感激! :)
答案 0 :(得分:0)
在DOM的空tbody部分加载之后,他们通过Ajax加载数据。
在检查器中看到的是该时刻存在的RAM中的呈现页面。
数据本身是从这里加载的: https://spot-bid-advisor.s3.amazonaws.com/spot-advisor-data.json
也许无论如何这都是更安全的来源,因为可以轻松地解析JSON数据,并且很容易破坏HTML刮擦。
答案 1 :(得分:0)
页面的来源和有效的呈现元素之间存在差异。 Chrome的“检查”窗口的默认视图向您显示该页面的结构,该页面结构是在 如果单击“源”选项卡,您将看到源与python正在下载的源匹配。
您正在寻找的数据来自其他地方(如用户webdevtool所建议)。从那里((https://spot-bid-advisor.s3.amazonaws.com/spot-advisor-data.json)提取json数据可能更可靠并且更易于处理。
答案 2 :(得分:0)
这可能是由于某些客户端JavaScript渲染导致BeautifulSoup无法执行,因此表仍然为空。
但是我在Chrome开发者工具中查找了“网络”标签,并找到了您要抓取的数据。 您可以从此处直接下载json文件
https://spot-bid-advisor.s3.amazonaws.com/spot-advisor-data.json