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

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


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


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


<frame name="WMain" src="/WSID0002340321/easy/GUI-1280">

     The html i'm looking for is here

</frame>

所以没有什么特别的。


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


感谢你们对我的帮助。


开满天机
浏览 199回答 2
2回答

倚天杖

我怀疑某些 HTML 可能是使用 Javascript 生成的——在这种情况下,当页面首次加载时它不存在,因此使用像 cURL 这样的非浏览器客户端的简单请求将永远看不到它,或者可能会被下载通过额外的 AJAX 请求 - 在这种情况下,您可以通过直接向 AJAX 使用的 URL 发出请求来检索它。甚至是两者的某种结合。使用浏览器的开发人员工具更仔细地检查页面可能有助于您了解内容的实际创建方式。如今,页面包含稍后加载和/或由脚本生成的内容是很常见的。因此,原始 HTML 的基本下载无法捕获额外的内容(因为没有 Javascript 环境可以运行代码并下载/创建额外的 HTML)。你需要一个无头浏览器,或者一个像谷歌爬虫一样复杂的网络客户端才能完全加载这样的页面

慕神8447489

尝试使用 preg_match 来处理html$html = "...<frame>...</frame>";preg_match("~<frame[^>]*>(.*?)</frame>~",$html,$output);echo $output;演示: https: //3v4l.org/CNJWQ
打开App,查看更多内容
随时随地看视频慕课网APP