页面HTML源代码与我在“Inspect”中看到的源代码不同

2024-04-26 02:22:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用Python在https://aws.amazon.com/ec2/spot/instance-advisor/的表中节省按需和中断频率信息。你知道吗

通过在我的web浏览器上单击“检查”(我使用的是Chrome)并查看源代码,我发现表中的所有数据都存储在<;tbody>;和<;/tbody>;标记之间。你知道吗

但是,在我的代码中

import requests
from bs4 import BeautifulSoup

source = requests.get('https://aws.amazon.com/ec2/spot/instance-advisor/')
soup = BeautifulSoup(source.text, 'lxml')
print(soup.prettify())

我看到在<;tbody>;和<;/tbody>;之间没有任何东西;。你知道吗

造成这种差异的原因是什么?如何用Python下载网页的全部内容?你知道吗

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


Tags: instancehttpsimportltgtcomawssource
3条回答

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

您在检查器中看到的是RAM中呈现的页面,因为它当时就存在。你知道吗

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

也许这是一个更安全的源代码,因为JSON数据很容易解析,HTML片段很容易被破坏。你知道吗

这可能是由于一些客户端javascript呈现导致BeautifulSoup没有执行,因此表仍然是空的。你知道吗

但是我在Chrome开发者工具中查找了Network标签,找到了你想要搜集的数据。 您可以从这里直接下载json文件

https://spot-bid-advisor.s3.amazonaws.com/spot-advisor-data.json

页面源和有效呈现元素之间存在差异。Chrome的“inspect”窗口的默认视图显示了页面的结构,即在javascripts进行任何dom操作之后,此时的页面结构。你知道吗

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

您要查找的数据来自其他地方(正如用户webdevtool所建议的)。从那里提取json数据(https://spot-bid-advisor.s3.amazonaws.com/spot-advisor-data.json)可能更可靠,也更容易处理。你知道吗

相关问题 更多 >