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 curl_setopt()函数实例代码与参数分析
Jun 02 PHP
php中取得文件的后缀名?
Feb 20 PHP
MySQL时间字段究竟使用INT还是DateTime的说明
Feb 27 PHP
php中json_encode处理gbk与gb2312中文乱码问题的解决方法
Jul 10 PHP
ThinkPHP控制器里javascript代码不能执行的解决方法
Nov 22 PHP
CentOS下搭建PHP环境与WordPress博客程序的全流程总结
May 07 PHP
ThinkPHP框架分布式数据库连接方法详解
Mar 14 PHP
PHP简单实现二维数组赋值与遍历功能示例
Oct 19 PHP
Laravel关联模型中过滤结果为空的结果集(has和with区别)
Oct 18 PHP
实例讲解PHP验证邮箱是否合格
Jan 28 PHP
php 比较获取两个数组相同和不同元素的例子(交集和差集)
Oct 18 PHP
php经典趣味算法实例代码
Jan 21 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+java实现自动新闻滚动窗口
2006/10/09 PHP
简化php模板页面中分页代码的解析
2009/02/06 PHP
PHP学习散记_编码(json_encode 中文不显示)
2011/11/10 PHP
PHP批量采集下载美女图片的实现代码
2013/06/03 PHP
比较strtr, str_replace和preg_replace三个函数的效率
2013/06/26 PHP
zf框架的校验器InArray使用示例
2014/03/13 PHP
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
2016/11/14 PHP
使用Git实现Laravel项目的自动化部署
2019/11/24 PHP
javascript中xml操作实现代码
2011/11/21 Javascript
实现web打印的各种方法介绍及实现代码
2013/01/09 Javascript
js插件方式打开pdf文件(浏览器pdf插件分享)
2013/12/20 Javascript
Jquery.Form 异步提交表单的简单实例
2014/03/03 Javascript
简单纯js实现点击切换TAB标签实例
2015/08/23 Javascript
angularjs学习笔记之简单介绍
2015/09/26 Javascript
js中利用tagname和id获取元素的方法
2016/01/03 Javascript
JavaScript中的splice方法用法详解
2016/07/20 Javascript
VUE2实现事件驱动弹窗示例
2017/10/21 Javascript
JS实现求字符串中出现最多次数的字符和次数示例
2019/07/05 Javascript
JS插入排序简单理解与实现方法分析
2019/11/25 Javascript
微信小程序实现单个卡片左滑显示按钮并防止上下滑动干扰功能
2019/12/06 Javascript
JS数组扁平化、去重、排序操作实例详解
2020/02/24 Javascript
JS typeof fn === 'function' &amp;&amp; fn()详解
2020/08/22 Javascript
JavaScript 防盗链的原理以及破解方法
2020/12/29 Javascript
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
[01:53]2016完美“圣”典风云人物:Maybe专访
2016/12/05 DOTA
Python输出带颜色的字符串实例
2017/10/10 Python
WxPython建立批量录入框窗口
2019/02/27 Python
Python Django Vue 项目创建过程详解
2019/07/29 Python
新建文件时Pycharm中自动设置头部模板信息的方法
2020/04/17 Python
如何使用PyCharm将代码上传到GitHub上(图文详解)
2020/04/27 Python
移动端Html5页面生成图片解决方案
2018/08/07 HTML / CSS
数控技术专业推荐信
2013/11/01 职场文书
2014入党积极分子批评与自我批评思想汇报
2014/09/20 职场文书
无故旷工检讨书
2015/08/15 职场文书
老舍《猫》教学反思
2016/02/17 职场文书
uniapp 微信小程序 自定义tabBar 导航
2022/04/22 Javascript