其实,采集程序最简单的思路就是:获取页面代码——分析代码——获取需要的部分——写入数据库
对于采集程序来说,使用PHP来写的话,其实不算太好的,因为PHP并不支持多线程,对于采集来说,若没有多线程,将会是非常痛苦的一件事
不过可以使用frame等来设置同时几个页面一起采集,这样就能增加速度了,在这里我不讨论怎么多线程,我只说怎么用PHP来进行简单的采集
先确定采集目标:http://cn.jokes.yahoo.com/jok/index.html
这是雅虎的笑话栏目,我就以这个来进行讲解吧
首先分析一下网页,可以知道连接形式为:<img src="http://cn.yimg.com/i/cn/px_ar.gif" width=5 height=12 border=0 hspace=5><a href="http://cn.jokes.yahoo.com/07-07-/55/27lot.html" class=list target=_blank><big>头发与智慧</big></a>
使用正则表达式将它表示出来为:/hspace=5><a href="http://cn.jokes.yahoo.com/(.*).html" class=list target=_blank>/isU
书写PHP代码:
代码
// 采集首页地址
$url="<a href=\"http://cn.jokes.yahoo.com/jok/index.html\">http://cn.jokes.yahoo.com/jok/index.html</a>";
// 获取页面代码
$r = file_get_contents($url);
// 设置匹配正则
$preg = '/hspace=5><a href="http://cn.jokes.yahoo.com/(.*).html" class=list target=_blank>/isU';
// 进行正则搜索
preg_match_all($preg, $r, $title);
通过上面的代码,$title[1][num]就是连接的地址了,接着分析内容页,得到内容匹配正则为:/<div id="newscontent">(.*)</div>/isU
继续写代码:
代码
// 计算标题数量
$count = count($title[1]);
// 通过标题数量进行内容采集
for($i=0;$i<$count;$i++) {
// 设置内容页地址
$jurl = "<a href=\"http://cn.jokes.yahoo.com/\">http://cn.jokes.yahoo.com/</a>" . $title[1][$i] . ".html";
// 获取内容页代码
$c = file_get_contents($jurl);
// 设置内容页匹配正则
$p = '/<div id="newscontent">(.*)</div>/isU';
// 进行正则匹配搜索
preg_match($p, $c, $content);
// 输出标题
echo $title[1][$i] . "
";
// 输出内容
echo $content[$i];
}
这样,一个简单的采集工具就写出来了,其他的功能只需要再进一步的完善就可以了
完整代码:
代码
<?php
// 采集首页地址
$url = "<a href=\"http://cn.jokes.yahoo.com/jok/index.html\">http://cn.jokes.yahoo.com/jok/index.html</a>";
// 获取页面代码
$r = file_get_contents($url);
// 设置匹配正则
$preg = '/hspace=5><a href="http://cn.jokes.yahoo.com/(.*).html" class=list target=_blank>/isU';
// 进行正则搜索
preg_match_all($preg, $r, $title);
// 计算标题数量
$count = count($title[1]);
// 通过标题数量进行内容采集
for($i=0;$i<$count;$i++) {
// 设置内容页地址
$jurl = "<a href=\"http://cn.jokes.yahoo.com/\">http://cn.jokes.yahoo.com/</a>" . $title[1][$i] . ".html";
// 获取内容页代码
$c = file_get_contents($jurl);
// 设置内容页匹配正则
$p = '/<div id="newscontent">(.*)</div>/isU';
// 进行正则匹配搜索
preg_match($p, $c, $content);
// 输出标题
echo $title[1][$i] . "
";
// 输出内容
echo $content[$i];
}
?>
- 浏览: 36495 次
- 性别:
- 来自: 武汉
最新评论
-
wangkaizhen:
lz 我设置了setTerminal怎么还是提示我templa ...
zend framework 2 关闭layout
相关推荐
【PHP采集程序与宋正河】 在互联网信息爆炸的时代,数据采集成为了获取网络资源的重要手段,PHP作为一款广泛使用的服务器端脚本语言,被广泛应用在网页数据抓取领域。PHP采集程序,顾名思义,是利用PHP编写的一类...
【PHP采集程序的基础知识】 PHP采集程序,也称为“小偷程序”,是一种使用PHP语言编写的脚本,用于从互联网上自动抓取和处理数据。这些数据通常包括网页内容、文章、图片等,并且可以被用于建立镜像网站、数据分析...
... ...这些库提供了更灵活的选项来模拟浏览器行为,包括设置头部信息、处理...理解并掌握这些知识点对于构建一个高效的PHP采集程序至关重要。同时,持续关注PHP社区的新技术和最佳实践,可以提升程序的性能和稳定性。
【PHP采集程序大全 - 菜鸟入门指南】 在互联网数据海量的时代,PHP采集程序,又称"小偷程序",成为获取和处理网络信息的重要工具。对于初学者来说,掌握PHP采集技术不仅可以提升开发能力,还能帮助理解网络数据的...
【标题】"基于PHP的英文仿论坛PHP采集程序源码.zip"揭示了这是一个使用PHP编程语言编写的程序,主要用于从互联网上抓取和处理英文论坛的数据。PHP是一种广泛使用的开源脚本语言,尤其适合Web开发,它允许开发者创建...
英文仿论坛PHP采集程序是一款以php进行开发的自动采集网站源码,网站只需相应的php环境即可,无需MySQL即可进行运行。 程序安装说明: 1. 上传目录中的文件到服务器(请确保支持伪静态) 2. 执行安装脚本 /install/ ...
【标题】"PHP实例开发源码—英文仿论坛PHP采集程序源码.zip" 提供了一个实践性的PHP项目,旨在帮助开发者了解如何构建一个基于PHP的英文论坛数据采集系统。这个项目可能包含了一些核心功能,如数据抓取、解析、存储...
微信公众号文章PHP采集程序(平民版),同步了那个六分版的,只为满足广大同胞需求,降为1分
以下是一个简单的PHP采集程序框架: ```php <?php $url = 'http://example.com'; // 目标网址 $content = file_get_contents($url); // 获取网页内容 $dom = new DOMDocument(); libxml_use_internal_errors(true)...
描述部分详细描述了作者编写PHP采集程序的过程,包括查阅在线教程、尝试实现采集程序、遇到的问题以及最终的理解。作者提到,尽管互联网上有许多相关的教程,但是它们大多存在含糊不清或者不实用的情况。作者通过...
下面将详细讨论PHP采集程序的基本概念、常用方法以及可能涉及到的技术。 **1. PHP基础** PHP(Hypertext Preprocessor)是一种广泛使用的开源脚本语言,特别适合于Web开发,可嵌入到HTML中。它提供了丰富的函数库,...
简单的采集使用。需要的小伙伴下载使用吧,有问题自行修改
百度音乐采集,可以自动输出歌曲列表,适用php坏境,对懒得打开百度音乐的人非常适合,也可以拿来搭建自己的音乐网站
自制采集程序,简易无说明,仅供借鉴,不要直接使用哦 使用了php curl采集,包含cookie模拟,伪造来路,数据写入本地,文件图片下载等一系列代码块。因为自用,代码写的很乱,强迫症或技术不娴熟者就别下了
用于采集公众号文章内容、发表时间、公众号ID、头像、文章封面、文章标题、公众号名称、BizID、文章摘要等内容。本程序采用PHP编写,欢迎感兴趣的同仁一起交流学习。@author:312036773@qq.com
PHP采集(小偷)程序,仿论坛的内容采集程序,PHP环境下使用,不包括数据库部分,若需要将采集到的数据保存至数据库,需要自己另加,本代码只展示采集部分的实现。 本程序支持安装,按提示可安装完成,另外,运行...
在编写PHP采集程序时,会使用到一系列特定的函数来处理网页内容、获取信息、转换路径等任务。下面根据提供的内容详细解析这些常用函数的知识点。 1. 获得当前脚本的URL 在PHP采集程序中,有时需要获取当前页面的...