首页 >php教程 >PHP源码 >php 网页采集入库程序代码

php 网页采集入库程序代码

WBOY
WBOY原创
2016-06-08 17:20:101861浏览

网页采集现在用到最多是工具了,像最受站长欢迎的就是火车头了,但有一些站长喜欢使用网页来自定义采集了,下面一起来看一个php 网页采集入库程序代码

php 网页采集程序总结,最近帮朋友做了个采集程序

以www.xxxx.com/shop_list.php?page=1&php 网页采集入库程序代码=����为例

����是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即可,根据分页抓取,但是如果都放在循环里面,岂不是很慢

我们介绍另个算法


<script><br /> location.href=”index.php?page=<?=$page?>&php 网页采集入库程序代码Index=<?=$php 网页采集入库程序代码Index?>&totalPage=<?=$totalPage?>”;</script>

通过实现网页跳转页数,抓取,访问程序,不断跳转页数,把当前url的page 数组保存到数据库

其他的无非是些正则表达式的用法:

比如我们想取页面中的所有城市

php 网页采集入库程序代码

可用preg_match_all(‘//s’,$html,$selects);即可

(.*?)表示任意字符   . 是任何东西 * 是0至无限  ? 是0至1

还有种算法是递归,类似循环取值


function collectionProvinceData($url,$php 网页采集入库程序代码,$page=1,$totalPage=-1){
if($page>$totalPage&&$totalPage>-1){
return false;
}
$collectionUrl = $url."?page=".$page."&php 网页采集入库程序代码=".urlencode(iconv('UTF-8', 'GB2312', $php 网页采集入库程序代码));
echo "当前url:".$php 网页采集入库程序代码."第{$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,$php 网页采集入库程序代码,$page,$totalPage); }<script>ec(2);</script>
声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn