• php数据抓取的三种方式


    1、fopen、fgets方式抓取数据

    $file = fopen(“yaradish.cn”,"r");       #打开资源,并绑定到一个stream上
    while(!feof($file)){            #知道到达底部
       $content.=fgets($files);        #写入
    }
    echo $content;

    2、file_get_contents 方式

      2.1、get方式抓取(最简单的方式只需要一个函数)

    $content = file_get_contents('yaradish.cn');
    echo $content;

      2.2、post方式抓取

      注:使用此方式的时候,可能会报错:‘无法找到包装器https,你在配置php时忘了配置它吗‘?(谷歌翻译)

    出现这个问题不要紧张,只修改修改配置文件php.ini即可。方法如下

    php_openssl.dll      #打开注释,重启apache

      代码:

    $data = array('name' =>'yaradish');                  #参数
    $data = http_build_query($data);                     #将参数数组转换为请求字符串
    $option = array(
        'http' =>array(                                  #声明协议
              'method'  => 'POST',
              'header'   => 'Content-type:application/x-www-form-urlencoded',   #自己打的时候多看几遍,要不然直接复制
              'content'  => $data
        )   
     )  
    $url = 'http://www.yaradish.cn';
    $content = stream_context_create($option); #模拟post,创建流stream
    $result = file_get_content($url,false,$content);
    echo $result;

    3、curl方式抓取

      使用这个方法抓取存在https协议的页面时会遇到一个问题,页面显示为空;原因是忽略了http和https的区别,解决办法有二:①将https换为http;②利用参数禁用ssl证书验证,即禁用https的加密认证

    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,flase);  禁用curl验证对等证书
    curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,flase);  检测服务器域名和证书上的是否一致

      代码:

    $ch = curl_init();                               #初始化
    curl_setopt($ch, CURLOPT_URL, $url);                                                   
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);    
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);  
    $content = curl_exec($url);
    curl_close($ch)
  • 相关阅读:
    JavaScript的由来, 浏览器的20年
    WEB界面onload前的加载流程❤❤
    HTML5文件系统API和资料整理
    No enclosing instance of type is accessible. Must qualify the allocation with an enclosing instance of type LeadRestControllerTest (e.g. x.new A() where x is an instance of ).
    Git Gerrit Code Review
    Nginx Configuring HTTPS servers
    自签名证书 nginx tomcat
    centos yum install nginx
    局域网 服务器 https
    分布式重复提交
  • 原文地址:https://www.cnblogs.com/yaradish/p/9507987.html
Copyright © 2020-2023  润新知