我注意到有些网站在您最初加载它们时不会更新它们的DOM。例如,如果您访问YouTube并点击某个视频或访问Google Play并点击某个应用,如果您阅读了名为" description"的DOM元元素,则会获得一般说明该网站。但是,如果您刷新页面,则说明会更新自身,并对正在查看的特定项目进行更具体的描述。如果您查看页面的来源,也可以获得更新,尽管这似乎相当于刷新。
我发现这有问题,因为我的应用需要提取页面的描述,但这些描述在刷新完成之前不会显示真实的描述。我当然不会刷新用户的页面来获取该信息。
我无法理解为什么YouTube或Google Play会这样做。这是Chrome的一部分(我正在使用)还是由某些javascript完成此更新但是设法绕过DOM?
答案 0 :(得分:1)
据推测,他们正在使用Ajax和History API来更新页面内容并更改显示的URL,而无需执行新页面的完整加载。有效地将网站作为单页应用程序运行。
不幸的是,听起来他们并没有更新页面的所有并且正在离开您关心的元素元素(可能因为很少有人关心它们而且它们主要存在为了机器人的利益)。
由于数据尚未发送到浏览器,因此无法通过HTTP请求获取数据。