Blogger Information
Blog 15
fans 0
comment 1
visits 15080
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
php爬取网页的几种方式
空城的博客
Original
2086 people have browsed it

一、用scoket方式采集数据

实例

$fp = fsockopen('www.baidu.com',80,$errno,$errstr,30);
    if(!$fp){
        echo '错误号:'.$errno." 错误信息:".$errstr;
    }else{
        $header  = "GET / HTTP/1.1\r\n";
        $header .= "Host: www.baidu.com\r\n";
        $header .= "Connection: Close\r\n\r\n";
        fwrite($fp,$header);
        while (!feof($fp)){//如果没有指向结尾,则继续读取
            echo fgets($fp,1024);
        }
        fclose($fp);
    }


函数解释:

1、fsockopen 打开一个网络连接或者一个Unix套接字连接 参数 hostname:域名 port:端口号 错误号 错误信息 timeout:超时时间
2、fwrite 写入文件(二进制) 参数  handle:文件指针  string:写入的内容(字符串) length:写入长度
3、feof 检查文件指针是否到了文件结束的位置 参数 handle:文件指针  返回值:bool Ture 或者 False
4、fgets 从文件中读取一行 参数 handle:文件指针 length 长度
5、fclose 关闭一个已打开的文件指针

二、生成一个curl对象来爬取

实例

//创建cURL句柄
    $curl=curl_init();
//设置URL和相应的选项
    curl_setopt($curl, CURLOPT_URL, "http://www.php.cn/map/dugu.html");
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//执行curl操作
    $data=curl_exec($curl);
//打印结果
    var_dump($data);


函数解释:

1、curl_init  初始化 cURL 会话  参数:string:url  返回值:如果成功,返回  cURL 句柄,出错返回 FALSE。
2、curl_setopt  设置 cURL 传输选项 参数  resource:句柄  返回值:TRUE 或者 FALSE
3、curl_exec   curl_exec 执行给定的 cURL 会话 参数:resource:句柄  返回值



三、file_get_contents直接获取网页(不可用于https)

实例

$url = 'http://www.php.cn/map/dugu.html';
$html = file_get_contents($url); 
echo $html;

函数解释:

1、file_get_contents 将整个文件读入一个字符串,在这里可以理解为从网络上返回了一个文件


四、用file_get_contents函数以post方式获取url

实例

//组装post提交的数据
$data =array();
$data = http_build_query($data);

//请求需要的设置
$options = array(
    'http' => array(
        'method' => 'POST',
        'header' => 'Content-type:application/x-www-form-urlencoded',
        'content' => $data
        'timeout' => 60 * 60 // 超时时间(单位:s)
    )
);

//定义请求地址
$url     = "http://www.php.cn/map/dugu.html";
$context = stream_context_create($options); 
echo file_get_contents($url, false, $context);

函数解释:
1、http_build_query  生成 URL-encode 之后的请求字符串 参数 query_data:可以是数组或包含属性的对象

2、stream_context_create 创建资源流上下文,可用于fopen(),file_get_contents()等过程的超时设置、代理服务器、请求方式、头信息设置的特殊过程 参数:必须是关联数组  返回值:resource类型的上下文资源流  

3、file_get_contents 参数:filename:文件路径(可以是url地址) use_include_path:是否读取包含文件 context:上下文资源流(就是stream_context_create处理的)


五、用fopen方式获取

实例

//定义url
    $url = 'http://www.php.cn/map/dugu.html';
//创建指针
    $fp = fopen($url, 'r');
//获取报头,元数据
    stream_get_meta_data($fp);
//读取数据
    $result = '';
    while(!feof($fp))
   {
       $result .= fgets($fp, 1024); 
    } 
//关闭指针
    fclose($fp);
//输出数据
    echo $result;

函数解释:

1、fopen 打开文件或者 URL 参数:filename:文件地址或者url model:模式(只读、只写、或者读写)

2、feof 检查文件指针是否到了文件结束的位置 参数 handle:文件指针  返回值:bool Ture 或者 False

3、fgets 从文件中读取一行 参数 handle:文件指针 length 长度

4、fclose 关闭一个已打开的文件指针
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
1 comments
步履不停 2019-06-29 16:39:22
这个可以有
1 floor
Author's latest blog post