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 checkbox 取值详细说明
Aug 19 PHP
PHP容易被忽略而出错陷阱 数字与字符串比较
Nov 10 PHP
PHP 自定义错误处理函数的使用详解
May 10 PHP
解析PHP无限级分类方法及代码
Jun 21 PHP
php实现信用卡校验位算法THE LUHN MOD-10示例
May 07 PHP
PHP遍历数组的方法汇总
Apr 30 PHP
调用WordPress函数统计文章访问量及PHP原生计数器的实现
Mar 21 PHP
php opendir()列出目录下所有文件的实例代码
Oct 02 PHP
phpStudy配置多站点多域名和多端口的方法
Sep 01 PHP
PHP的PDO错误与错误处理
Jan 27 PHP
php面向对象程序设计入门教程
Jun 22 PHP
php swoole多进程/多线程用法示例【基于php7nts版】
Aug 12 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脚本的10个技巧(7)
2006/10/09 PHP
php&amp;java(一)
2006/10/09 PHP
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
2011/06/24 PHP
探讨php define()函数及defined()函数使用详解
2013/06/09 PHP
Yii框架组件和事件行为管理详解
2016/05/20 PHP
在Laravel中使用MongoDB的方法示例
2019/11/11 PHP
JQuery动态给table添加、删除行 改进版
2011/01/19 Javascript
js写出遮罩层登陆框和对联广告并自动跟随滚动条滚动
2014/04/29 Javascript
jQuery简单tab切换效果实现方法
2015/04/08 Javascript
JS随机打乱数组的方法小结
2016/06/22 Javascript
jquery 动态合并单元格的实现方法
2016/08/26 Javascript
AngularJS实现给动态生成的元素绑定事件的方法
2016/12/14 Javascript
JS中正则表达式全局匹配模式 /g用法详解
2017/04/01 Javascript
微信小程序滚动Tab实现左右可滑动切换
2017/08/17 Javascript
详解javascript中的Error对象
2019/04/25 Javascript
浅析webpack-bundle-analyzer在vue-cli3中的使用
2019/10/23 Javascript
vue指令v-html使用过滤器filters功能实例
2019/10/25 Javascript
微信小程序静默登录的实现代码
2020/01/08 Javascript
在vue中使用console.log无效的解决
2020/08/09 Javascript
Python简单实现的代理服务器端口映射功能示例
2018/04/08 Python
pycharm中使用anaconda部署python环境的方法步骤
2018/12/19 Python
python Selenium 库的使用技巧
2020/10/16 Python
Django中使用Celery的方法步骤
2020/12/07 Python
HTML5本地存储之Web Storage应用介绍
2013/01/06 HTML / CSS
HTML5触摸事件演化tap事件介绍
2016/03/25 HTML / CSS
智利最大的网上商店:Linio智利
2016/11/24 全球购物
悬挂训练绳:TRX
2017/12/14 全球购物
预订旅游活动、景点和旅游:GetYourGuide
2019/09/29 全球购物
技校毕业生自荐信范文
2014/03/07 职场文书
《陈毅探母》教学反思
2014/05/01 职场文书
六一儿童节活动总结
2014/08/27 职场文书
群众路线领导班子四风对照检查材料
2014/09/27 职场文书
老舍《猫》教学反思
2016/02/17 职场文书
党组织关系的介绍信模板
2019/06/21 职场文书
go语言中fallthrough的用法说明
2021/05/06 Golang
使用Apache Camel表达REST服务的方法
2022/06/10 Servers