php里常用的远程采集函数
在php中采集数据最常用的就是使用curl函数来操作,因为curl函数是高性能并且多线程功能,下面我来介绍一个php采集程序,各位同学有需要可进入参考.
php里常用的远程采集函数,代码如下:
/** * 获取远程url的内容 * @param string $url * @return string */ function get_url_content( $url ) { if (function_exists(curl_init)) { $ch = curl_init(); $timeout = 5; curl_setopt ( $ch , CURLOPT_URL, $url ); curl_setopt ( $ch , CURLOPT_RETURNTRANSFER, 1); curl_setopt ( $ch , CURLOPT_CONNECTTIMEOUT, $timeout ); curl_setopt ( $ch , CURLOPT_TIMEOUT, $timeout ); //开源代码phpfensi测试数据 $file_contents = curl_exec( $ch ); curl_close( $ch ); } else { $file_contents = file_get_contents ( $url ); } return $file_contents ; }调用方法,代码如下:
$url = 'http://HdhCmsTestphpfensi测试数据' ; $a = get_url_content( $url ); echo $a ;上面只是一个简单的实例,如果我们想应用可参考我自己写的采集程序了.
1,获取目标网页数据;2,截取相关内容;3,写入数据库/生成HMTL文件;
下面就按照步骤来试试!
获取目标网页数据
1, 确定好,要获取的网页地址甚至形式,这里我们采用的网址是:/index.html?pageconfig=catalog_byproducttype&intProductTypeID=1&strStartChar=A&intResultsPage=1&tr=59,这个页面是有分页的,根据规律,我们找到只需要改变page参数就可以翻页!即:我们的网页形式是: /index.html?pageconfig=catalog_byproducttype& amp;intProductTypeID=1&strStartChar=A&intResultsPage= NUMBER &tr=59
红色部分是当前页码对应值!只需要改变该值就可以了!
2,获取页面内容:自然要用到PHP函数了!这里,两个函数都可以!他们分别是:
file_get_contents() 把整个文件读入一个字符串中。和 file() 一样,不同的是file_get_contents() 把文件读入一个字符串。file_get_contents() 函数是用于将文件的内容读入到一个字符串中的首选方法。如果操作系统支持,还会使用内存映射技术来增强性能。语法: file_get_contents( path , include_path , context , start , max_length ) curl() 了解详细,请参阅官网文档:http://cn.php.net/curl fopen()函数打开文件或者 URL。如果打开失败,本函数返回 FALSE。语法: fopen(filename,mode,include_path,context)当然,我们采用的是第一个!其实,所有的都差不多,有兴趣的童子可以常识常识其他的!代码如下:
<?php $oldcontent = file_get_contents ([http: //HdhCmsTestabcam.cn/index.html?pageconfig=catalog_byproducttype&intProductTypeID=1&strStartChar=A&intResultsPage=2&tr=59]); echo $oldcontent ; ?>运行PHP程序,上面的代码可以显示出整个网页!由于原网页采用的是绝地路径,所以现在显示的效果和原来的是一模一样的!
接下来就是要,截取内容了!截取内容的方法也有很多,今天介绍的一种比较简单,代码如下:
<?php $oldcontent = file_get_contents ([http: //HdhCmsTestabcam.cn/index.html?pageconfig=catalog_byproducttype&intProductTypeID=1&strStartChar=A&intResultsPage=2&tr=59″); $oldcontent ; $pfirst = ‘<table border=]0″ cellspacing=]0″ cellpadding=]0″> <tr> <th style=]padding-left: 0px;]><p style=]font-size:12px]><strong>Code</strong></p></th>’; $plast = ‘Goat polyclonal’; $b = strpos ( $oldcontent , $pfirst ); $c = strpos ( $oldcontent , $plast ); echo substr ( $oldcontent , $b , $c -1); ?>输出的,即为所需要的结果,写入数据库和写入文件都是比较简单的,这里就写入文件了,代码如下:
<?php $oldcontent = file_get_contents ([index.html?pageconfig=catalog_byproducttype&intProductTypeID=1&strStartChar=A&intResultsPage=2&tr=59″); $oldcontent ; $pfirst = ‘<table border=]0″ cellspacing=]0″ cellpadding=]0″> <tr> <th style=]padding-left: 0px;]><p style=]font-size:12px]><strong>Code</strong></p></th>’; $plast = ‘Goat polyclonal’; $b = strpos ( $oldcontent , $pfirst ); $c = strpos ( $oldcontent , $plast ); $a = substr ( $oldcontent , $b , $c -1); $file = date (‘YmdHis’).].html]; $fp = fopen ( $file ,]w+]); if (! is_writable ( $file )){ die ([File [. $file .] can not be written]); } else { file_put_contents ( $file , $a ); echo [success]; } fclose( $fp ); ?>查看更多关于php里常用的远程采集函数 - php函数的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did31133