页面HTML源代码与我从“检查”中看到的源代码不同

时间:2019-01-23 21:34:44

标签: python html python-3.x web-scraping

我正在尝试使用Python节省https://aws.amazon.com/ec2/spot/instance-advisor/中表中按需和中断信息的频率。

通过在网络浏览器(我使用的是Chrome)上单击“检查”并查看源代码,我发现表中的所有数据都存储在和标记之间。

但是,在我的代码中,当我这么做

NoSuchElementException

我看到和之间没有任何东西。

是什么原因导致这种差异?如何在Python中下载网页的全部内容?

任何帮助将不胜感激! :)

3 个答案:

答案 0 :(得分:0)

在DOM的空tbody部分加载之后,他们通过Ajax加载数据。

在检查器中看到的是该时刻存在的RAM中的呈现页面。

数据本身是从这里加载的: https://spot-bid-advisor.s3.amazonaws.com/spot-advisor-data.json

也许无论如何这都是更安全的来源,因为可以轻松地解析JSON数据,并且很容易破坏HTML刮擦。

答案 1 :(得分:0)

页面的来源和有效的呈现元素之间存在差异。 Chrome的“检查”窗口的默认视图向您显示该页面的结构,该页面结构是在进行了dom操作之后的。

如果单击“源”选项卡,您将看到源与python正在下载的源匹配。 enter image description here

您正在寻找的数据来自其他地方(如用户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