【问题标题】:the code of some page is cut when using curl or display the source code of the page [closed]使用curl时某些页面的代码被剪切或显示页面的源代码[关闭]
【发布时间】:2021-12-21 03:41:09
【问题描述】:

我向你解释我的问题:
当我在某些站点上做 PHP curls 或想要显示页面元素的源代码时丢失了很多。我认为某些部分是由脚本或其他东西调用的。
有人可以帮助我使用 Curl PHP 查看整个代码。


要复制我的问题,请转到 Facebook 或 LinkedIn 并右键单击页面并“查看页面的源代码”,在此您不会看到所有页面内容,但是例如当您右键单击并“检查元素”时你可以。 提前谢谢你

【问题讨论】:

  • 据我了解(结果可能“根本不是”...),您的浏览器会下载初始页面代码,这与您使用 CURL 收到的代码相同。然后它在该页面内执行代码,填充其他页面元素,所以我相信你必须模拟它。您尝试访问的网站是否不提供 API 来访问您需要的信息?
  • 感谢您的回复,是的,有一个 API 访问权限,我会尝试访问它。

标签: javascript php curl


【解决方案1】:

CURL 无法做到这一点。它不是为呈现 HTML 或执行 JavaScript 而设计的。

Facebook、LinkedIn、Twitter 和许多其他页面上的许多内容都是通过不同的方式加载的。 (如fetch()-requests 或 WebSocket-Events)

您可以在检查器中看到的某些节点不是原始文档的一部分(您正在通过“查看源代码”或 curl 下载查看)。您在检查器上看到的是当前保存在内存中的所有内容,这些内容部分(或全部)是使用脚本语言创建的。

这基本上是为了

  • 减少服务器负载,因为它不必针对每个请求生成整个页面
  • 减少客户端和服务器上的流量(无需一遍又一遍地重新加载标头数据和/或脚本)

如果您需要来自渲染网站的数据,您应该检查该网站是否提供了一个 API 来为您提供您正在寻找的数据,或者使用来自 this answer 的 cli-rendering-engines 之一。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    • 1970-01-01
    • 2010-09-10
    相关资源
    最近更新 更多