【问题标题】:unable to scrape information from this website using php无法使用 php 从该网站上抓取信息
【发布时间】:2017-03-27 22:46:04
【问题描述】:

我试图从这个网站上抓取信息:http://disclosure.bursamalaysia.com/FileAccess/viewHtml?e=2745298

但是,当我尝试回显 $output 时,似乎有些不对劲,它会重定向到 localhost 站点 (http://localhost/FileAccess/viewHtml?e=2745298)

我的来源如下

        function curl_download($Url){
        
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $Url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $output = curl_exec($ch);
        $start = strpos($output, '<html>');
        $end = strpos($output, '</html>', $start);

        $length = $end-$start;
        $output = substr($output, $start, $length);
        curl_close($ch);
        
        echo $output;
        
        }

【问题讨论】:

  • 页面内容包含一个javascript重定向器,您需要将输出打印为特殊字符
  • 嗨,Hassan,将 echo $output 替换为 print $output?我试过了,它仍然重定向
  • echo htmlspecialchars($output);
  • 嗨,我想我太粗心了。当我第二次查看回显结果时,它与原始输出值不匹配

标签: php curl


【解决方案1】:

使用以下

    function curl_download($Url){

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $Url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    $output = curl_exec($ch);
    $start = strpos($output, '<html>');
    $end = strpos($output, '</html>', $start);

    $length = $end-$start;
    $output = substr($output, $start, $length);
    curl_close($ch);

    echo $output;

    }

【讨论】:

  • 他为什么要Use following?最好为您的解决方案提供更多解释
  • 但是 CURLOPT_FOLLOWLOCATION 选项是遵循 HTTP 重定向,而不是 javascript 或客户端重定向
  • 他没有添加 CURLOPT_FOLLOWLOCATION 所以它重定向到本地主机。
  • 我实际上添加了 CURLOPT_FOLLOWLOCATION,但重定向仍然存在,因此我将其删除。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-22
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多