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实现链结人气统计
Oct 09 PHP
php中使用explode查找某个字符是否存在的方法
Jul 12 PHP
php数组函数序列之array_search()- 按元素值返回键名
Nov 04 PHP
获取用户Ip地址通用方法与常见安全隐患(HTTP_X_FORWARDED_FOR)
Jun 01 PHP
php的ajax简单实例
Feb 27 PHP
实用的PHP带公钥加密类分享(每次加密结果都不一样哦)
Aug 20 PHP
php中get_defined_constants函数用法实例分析
May 12 PHP
Laravel5中防止XSS跨站攻击的方法
Oct 10 PHP
php 截取GBK文档某个位置开始的n个字符方法
Mar 08 PHP
PHP实现字母数字混合验证码功能
Jul 11 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
Nov 23 PHP
详解php中流行的rpc框架
May 29 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
sony ICF-2010 拆解与改装
2021/03/02 无线电
用php和MySql来与ODBC数据连接
2006/10/09 PHP
快速开发一个PHP扩展图文教程
2008/12/12 PHP
PHPMailer 中文使用说明小结
2010/01/22 PHP
PHP几个数学计算的内部函数学习整理
2011/08/06 PHP
取键盘键位ASCII码的网页
2007/07/30 Javascript
JS事件Event元素(兼容IE,Firefox,Chorme)
2012/11/01 Javascript
jquery日历插件datepicker用法分析
2016/01/22 Javascript
Jquery中map函数的用法
2016/06/03 Javascript
Wireshark基本介绍和学习TCP三次握手
2016/08/15 Javascript
深入理解jQuery layui分页控件的使用
2016/08/17 Javascript
用vue和node写的简易购物车实现
2017/04/25 Javascript
浅谈Vue.js应用的四种AJAX请求数据模式
2017/08/30 Javascript
JS正则表达式完美实现身份证校验功能
2017/10/18 Javascript
JS实现利用两个队列表示一个栈的方法
2017/12/13 Javascript
JS实现的邮箱提示补全效果示例
2018/01/30 Javascript
用JS实现根据当前时间随机生成流水号或者订单号
2018/05/31 Javascript
jQuery擦除插件eraser使用方法详解
2020/01/11 jQuery
[06:59]DOTA2-DPC中国联赛3月7日Recap集锦
2021/03/11 DOTA
Python的Flask框架中实现分页功能的教程
2015/04/20 Python
Python 详解基本语法_函数_返回值
2017/01/22 Python
利用python模拟实现POST请求提交图片的方法
2017/07/25 Python
Python程序运行原理图文解析
2018/02/10 Python
用python标准库difflib比较两份文件的异同详解
2018/11/16 Python
python中必要的名词解释
2019/11/20 Python
浅谈Pycharm最有必要改的几个默认设置项
2020/02/14 Python
基于Python爬取爱奇艺资源过程解析
2020/03/02 Python
Eastbay官网:美国最大的运动鞋网络零售商
2016/07/27 全球购物
Eagle Eyes Optics鹰眼光学:高性能太阳镜
2018/12/07 全球购物
.NET里面如何取得当前的屏幕分辨率
2012/12/06 面试题
有子女的离婚协议书怎么写(范本)
2014/09/29 职场文书
财务检查整改报告
2014/11/06 职场文书
2014年平安夜寄语
2014/12/08 职场文书
基石观后感
2015/06/12 职场文书
2015年物流客服工作总结
2015/07/27 职场文书
python 调用js的四种方式
2021/04/11 Python