【发布时间】:2022-01-09 10:34:54
【问题描述】:
我目前正在开发一个网站,该网站需要我通过 jQuery 或 PHP 从外部网站加载标签的图像源,以便将该图像嵌入到我的页面上,有没有办法通过 XPath 来做到这一点?
编辑: 基于我所做的额外研究——在此处和之后提出问题之前——我现在找到了解决方案。 Sergey Ligus 给了我正确的方法。 file_get_contents 不起作用的问题是页面似乎阻止了这种请求,我不得不通过 stream_context_create 伪造一个 user_agent。
例子:
$context = stream_context_create([
'http' => [
'user_agent' => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)',
],
]);
$html = file_get_contents('URL', false, $context);
$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$result = '';
foreach ($xpath->query('XPATH') as $child) {
$result .= $dom->saveHTML($child);
}
【问题讨论】:
-
您是否尝试过在后端使用
file_get_contents或curl获取页面,然后使用DOMXPath解析html 内容并将解析的链接保存在数据库中?之后,您可以简单地从 db 获取链接并通过 php 呈现页面,其中包含没有 JQuery 的嵌入链接以及对外部网站的大量不必要的请求。但在这种情况下,我宁愿将解析逻辑移出网站范围/线程,因为它会阻止用户体验,直到所有链接都被获取。 -
我已经尝试过 file_get_contents 但它不起作用......当我打印 assined 变量时,我只是从我自己的网络服务器打印了“/的索引”......
-
我不明白这里的问题。您不能将外部 URL 设置为 external.link"> 吗?
标签: javascript php jquery backend embed