【问题标题】:PHP: curl_exec() of html content is different from view page sourcePHP:html 内容的 curl_exec() 与查看页面源代码不同
【发布时间】:2012-10-11 10:34:37
【问题描述】:

以下代码的 HTML 输出提供了一些在页面中根本不可用的附加数据。我将此输出与查看页面源进行比较。额外数据从“寻找不同......”开始

$url : http://www.linkedin.com/pub/senthil-selvaraj/36/90b/5b9
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,           "$url");
curl_setopt($ch, CURLOPT_TIMEOUT,       30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch, CURLOPT_COOKIEJAR,     "cookie.txt");
curl_setopt($ch, CURLOPT_USERAGENT,     "Mozilla/4.0 (compatible; MSIE 5.01;    Windows    NT 5.0)");

 if ($proxystatus == 'on')
 {
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, TRUE);
    curl_setopt($ch, CURLOPT_PROXY, $proxy);
 }            

 $body = curl_exec($ch);

【问题讨论】:

    标签: php parsing curl web-scraping


    【解决方案1】:

    这很可能与 cookie 或标头有关,因为 cURL 并不能在所有方面模拟真实的浏览器。因此,您的输出可能会有所不同,因为 cURL 甚至可以发送不同的 Accept 或 Location 标头等。

    您尝试过不同的浏览器吗?此外,该 cURL 是否从您正在浏览页面的同一 IP 发出?

    编辑: 您可以尝试将Firebug 安装到 Firefox 中,然后使用 F12 键打开它,切换到网络(或网络)选项卡并检查您的浏览器发送到的标题服务器。然后,您可以使用您的 cURL 请求来模拟这些标头。

    【讨论】:

    • 除了页面信息,curl_exec还在输出中添加了建议信息。输出显示了许多其他包含 senthil selvaraj 名称的 url。
    • 我明白 :) 但你能在我的回答中回答这两个问题吗?
    • 我没有尝试使用其他浏览器但相同的 ip
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 2013-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多