【问题标题】:PHP CURL Retrieves Partial pagesPHP CURL 检索部分页面
【发布时间】:2015-09-17 06:33:09
【问题描述】:

我有以下 CURL 代码:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url);
if ($postParameters != '') {
    curl_setopt($ch, CURLOPT_POST, TRUE);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postParameters);
}
curl_setopt($ch, CURLOPT_COOKIEFILE, __DIR__.'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR, __DIR__.'/cookie.txt');
curl_setopt($ch, CURLOPT_ENCODING, '');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_TIMEOUT, 60); 
curl_setopt($ch, CURLOPT_REFERER, $referer);
$pageResponse = curl_exec($ch); 
curl_close($ch); 

当我尝试获取页面时,大多数时候我会得到我请求的整个页面。但是,有时我只会得到页面的一部分,例如:

DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 过渡//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en"> 头> 元 http-equiv="内容类型" 内容="文本/html; charset=windows-1251" /> 元名称="generator" content="

我删除了标签前面的“

任何帮助将不胜感激。

【问题讨论】:

  • 也许stackoverflow.com/questions/5263066/… 可以提供帮助。否则,这会发生在多个网站上吗?如果只发生在一个网站上,他们可能会遇到问题。
  • 根据您的用例,您可以只使用file_get_contents() 并省去 curl。

标签: php html curl web-crawler


【解决方案1】:

你可以尝试添加一些调试。

添加这些选项:

curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_STDERR,$f = fopen(__DIR__ . "/error.log", "w+"));

还有 curl_close() 之前的这些:

if($errno = curl_errno($ch)) {
    $error_message = curl_strerror($errno);
    echo "cURL error ({$errno}):\n {$error_message}";
}

如果这不起作用,请尝试增加超时并查看它是否消失:

curl_setopt($ch, CURLOPT_TIMEOUT, 300); 

如果超时增加有效,那么找出原因。

【讨论】:

    猜你喜欢
    • 2013-04-07
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多