我希望在我的网站内绘制网页的html。
采取这种情况:
我有一个检查酒店可用性的网站。但不是在我的服务器上托管该酒店的图像。我简单的卷曲,酒店网站上的一个特定页面,包含他们的图像。
我可以从html中获取任何内容并将其显示在我的网站上吗?使用他们的HTML代码,但只使用我想要显示的div或图像?
我正在使用此代码,源自:
http://davidwalsh.name/download-urls-content-php-curl
作为练习和论点,让我们尝试在其主页上显示Google的徽标。
function get_data($url)
{
$ch = curl_init();
$timeout = 5;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$returned_content = get_data('http://www.google.com');
echo '<base href="http://www.google.com/" />';
echo $returned_content;
感谢@alex我开始在PHP的lib中使用DOMDocument。但是,我遇到了麻烦。
function get_data($url)
{
$ch = curl_init();
$timeout = 5;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$url = "www.abc.net.au";
$html = get_data($url);
$dom = new DOMDocument;
@$dom->loadHTML($html);
$logo = $dom->getElementById("abcLogo");
var_dump($logo);
返回:object(DOMElement)[2]
我如何进一步解析这个?或者只需使用该ID打印/回显DIV的内容。?
答案 0 :(得分:2)
是的,通过类似DOMDocument的方式运行生成的HTML,以提取所需的部分。
答案 1 :(得分:1)
echo $logo->nodeValue
应该有效,因为你只能通过id获得1个元素!
答案 2 :(得分:1)
找到DOM元素后,获取元素本身的HTML(而不仅仅是其内容)可能有点棘手。
您可以使用DOMDocument::saveXML
echo $dom->saveXML($logo);
这对你来说可能已经足够了。我相信会有一个变化,它会将此功能添加到saveHTML
。