所以我有一个非常简单的cURL代码,应该检索页面的数据......好吧,它实际上 显示页面的内容... <强大>有时,而且,大多数其他时候风格都搞砸了,因为字体没有加载,大多数图像和图形元素都没有。如果我更改要显示的网页的网址,结果会有所不同,其中一些加载没有问题,其他人根本没有显示任何内容。
我猜cURL处理css的方式有问题,我怎样才能正确加载?
<?php
$ch = curl_init();
$url = 'http://3amigos.com.mx/';
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Googlebot/2.1 (http://www.googlebot.com/bot.html)');
curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 1);
$data = curl_exec($ch);
echo $data;
?>
ABCDEF
就像现在一样,有时除了ABCDEF之外,它甚至没有加载任何格式,有时候页面完全是空的。
答案 0 :(得分:1)
当您使用curl发送http请求时,curl会将响应发送给您。
如果响应中嵌入了样式,则可以使用您浏览时不显示/使用CURL 显示此应用。
但如果样式/资源在属性src
,href
上有完整的URI,则可以看到应用此 ON你浏览器不开/有CURL
Curl不是解释器HTML,JS,CSS。
Curl只是使用各种协议(如HTTP,HTTPS,......)传输数据的命令行。
另一个解决方案(太慢)是获取响应并解析它以查找所有<link>
(css样式链接)以打开并获取内容并嵌入它...(我认为这是坏主意,但工作)
答案 1 :(得分:0)
您可以尝试这个(检查修改后的代码):
$ch = curl_init();
$url = 'http://3amigos.com.mx/';
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Googlebot/2.1 (http://www.googlebot.com/bot.html)');
curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1);
//curl_setopt($ch, CURLOPT_TIMEOUT, 1); // Removed
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Added
$data = curl_exec($ch);
if($data) var_dump($data);
返回/返回结果需要CURLOPT_RETURNTRANSFER
,CURLOPT_TIMEOUT
是允许cURL函数执行的最大秒数。这将为您提供一些结果/文本(字符串格式),而不是格式化为html。