使用file_get_content()获取重定向网址

时间:2018-10-20 14:20:18

标签: php laravel domparser

使用file_get_content抓取重定向链接时遇到了一些麻烦,我使用了以下代码:$link有几个网址。

foreach ($link as $site) {
            if (strpos($site, 'https://www.mecsumai.com/') === 0) {
                $dom = getSiteContent($site);
                $div = $dom->getElementsByTagName('iframe');
                if ($div->length > 0) {
                    $iframeLink[] = $div[0]->getAttribute('src');
                }
            }
        } 

我在这里抓取了这样的iframe网址:

https://www.mecsumai.com/bkn-summary?bid=16078001&bg1=999999&bg2=dddddd&wdt=100%&aln=center

但是尝试使用file_get_content输入此内容时。我无法获取页面的内容。因为它将重定向到此,所以当您尝试输入时:

https://www.mecsumai.com/bkn-summary/?bid=16078001&bg1=999999&bg2=dddddd&wdt=100%25&aln=center&newid=06078001

最后newid=line...正在重定向部分。所以我尝试这个。

foreach($iframeLink as $results){
            $opts = array('https' =>
                array(
                    'follow_location' => 1,
                )
            );
            $context = stream_context_create($opts);
            $lastUrl[] = file_get_contents($results, false, $context);

        }

        print_r($lastUrl);

我没错,也得到了页面内容,但没有得到整个this页面。桌子还没来吗? 有解决的办法吗?

1 个答案:

答案 0 :(得分:1)

我不确定file_get_contents是否允许这种选项,但是您可以使用允许的卷曲。

这里是一个例子。

function curl_get_contents($url) {
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_HEADER, false);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
    $data = curl_exec($curl);
    curl_close($curl);

    return $data;
}