博主信息
博文 15
粉丝 0
评论 1
访问量 17823
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
php爬取网页的几种方式
空城的博客
原创
2484人浏览过

一、用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 关闭一个已打开的文件指针
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
1条评论
步履不停 2019-06-29 16:39:22
这个可以有
1楼
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学