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 相关文章推荐
数据库相关问题
Oct 09 PHP
elgg 获取文件图标地址的方法
Mar 20 PHP
php输出echo、print、print_r、printf、sprintf、var_dump的区别比较
Jun 21 PHP
php简单的留言板与回复功能具体实现
Feb 19 PHP
php数组添加元素方法小结
Dec 20 PHP
PHP下载远程文件到本地存储的方法
Mar 24 PHP
PHP实现查询两个数组中不同元素的方法
Feb 23 PHP
PHP简单实现无限级分类的方法
May 13 PHP
php对微信支付回调处理的方法
Aug 23 PHP
Yii框架通过请求组件处理get,post请求的方法分析
Sep 03 PHP
laravel 解决路由除了根目录其他都404的问题
Oct 18 PHP
Laravel Eloquent分表方法并使用模型关联的实现
Nov 25 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
百度ping方法使用示例 自动ping百度
2014/01/26 PHP
PHP 生成微信红包代码简单
2016/03/25 PHP
WordPress中设置Post Type自定义文章类型的实例教程
2016/05/10 PHP
基于jquery用于查询操作的实现代码
2010/05/10 Javascript
基于JQuery的数字改变的动画效果--可用来做计数器
2010/08/11 Javascript
深入理解JavaScript系列(9) 根本没有“JSON对象”这回事!
2012/01/15 Javascript
JavaScript 在网页上单击鼠标的地方显示层及关闭层
2012/12/30 Javascript
jQuery选择器源码解读(五):tokenize的解析过程
2015/03/31 Javascript
js提示框替代系统alert,自动关闭alert对话框的实现方法
2016/11/07 Javascript
React-intl 实现多语言的示例代码
2017/11/03 Javascript
js 两数组去除重复数值的实例
2017/12/06 Javascript
Vue2.0学习之详解Vue 组件及父子组件通信
2017/12/12 Javascript
JS中用EL表达式获取上下文参数值的方法
2018/03/28 Javascript
node跨域转发 express+http-proxy-middleware的使用
2018/05/31 Javascript
Angular项目如何升级至Angular6步骤全纪录
2018/09/03 Javascript
Vue 组件参数校验与非props特性的方法
2019/02/12 Javascript
微信小程序云开发 搭建一个管理小程序
2019/05/17 Javascript
JS实现烟花爆炸效果
2020/03/10 Javascript
[33:39]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第二局
2016/02/27 DOTA
python处理RSTP视频流过程解析
2020/01/11 Python
python离线安装外部依赖包的实现
2020/02/13 Python
VScode连接远程服务器上的jupyter notebook的实现
2020/04/23 Python
Prometheus开发中间件Exporter过程详解
2020/11/30 Python
纯CSS3打造属于自己的“小黄人”
2016/03/14 HTML / CSS
Hotels.com韩国:海外国内旅行所需的酒店和住宿预订网站
2020/05/08 全球购物
土木工程毕业生自荐信
2013/09/21 职场文书
英文版餐饮业求职信
2013/10/18 职场文书
食品厂厂长岗位职责
2014/01/30 职场文书
投标邀请书范文
2014/01/31 职场文书
高二物理教学反思
2014/02/08 职场文书
数学检讨书1000字
2014/02/24 职场文书
多媒体教室标语
2014/06/26 职场文书
环保志愿者活动方案
2014/08/14 职场文书
2014年政府采购工作总结
2014/12/09 职场文书
扬州个园导游词
2015/02/06 职场文书
2019预备党员转正申请书模板2篇!
2019/08/07 职场文书