百度贴吧有很多好内容,稍微整合一下就是很不错的原创内容。但是一点一点的复制粘贴很麻烦,于是残冰就自己写了一段百度贴吧内容采集的php代码。由于残冰也是初学php,而且对面向对象的运用恨不熟练,所以代码写起来还是面向过程更多一些~希望高手吐槽完后指点一下~~~
其实百度贴吧内容的采集只要做好正则匹配,采集起来很容易。
<?php
echo “<meta charset=\”UTF-8\”>”;//这里就是输出页面代码,如果换成gb2312就会乱码
function str_substr($start, $end, $str) //定义源代码截取的方法
{
$temp = explode($start, $str, 2);
$content = explode($end, $temp[1], 2);
return $content[0];
}
$tiebamain = file_get_contents(“http://tieba.baidu.com/p/3705825758?see_lz=1&pn=1″);//获取内容,此处一定要点击“只看楼主”再把url粘贴过来,不然会连回复内容也采集进来
$pagecount=str_substr(‘下一页’, ‘尾页’, $tiebamain);//这里是截取当前内容有多少页
if($pagecount==null||$pagecount==””)//如果只有一页,页码就是1,不是就采集有多少页
{
$pagecount=1;
}
else
{
$pagecount=str_substr(‘pn=’, ‘”>’, $pagecount);
}
for($i=1;$i<=$pagecount;$i++)//接下来就是采集内容
{
$tiebacontent = file_get_contents(“http://tieba.baidu.com/p/3705825758?see_lz=1&pn=”.$i);//注意此处url与上面的变化,多了pn=$i,循环采集的意思
$pregcc = “/<cc>(.*)<\/cc>/”;//正则
preg_match_all($pregcc,$tiebacontent,$match);//截取<cc></cc>之间的内容,这段内容就是要采集的内容。
$content=””;
for($k=0;$k<count($match[1]);$k++)
{
$content= $content.$match[1][$k].”<br>”;//获取所有 <cc></cc> 之间的内容
}
$newcontent=ereg_replace(“<div [^>]*>|<\/div>”,””,$content);//正则匹配掉div、a等标签
$newcontent=preg_replace(‘/<img.+?src=\”(.+?)\”.+?>/’,'<img src=”\1″>’,$newcontent);
$newcontent=ereg_replace(“<a [^>]*>|<\/a>”,””,$newcontent);
$newcontent=str_replace(“<br>”,””,$newcontent);//接下来插入<br>标签来控制样式
$newcontent=str_replace(“>”,”><br><br>”,$newcontent);
$newcontent=str_replace(“<img”,”<br><br><img”,$newcontent);
$newcontent=str_replace(“<br><br><br><br>”,”<br><br>”,$newcontent);
echo $newcontent;//输出最终内容
}
?>
以上就是所有的百度贴吧内容采集的php代码了。
未经允许不得转载:前端撸码笔记 » 贴上一段百度贴吧采集代码