PHP simple_html_dom.php+正则 采集文章代码

 更新时间:2009年12月24日 01:17:15   作者:  
网上也有很多人也在用PHP Simple Dom 虽然效率慢了点,但效果还是不错的从包含类库文件到写入txt文件 大概是7/8就秒。
复制代码 代码如下:

<?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二维数组的去重问题解析

    PHP数组去除重复项有个内置函数array_unique(),但是php的array_unique函数只适用于一维数组,对多维数组并不适用,以下提供一个二维数组的array_unique函数。
    2011-07-07
  • 解决PhpMyAdmin中导入2M以上大文件限制的方法分享

    解决PhpMyAdmin中导入2M以上大文件限制的方法分享

    当用phpMyAdmin导入的资料库大小大于2M的时候,会出现如下提示: No data was received to import. Either no file name was submitted、or the file size exceeded the maximum size permitted by your PHP configuration. See FAQ 1.16.
    2014-06-06
  • php读取javascript设置的cookies的代码

    php读取javascript设置的cookies的代码

    最主要的就是给cookies设置一个名字,在javascript设置cookies的时候不要用无参数函数,那样用的话php没办法读取
    2010-04-04
  • php操作redis命令及代码实例大全

    php操作redis命令及代码实例大全

    这篇文章详包含了php操作redis所有命令方法及代码实例,官方PHP Redis扩展文件下载,Redis Windows版下载,需要的朋友可以参考下
    2020-11-11
  • PHP给前端返回一个JSON对象的实例讲解

    PHP给前端返回一个JSON对象的实例讲解

    今天小编就为大家分享一篇PHP给前端返回一个JSON对象的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • 使用Canal实现PHP应用程序与MySQL数据库的实时数据同步

    使用Canal实现PHP应用程序与MySQL数据库的实时数据同步

    Canal是阿里巴巴开源的一个数据同步工具,可实现MySQL数据库到其他数据源的实时同步,PHP应用程序中可轻松使用,提高系统的可靠性和实时性,提供了丰富的API和文档支持
    2023-04-04
  • 简单谈谈favicon

    简单谈谈favicon

    浏览器调用Favicon的原则是首先在网页所在的目录下寻找Favicon.ico文件,如果没有,便到网站的根目录下寻找。那么我们可以自定义favicon的位置吗?今天我们就来探讨下
    2015-06-06
  • PHP开发中AJAX技术的简单应用

    PHP开发中AJAX技术的简单应用

    这篇文章主要介绍了PHP开发中AJAX技术的简单应用,简单对ajax的执行原理、实际应用作介绍,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • PHP基本语法实例总结

    PHP基本语法实例总结

    这篇文章主要介绍了PHP基本语法,结合实例形式总结分析了php基本的输出、注释、变量的类型与转换、代码风格等,需要的朋友可以参考下
    2016-09-09
  • php REMOTE_ADDR之获取访客IP的代码

    php REMOTE_ADDR之获取访客IP的代码

    用php获取访客ip的代码,主要到到了REMOTE_ADDR
    2008-04-04

最新评论