PHP simple_html_dom.php+正则 采集文章代码


Posted in PHP onDecember 24, 2009
<?php 
//包含PHP Simple html Dom 类库文件 
include_once('./simplehtmldom/simple_html_dom.php'); //采集html 
function getwebcontent($url){ 
$ch = curl_init(); 
$timeout = 10; 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1); 
$contents = trim(curl_exec($ch)); 
curl_close($ch); 
return $contents; 
} 

//获得标题和url 
$string = 
getwebcontent('http://www.babytree.com/learn/zhunbeihuaiyun/jijibeiyun/2'); 
//正则匹配<li>获取标题和地址 
preg_match_all ("/<li><a href=\"\/learn\/article\/(.*)\">(.*)<\/a>/", 
$string, $out, PREG_SET_ORDER); 
foreach($out as $key => $value){ 
$article['title'][] = $out[$key][2]; 
$article['link'][] = "http://www.babytree.com/learn/article/".$out[$key][1]; 
} 
//根据url获取文章内容 
foreach($article['link'] as $key=>$value){ 
$html = file_get_html($value); 
$div = $html->find('div[id=pagenum_0]'); 
$article[content][] = $div[0]->innertext; 
} 
//标题转码---真正用的时候不用这步--因为咱本来就要用utf8的 
//不转码还真不能保存成文件 
foreach($article[title] as $key=>$value){ 
$article[title][$key] = iconv('utf-8', 'gbk', $value);//转码 
} 
//存入文件 
$num = count($article['title']); 
for($i=0; $i<$num; $i++){ 
file_put_contents("{$article[title][$i]}.txt", $article['content'][$i]); 
} 
/*本来想12点之前发的。。但小看一下都3点半了。。。 就算昨天的吧 
本来获取文章内容时用正则是最好的,速度也是最快的, 
奈何正则是好,但正则表达式是真难!于是乎小查了一下, 
网上也有很多人也在用PHP Simple Dom 虽然效率慢了点,但效果还是不错的 
从包含类库文件到写入txt文件 大概是7/8就秒 还有带于进一步优化,特别是那获取文章内容时的正则,那个太恶心了 
大家可以小研究一下*/ 
?>
PHP 相关文章推荐
php md5下16位和32位的实现代码
Apr 09 PHP
php中$_REQUEST、$_POST、$_GET的区别和联系小结
Nov 23 PHP
PHP代码优化的53个细节
Mar 03 PHP
php将图片保存入mysql数据库失败的解决方法
Dec 27 PHP
PHP进程同步代码实例
Feb 12 PHP
php函数重载的替代方法--伪重载详解
May 08 PHP
PHP实现的memcache环形队列类实例
Jul 28 PHP
PHP比较运算符的详细介绍
Sep 29 PHP
php HTML无刷新提交表单
Apr 05 PHP
详解PHP原生DOM对象操作XML的方法
Oct 17 PHP
PHP递归实现文件夹的复制、删除、查看大小操作示例
Aug 11 PHP
PHP+AJAX 投票器功能
Nov 11 PHP
在PHP中检查PHP文件是否有语法错误的方法
Dec 23 #PHP
php 常用类整理
Dec 23 #PHP
PHP 源代码压缩小工具
Dec 22 #PHP
php 8小时时间差的解决方法小结
Dec 22 #PHP
PHP 分页原理分析,大家可以看看
Dec 21 #PHP
c#中的实现php中的preg_replace
Dec 21 #PHP
php 空格,换行,跳格使用说明
Dec 18 #PHP
You might like
PHP 类型转换函数intval
2009/06/20 PHP
PHP 采集程序原理分析篇
2010/03/05 PHP
PHP求小于1000的所有水仙花数的代码
2012/01/10 PHP
PHP使用Session遇到的一个Permission denied Notice解决办法
2014/07/30 PHP
详解WordPress中过滤链接与过滤SQL语句的方法
2015/12/18 PHP
laravel 修改记住我功能的cookie保存时间的方法
2019/10/14 PHP
用正则获取指定路径文件的名称
2007/02/27 Javascript
jquery Firefox3.5中操作select的问题
2009/07/10 Javascript
JS实现从网页顶部掉下弹出层效果的方法
2015/08/06 Javascript
基于Jquery代码实现手风琴菜单
2015/11/19 Javascript
js轮播图透明度切换(带上下页和底部圆点切换)
2017/04/27 Javascript
详解Vue 方法与事件处理器
2017/06/20 Javascript
Express使用html模板的详细代码
2017/09/18 Javascript
详解Angular5/Angular6项目如何添加热更新(HMR)功能
2018/10/10 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【矩形情况】
2018/12/13 Javascript
详解jQuery-each()方法
2019/03/13 jQuery
微信小程序实现折线图的示例代码
2019/06/07 Javascript
使用js实现一个简单的滚动条过程解析
2019/09/10 Javascript
p5.js绘制旋转的正方形
2019/10/23 Javascript
Vue-cli3生成的Vue项目加载Mxgraph方法示例
2020/05/31 Javascript
[01:38]2018DOTA2亚洲邀请赛主赛事第二日现场采访 神秘商人痛陈生计不易
2018/04/05 DOTA
[01:09:50]VP vs Pain 2018国际邀请赛小组赛BO2 第二场
2018/08/20 DOTA
浅谈numpy库的常用基本操作方法
2018/01/09 Python
python生成器与迭代器详解
2019/01/01 Python
在Pycharm中自动添加时间日期作者等信息的方法
2019/01/16 Python
用CSS3实现瀑布流布局的示例代码
2017/11/10 HTML / CSS
HTML5 Canvas+JS控制电脑或手机上的摄像头实例
2014/05/03 HTML / CSS
REISS美国官网:伦敦最受欢迎的时尚品牌
2019/08/16 全球购物
什么是动态端口(Dynamic Ports)?动态端口的范围是多少?
2014/12/12 面试题
工商管理系学生的自我评价分享
2013/11/29 职场文书
2014年教师节寄语
2014/04/03 职场文书
施工安全标语
2014/06/07 职场文书
法院个人总结
2015/03/03 职场文书
农民工工资保障承诺书
2015/05/04 职场文书
laravel ajax curd 搜索登录判断功能的实现
2021/04/17 PHP
Javascript中Microtask和Macrotask鲜为人知的知识点
2022/04/02 Javascript