如何在PHP中查找任何站点的数据以使用CURL

时间:2017-09-24 16:53:49

标签: php curl

我使用CURL在php中创建了一个程序,我可以在其中获取任何站点的数据并可以在浏览器中显示它。该程序的另一部分是可以使用文件处理将数据保存在文件中,保存此数据后,我可以在保存文件的body标签中找到所有http链接。我的代码显示了浏览器中的所有网站,但我找不到http链接,一些不必要的代码也像这张图片一样发生,虽然我不想让它来。

请帮我解决这个问题。

https://www.screencast.com/t/Nwaz93oU

PHP代码:

    <!DOCTYPE html>
<html>
    <?php
        function get_all_links(){
            $html = file_get_contents('http://www.ucertify.com');
            $dom = new DOMDocument();
            @$dom->loadHTML($html);
            $xpath = new DOMXPath($dom);
            $hrefs = $xpath->evaluate("/html/body//a");
            for ($i = 0; $i < $hrefs->length; $i++) {
                $href = $hrefs->item($i);
                $url = $href->getAttribute('href');
                echo $url.'<br />';
            }
        }
        function get_site_data($uc_url){
            $get_uc = curl_init();
            curl_setopt($get_uc,CURLOPT_URL,$uc_url);
            curl_setopt($get_uc,CURLOPT_RETURNTRANSFER,true);
            $output=curl_exec($get_uc);
            curl_close($get_uc);
            $fp=fopen("mohit.txt","w");
            fputs($fp,$output);
            return $output;
        }
    ?>
    <body>
        <div>
            <?php
            $site_content = get_site_data("http://www.ucertify.com");
            echo $site_content;
            ?>
            </div>
            <div >
            <?php
            echo get_all_links("http://www.ucertify.com");
            ?>
        </div>
    </body>
</html>

1 个答案:

答案 0 :(得分:0)

请参阅下面的代码,我还包括对每次更新的评论。

第5行

指定$ url变量值。 在第11行删除&amp;来自$ matches的(参考)。 Refer关于perg_mach_all

<!DOCTYPE html>
<html>
<?php

// You have to Set $Url Variable;
$url='http://www.society6.com';

$var = fread_url($url);

// Remove The & or by reference on $matches variable
preg_match_all ("/a[\s]+[^>]*?href[\s]?=[\s\"\']+". "(.*?)[\"\']+.*?>"."([^<]+|.*?)?<\/a>/", $var, $matches);

$matches = $matches[1];
$list = array();

foreach($matches as $var)
{
    print($var."<br>");
}

function fread_url($url,$ref="http://www.society6.com")
{
    if(function_exists("curl_init")){
        $ch = curl_init();
        $user_agent = "Mozilla/4.0 (compatible; MSIE 5.01; ".
            "Windows NT 5.0)";
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
        curl_setopt( $ch, CURLOPT_HTTPGET, 1 );
        curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
        curl_setopt( $ch, CURLOPT_FOLLOWLOCATION , 1 );
        curl_setopt( $ch, CURLOPT_FOLLOWLOCATION , 1 );
        curl_setopt( $ch, CURLOPT_URL, $url );
        curl_setopt( $ch, CURLOPT_REFERER, $ref );
        curl_setopt ($ch, CURLOPT_COOKIEJAR, 'curl.txt');
        $html = curl_exec($ch);
        curl_close($ch);
    }
    else{
        $hfile = fopen($url,"r");
        if($hfile){
            while(!feof($hfile)){
                $html.=fgets($hfile,1024);
            }
        }
    }
    return $html;
}

?>

<body>
</body>
</html>