php 网页采集入库程序代码
php 网页采集程序总结,最近帮朋友做
网页采集现在用到最多是工具了,像最受站长欢迎的就是火车头了,但有一些站长喜欢使用网页来自定义采集了,下面一起来看一个php 网页采集入库程序代码 php 网页采集程序总结,最近帮朋友做了个采集程序 以%B1%B1%BE%A9为例 %B1%B1%BE%A9是gb2312的转码,例如 $aa=”北京”; $aa = @iconv(“utf-8″, “gb2312″,$aa); echo $bb=urlencode($aa); 我们通过file_get_contents($url) 抓取网页 当然也可以是curl function getHtml($url){ $ch2 = curl_init($url); curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1); $html = curl_exec($ch2); curl_close($ch2); return $html; } 抓取我们想要的页面数据,可以设定从哪个位置到哪个位置的区间,取出中间数据,通过以下方法实现 function findneed($wholestr,$strkey1,$strkey2) { $num1 = strpos($wholestr , $strkey1)+strlen($strkey1); $num2 = strpos($wholestr ,$strkey2); $needstr =substr($wholestr ,$num1,$num2-$num1 ); return $needstr; } 当然这是一种方法,我们只要写出一个php即可,根据分页抓取,但是如果都放在循环里面,岂不是很慢 我们介绍另个算法 通过实现网页跳转页数,抓取,访问程序php采集类,不断跳转页数,把当前url的page 数组保存到数据库 其他的无非是些正则表达式的用法: 比如我们想取页面中的所有城市 可用preg_match_all(‘/(.*?)/s’,$html,$selects);即可 (.*?)表示任意字符 . 是任何东西 * 是0至无限 ? 是0至1 还有种算法是递归,类似循环取值 function collectionProvinceData($url,$province,$page=1,$totalPage=-1){ if($page>$totalPage&&$totalPage>-1){ return false; } $collectionUrl = $url."?page=".$page."&province=".urlencode(iconv('UTF-8', 'GB2312', $province)); echo "当前url:".$province."第{$page}页 url".$collectionUrl.""; $html = getHtml($collectionUrl); $html = mb_convert_encoding($html, 'UTF-8', 'UTF-8,GBK,GB2312,BIG5'); if($totalPage==-1){ $latestPageNum = getLatestPageNum($html); if($latestPageNum>0){ $totalPage = $latestPageNum; } } $dataRows = getDataRows($html); saveDataRowsOrNot($dataRows); if(!empty($dataRows)){ $page++; } ob_flush(); flush(); collectionProvinceData($url,$province,$page,$totalPage); } (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |