Heim > Backend-Entwicklung > PHP-Tutorial > PHP经典抓取网络数据方法 index.php forum.php phpno

PHP经典抓取网络数据方法 index.php forum.php phpno

WBOY
Freigeben: 2016-07-29 08:53:38
Original
1772 Leute haben es durchsucht

1、file_get_contents

以get的方式获取数据

$url = 'blog.csdn.net/guugle2010';
$html = file_get_contents($url);
echo $html;
Nach dem Login kopieren

以post方式获取数据

        $data = array(
                'name' => 'guugle',
                'blog' => 'blog.csdn.net/guugle2010'
        );      
        $data = http_build_query($data);
        $options = array(
                'http' => array(
                        'method' => 'POST',
                        'header' => 'Content-type:application/x-www-form-urlencode',
                        'content' => $data
                )
        );
        $url = "http://localhost/test.php";
        $context = stream_context_create($options);
        $result = file_get_contents($url, false, $context);
        echo $result;
Nach dem Login kopieren
2、fopen方式
$url = 'http://blog.csdn.net/guugle2010';
$handle = fopen($url, r);
$html = '';
while(!feof($handle)){
    $html .= fgets($handle);
}
echo $html;
fclose($handle);
Nach dem Login kopieren
3、curl库,需要打开curl扩展
$url = 'http://blog.csdn.net/guugle2010';
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
 
echo $file_contents;
Nach dem Login kopieren

4、用fsocketopen打开链接

以get的方式获取完整的数据(包括header和body)

$url = 'http://blog.csdn.net/guugle2010';
function get_url($url,$cookie=false)
{
    $url = parse_url($url);
    $query = $url['path']."?".$url['query'];
    echo "Query:".$query;
    $fp = fsockopen( $url['host'], $url['port']?$url['port']:80 , $errno, $errstr, 30);
    if (!$fp)
    {
        return false;
    }
    else {
        $request = "GET $query HTTP/1.1\r\n";
        $request .= "Host: $url[host]\r\n";
        $request .= "Connection: Close\r\n";
        if($cookie) $request.="Cookie:   $cookie\n";
        $request.="\r\n";
        fwrite($fp,$request);
		$result = '';
        while(!feof($fp))
        {
            $result .= @fgets($fp, 1024);
        }
        fclose($fp);
        return $result;
    }
}
//获取url的html部分,去掉header
function GetUrlHTML($url,$cookie=false)
{
    $rowdata = get_url($url,$cookie);
    if($rowdata)
    {
        $body= stristr($rowdata,"\r\n\r\n");
        $body=substr($body,4,strlen($body));
        return $body;
    }

    return false;
}

echo get_url($url);

echo GetUrlHTML($url);
Nach dem Login kopieren

以post方式获取完整数据(包括header和body)
$url = 'http://blog.csdn.net/guugle2010';
function HTTP_Post($URL,$data,$cookie, $referer="")
{

	// parsing the given URL
    $URL_Info=parse_url($URL);

	// Building referrer
    if($referer=="") // if not given use this script as referrer
        $referer="<span style="font-family: Arial, Helvetica, sans-serif;">blog.csdn.net</span><span style="font-family: Arial, Helvetica, sans-serif;">";</span>

	// making string from $data
    foreach($data as $key=> $value)
    $values[]="$key=".urlencode($value);
    $data_string=implode("&",$values);

	// Find out which port is needed - if not given use standard (=80)
    if(!isset($URL_Info["port"]))
        $URL_Info["port"]=80;
	
	$request = '';
	// building POST-request:
    $request.="POST ".$URL_Info["path"]." HTTP/1.1\n";
    $request.="Host: ".$URL_Info["host"]."\n";
    $request.="Referer: $referer\n";
    $request.="Content-type: application/x-www-form-urlencoded\n";
    $request.="Content-length: ".strlen($data_string)."\n";
    $request.="Connection: close\n";

    $request.="Cookie:   $cookie\n";

    $request.="\n";
    $request.=$data_string."\n";

    $fp = fsockopen($URL_Info["host"],$URL_Info["port"]);
    fputs($fp, $request);
	$result = '';
    while(!feof($fp))
    {
        $result .= fgets($fp, 1024);
    }
    fclose($fp);

    return $result;
}

$data = array(
	'site'=>'<span style="font-family: Arial, Helvetica, sans-serif;">blog.csdn.net/guugle2010</span><span style="font-family: Arial, Helvetica, sans-serif;">', </span>
	'name'=>'guugle'); 
	
$cookie = '';
$referer = 'http://blog.csdn.net/';
	
echo HTTP_Post($url, $data, $cookie, $referer);
Nach dem Login kopieren

以上就介绍了PHP经典抓取网络数据方法,包括了php,网络方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage