如何在 PHP/Curl 的框架内获取 html?

How to get the html within a frame with PHP/Curl?

我是第一次使用PHP\Curl。我的目的是创建一个机器人,从多个网站检索和收集数据,这些网站正在从机器获取数据(我确切地说我确实拥有这些数据,对我来说只是在一个点上收集所有数据)。我设法登录到这些网站并获取了一些数据。由于 file_get_contents 函数,我还设法在 iframe 中获取数据。

但是,如果我尝试在一个简单的框架(而不是 Iframe)中获取 html,它就不起作用。我使用了下面框架元素的 url(是的,完整的 url)。 我没有收到任何错误。我确实得到了一些 html 元素,但我正在寻找 html 中的 none。我看到了 html 主体,但它几乎是空的。我完全确定我给 php/curl 的 url。我应该怎么做才能使 html 在框架内?

这是我试图从中获取数据的页面上可见的框架元素。 (这不是我从 php/curl 回复中得到的):

<frame name="WMain" src="/WSID0002340321/easy/GUI-1280">
     The html i'm looking for is here
</frame>

没什么特别的。

我看过这个 post : How to use PHP CURL with frames? 但问题并不完全相同,答案是关于 iframe 并假设有 html 个元素。

谢谢你帮助我。

尝试使用 preg_match 来处理 html

$html = "...<frame>...</frame>";
preg_match("~<frame[^>]*>(.*?)</frame>~",$html,$output);
echo $output;

演示:https://3v4l.org/CNJWQ

我怀疑 HTML 中的某些部分可能是使用 Javascript 生成的 - 在这种情况下,首次加载页面时它不存在,因此使用非-像 cURL 这样的浏览器客户端永远不会看到它,或者可能通过额外的 AJAX 请求下载 - 在这种情况下,您可以通过直接向 URL 发出请求来检索它AJAX 使用。甚至是两者的某种结合。使用浏览器的开发人员工具更仔细地检查页面可能有助于您了解内容的实际创建方式。

现在页面包含由脚本生成的 and/or 稍后加载的内容是很常见的。因此,原始 HTML 的原始基本下载无法捕获该额外内容(因为没有 Javascript 环境可以 运行 代码和 download/create 额外 HTML).您需要无头浏览器或具有 google 爬虫的复杂网络客户端才能完全加载此类页面