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注销代码(session注销)
May 31 PHP
说说PHP的autoLoad自动加载机制
Sep 27 PHP
php验证手机号码(支持归属地查询及编码为UTF8)
Feb 01 PHP
关于PHP实现异步操作的研究
Feb 03 PHP
浅析SVN常见问题及解决方法
Jun 21 PHP
PHP取二进制文件头快速判断文件类型的实现代码
Aug 05 PHP
PHP中使用循环实现的金字塔图形
Nov 08 PHP
php中随机函数mt_rand()与rand()性能对比分析
Dec 01 PHP
PHP扩展程序实现守护进程
Apr 16 PHP
php+ajax无刷新分页实例详解
Dec 07 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
Jun 14 PHP
Laravel路由研究之domain解决多域名问题的方法示例
Apr 04 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会话控制:Session与Cookie详解
2014/09/27 PHP
ThinkPHP框架里隐藏index.php
2016/04/12 PHP
JavaScript函数、方法、对象代码
2008/10/29 Javascript
javascript基础知识大集锦(二) 推荐收藏
2011/01/13 Javascript
JS通过相同的name进行表格求和代码
2013/08/18 Javascript
js向上无缝滚动,网站公告效果 具体代码
2013/11/18 Javascript
jQuery中ajax的load()方法用法实例
2014/12/26 Javascript
浅谈JavaScript数据类型及转换
2015/02/28 Javascript
js实现有过渡渐变效果的图片轮播相册(兼容IE,ff)
2016/01/19 Javascript
js 将input框中的输入自动转化成半角大写(税号输入框)
2017/02/16 Javascript
Angular表格神器ui-grid应用详解
2017/09/29 Javascript
前端必备插件之纯原生JS的瀑布流插件Macy.js
2017/11/22 Javascript
Bootstrap-table自定义可编辑每页显示记录数
2018/09/07 Javascript
微信小程序上线发布流程图文详解
2019/05/06 Javascript
让IDE识别webpack的别名alias的实现方法
2020/05/06 Javascript
vue3.0中使用element的完整步骤
2021/03/04 Vue.js
[46:40]VGJ.T vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python实现将n个点均匀地分布在球面上的方法
2015/03/12 Python
老生常谈进程线程协程那些事儿
2017/07/24 Python
Python入门学习指南分享
2018/04/11 Python
浅析python继承与多重继承
2018/09/13 Python
Python动态声明变量赋值代码实例
2019/12/30 Python
解决Keras TensorFlow 混编中 trainable=False设置无效问题
2020/06/28 Python
基于Python正确读取资源文件
2020/09/14 Python
Python调用高德API实现批量地址转经纬度并写入表格的功能
2021/01/12 Python
10种CSS3实现的loading动画,挑一个走吧?
2020/11/16 HTML / CSS
Gucci法国官方网站:意大利奢侈品牌
2018/07/25 全球购物
科颜氏英国官网:Kiehl’s英国
2019/11/20 全球购物
初中生物教学反思
2014/01/10 职场文书
电子信息科学专业自荐信
2014/01/30 职场文书
《走一步再走一步》教学反思
2014/02/15 职场文书
驻村工作先进事迹
2014/08/14 职场文书
缓刑人员思想汇报500字
2014/09/12 职场文书
体育教师教学随笔
2015/08/15 职场文书
2016年秋季趣味运动会开幕词
2016/03/04 职场文书
golang 实现两个结构体复制字段
2021/04/28 Golang