Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 卷曲不加载样式/css_Php_Html_Css_Curl - Fatal编程技术网

Php 卷曲不加载样式/css

Php 卷曲不加载样式/css,php,html,css,curl,Php,Html,Css,Curl,所以我有一个非常简单的cURL代码,它应该检索页面的数据。。。实际上,它确实显示了页面的内容有时,而且,大多数其他时候,样式都是乱七八糟的,因为字体没有加载,大多数图像和图形元素也没有加载。如果我更改要显示的页面的URL,结果会有所不同,有些加载没有问题,有些根本不显示任何内容 我猜cURL如何处理css存在问题,如何让它正确加载 <?php $ch = curl_init(); $url = 'http://3amigos.com.mx/'; curl_set

所以我有一个非常简单的cURL代码,它应该检索页面的数据。。。实际上,它确实显示了页面的内容有时,而且,大多数其他时候,样式都是乱七八糟的,因为字体没有加载,大多数图像和图形元素也没有加载。如果我更改要显示的页面的URL,结果会有所不同,有些加载没有问题,有些根本不显示任何内容

我猜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

正如现在一样,有时它甚至只加载没有任何格式的ABCDEF,有时页面完全是空的。

当您使用curl发送http请求时,curl接收响应并将其提供给您。 如果响应中嵌入了样式,则可以在浏览器未打开/未使用CURL时显示此应用。 但是如果样式/资源在属性
src
href
上有完整URI,您可以看到在浏览器上应用此,而不是使用CURL

Curl不是HTML、JS、CSS的解释器。

Curl是使用HTTP、HTTPS等各种协议传输数据的唯一命令行

你可能需要了解或


另一个解决方案(太慢)是获取响应并对其进行解析,以找到所有的
(css样式链接)来打开并获取内容并将其嵌入…(我认为这是个坏主意,但有效)

当您使用curl发送http请求时,curl接收响应并将其提供给您。 如果响应中嵌入了样式,则可以在浏览器未打开/未使用CURL时显示此应用。 但是如果样式/资源在属性
src
href
上有完整URI,您可以看到在浏览器上应用此,而不是使用CURL

Curl不是HTML、JS、CSS的解释器。

Curl是使用HTTP、HTTPS等各种协议传输数据的唯一命令行

你可能需要了解或

另一个解决方案(太慢)是获取响应并对其进行解析,以找到所有
(css样式链接)来打开并获取内容并将其嵌入…(我认为这是个坏主意,但有效)

您可以尝试以下方法(检查修改后的代码):

返回/返回结果需要
CURLOPT_RETURNTRANSFER
,而
CURLOPT_TIMEOUT
是允许执行cURL函数的最大秒数。这将为您提供一些结果/文本(字符串格式),而不是html格式

下面是一个截短的屏幕截图,以证明它是有效的:

您可以尝试以下操作(检查修改后的代码):

返回/返回结果需要
CURLOPT_RETURNTRANSFER
,而
CURLOPT_TIMEOUT
是允许执行cURL函数的最大秒数。这将为您提供一些结果/文本(字符串格式),而不是html格式

下面是一个截短的屏幕截图,以证明它是有效的:

可能有人知道你正在伪造用户代理并阻止你。。CSS和JS除非使用绝对链接请求,否则将失败。Curl不是解释器。您可以使用PhantomJS,因为您需要发送http请求并接收完整的网站样式,并解释javascript和css。可能有人知道您正在伪造用户代理并阻止您。。CSS和JS除非使用绝对链接请求,否则将失败。Curl不是解释器。您可以使用PhantomJS,因为您需要发送http请求并接收完整的网站样式,并解释javascript和css。。。我想我该回到绘图板上来了。谢谢你,别担心。请了解PhantomJS(我真的很喜欢这个项目)。也许你可以用这个解决你的问题。我给你写了一个可能的解决方案@lower看看我的答案谢谢你,奥拉夫,我看看我能做些什么。可悲的是,目前的解析方法似乎不太可行。。。我想我该回到绘图板上来了。谢谢你,别担心。请了解PhantomJS(我真的很喜欢这个项目)。也许你可以用这个解决你的问题。我给你写了一个可能的解决方案@lower看看我的答案谢谢你,奥拉夫,我看看我能做些什么。遗憾的是,目前的解析方法似乎不太可行。等等,什么?当我使用你的代码时,我仍然看到一个完全空白的页面。你是否像我现在在答案中那样丢弃了它?我只是这样做了。然而,似乎存在一个问题,因为并非所有数据都被转储。然而,这并不适合我的需要,因为我无论如何都需要查看实际页面。还是谢谢你,等等,什么?当我使用你的代码时,我仍然看到一个完全空白的页面。你是否像我现在在答案中那样丢弃了它?我只是这样做了。然而,似乎存在一个问题,因为并非所有数据都被转储。然而,这并不适合我的需要,因为我无论如何都需要查看实际页面。还是谢谢你。
$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);