PHP群:95885625 Hbuilder+MUI群:81989597 站长QQ:634381967
    您现在的位置: 首页 > 开发编程 > PHP教程 > 正文

    php页面抓取的几种方法file()、file_get_contents()、fopen()->fread()->fclose()、curl、fsockopen()

    作者:admin来源:网络浏览:时间:2020-09-30 00:07:50我要评论
    导读:php抓取页面经常用于数据采集,还有文件数据读写操作,今天分享php抓取页面信息的几种方法,有简单有复杂,供大家学习参考。​一、 PHP抓...
    php抓取页面经常用于数据采集,还有文件数据读写操作,今天分享php抓取页面信息的几种方法,有简单有复杂,供大家学习参考。
    ​一、 PHP抓取页面的主要方法:
    1. file()函数
    2. file_get_contents()函数
    3. fopen()->fread()->fclose()模式
    4.curl方式
    5. fsockopen()函数 socket模式
    二、PHP解析html或xml的方式:
    1. file()函数

    1. <?php 
    2. $url='http://t.qq.com'
    3. $lines_array=file($url); 
    4. $lines_string=implode('',$lines_array); 
    5. echo htmlspecialchars($lines_string); 

    2. file_get_contents()函数
    使用file_get_contents和fopen必须空间开启allow_url_fopen。
    方法:编辑php.ini,设置 allow_url_fopen = On,allow_url_fopen关闭时fopen和file_get_contents都不能打开远程文件。
     

    1. <?php 
    2. $url='http://t.qq.com'
    3. $lines_string=file_get_contents($url); 
    4. echo htmlspecialchars($lines_string); 

    3. fopen()->fread()->fclose()模式
     

    1. <?php 
    2. $url='http://t.qq.com'
    3. $handle=fopen($url,"rb"); 
    4. $lines_string=""
    5. do
    6. $data=fread($handle,1024); 
    7. if(strlen($data)==0) { 
    8. break
    9. $lines_string.=$data
    10. }while(true); 
    11. fclose($handle); 
    12. echo htmlspecialchars($lines_string); 

    4. curl方式
    使用curl必须空间开启curl。方法:windows下修改php.ini,将extension=php_curl.dll前面的分号去掉,而且需 要拷贝ssleay32.dll和libeay32.dll到C:\WINDOWS\system32下;Linux下要安装curl扩展。

     

    1. <?php 
    2. $url='http://t.qq.com'
    3. $ch=curl_init(); 
    4. $timeout=5; 
    5. curl_setopt($ch, CURLOPT_URL, $url); 
    6. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    7. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 
    8. $lines_string=curl_exec($ch); 
    9. curl_close($ch); 
    10. echo htmlspecialchars($lines_string); 

    5. fsockopen()函数 socket模式

    socket模式能否正确执行,也跟服务器的设置有关系,具体可以通过phpinfo查看服务器开启了哪些通信协议,比如我的本地php socket没开启http,只能使用udp测试一下了。

    1. <?php 
    2. $fp = fsockopen("udp://127.0.0.1", 13, $errno$errstr); 
    3. if (!$fp) { 
    4. echo "ERROR: $errno - $errstr<br />\n" 
    5. else { 
    6. fwrite($fp"\n"
    7. echo fread($fp, 26) 
    8. fclose($fp

    转载请注明(B5教程网)原文链接:https://b5.mxunkeji.com/content-10-3667-1.html
    相关热词搜索: php php页面抓取