由于需要,要写一个简单的PHP采集程序,照例是到网上找了一堆教程,然后照猫画虎,可是发现网上的教程全是似是而非,没有一个真正能用的。苦想了几天,终于弄明白了里面的道理。在这里写出来,请高手指正。

采集程序的思路很简单,无非就是先打一个页面,一般都是列表页,取得里面全部链接的地址,然后打开逐条链接,寻找我们感兴趣的东西,如果找到,就把它入库或别的处理。下面以一个很简单的例子来说说。

首先确定一个采集页,一般就是列表面了。这里目标是:http://www.php100.com/article/11/index.htm。这是一个列表页,我们的目的就是采集这个列表页上全部的文章。有列表页了,第一步先打开它,把它的内容纳入到我们的程序中来。一般用fopen或是file_get_contents这两个函数,我们这里用fopen作例子。怎么打开它呢?很简单:$source=fopen("[url=http://www.php100.com/article/11/index.htm",]http://www.php100.com/article/11/index.htm",'r'[/url]);实际上已经把内容纳入到我们的程序中来了。注意得到的$source是一个资源,不是可处理的文本,所以再用函数fread将内容读到一个变量中,这次就是真正的可编辑的文本了。例子:

$content=fread($source,99999);后面的数字表示字节数,填个大的就行。你用file_put_contents将$content写入到一个文本文件,可以看出里面的内容其实就是网页的源码。得到了网页的源码,我们就要分析里面的文章链接地址,这里要用到正则表达式了,[推荐正则表达式教程(http://www.php100.com/article/7/all/545.1.htm)]。通过查看源代码,我们可以看到里面文章的链接地址全是这个样子<div class="in_arttitle"><a href="http://www.php100.com/article/10/all/273.1.htm">  将数据库连接代码封装在函数里,在需要读取时调用..</a>

我们就可以写正则表达式了。$count=preg_match_all("/<div class=\"in_arttitle\"><a\shref=\"(.+?)\">(.+?)<\/a>/",$content,$art_list);

其中数组$art_list[1][$s]里面包含的就是某个文章的链接地址。而$art_list[2][$s]包含的就是某一文章的标题。到了这一步就可以算成功了一半了。

接着用for循环依次打每个链接,然后像取得标题一样的方法取得内容即可。以上这些和我在网上找的教程都差不多,但是到了这个for循环网上的教程可就差劲,还没找到一篇可以说清这个事的文章,刚开始我是用js来帮助循环的,还是用实例说吧,刚开始我是这样做的:
for($i=0;$i<20;4i++ {

中间就是采集内容的部分了,省略了

采集了一页,肯定要采集再一页啊
可是再用fopen打开链接时就不行了。请求失败什么的,用js也不行,最后才知道要用这句echo "<META HTTP-EQUIV=REFRESH CONTENT='0;URL=aa.php?id=1'>";其中aa.php就是我们的程序的文件名, id后面的数字就可以帮助我们实现循环,采集多个页面。这就是能真正循环起来的关键
}
脑子有点难受,写得有点乱,将就着看吧,在高手看来这可能没什么大不了的,可是对于我等菜鸟来说,实在是很有帮助。

来源:http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2010/0226/4003.html

PHP采集程序原理分析篇相关推荐

  1. php采集分析,PHP采集程序原理分析篇

    由于需要,要写一个简单的PHP采集程序,照例是到网上找了一堆教程,然后照猫画虎,可是发现网上的教程全是似是而非,没有一个真正能用的.苦想了几天,终于弄明白了里面的道理.在这里写出来,请高手指正. 采集 ...

  2. matlab模拟三体运动_如何写出三体的MATLAB程序-理论分析篇

    如何写出三体的MATLAB程序-理论分析篇 写在前面 之所以写这个程序,是因为某天晚上无聊,室友正在学习MATLAB,于是提议写一个三体运动的物理模拟程序来练练手.就此,我也写一份该程序来为室友做一个 ...

  3. 【SemiDrive源码分析】【MailBox核间通信】44 - 基于Mailbox IPCC RPC 实现核间通信(RTOS侧 IPCC_RPC Server 消息接收及回复 原理分析篇)

    [SemiDrive源码分析][MailBox核间通信]44 - 基于Mailbox IPCC RPC 实现核间通信(RTOS侧 IPCC_RPC Server 消息接收及回复 原理分析篇) 一.RT ...

  4. ASP采集-ASP采集程序原理

    采集程序的主要步骤如下: 一.获取被采集的页面的内容 二.从获取代码中提取所有用的数据 一.获取被采集的页面的内容 我目前所掌握的ASP常用获取被采集的页面的内容方法: 1.用serverXMLHTT ...

  5. php小偷程序原理分析2

    建立我们第一个PHP文件: 你可以用记事本,可以用Dreamweaver也可以用专用PHP编辑软件 取名字为 commom.php 内容为 -------- <?php include './c ...

  6. Android应用程序组件Content Provider在应用程序之间共享数据的原理分析(1)

             在Android系统中,不同的应用程序是不能直接读写对方的数据文件的,如果它们想共享数据的话,只能通过Content Provider组件来实现.那么,Content Provide ...

  7. 一篇读懂:Android手机如何通过USB接口与外设通信(附原理分析及方案选型)

    更多技术干货,欢迎扫码关注博主微信公众号:HowieXue,共同探讨软件知识经验,关注就有海量学习资料免费领哦: 目录 0背景 1.手机USB接口通信特点 1.1 使用方便 1.2 通用性强 1.3 ...

  8. 硬盘分区按照1G=1024M换算分区后不是整数(想分10G,分区时填入大小102400M.但是分区完毕显示却是99.9G或近似值9.XXG,而不是10G整)。本篇为这个问题的原理分析和解决办法

    提出问题 老早以前的问题了,今天分区的时候按照近似算法又出现又出现了近似值, 这99.98简直不能忍 硬盘分区按照1G=1024M换算分区后不是整数(想分10G,分区时填入大小102400M.但是分区 ...

  9. VR技术原理分析,【VR原理入门理论篇】

    VR技术原理分析,[VR原理入门理论篇],学习研究VR技术必须要了解的理论知识. 目录 1. VR沉浸感和交互作用产生的原理: 2. 关于沉浸感和交互作用的定义 3. 如何生成符合VR要求的虚拟世界 ...

最新文章

  1. mysql数据库c 操作o_linux下c操作mysql数据库。gcc报错。谁能帮忙看下啊。
  2. python数据挖掘主要特点_python数据挖掘(从数据集中抽取特征)
  3. 18.DataGrid内绑定ComboBox和ListBox以及取值
  4. 计算机二级7月考试,2020年计算机二级MS Office考试每日一练(7月27日)
  5. php中cookie的用法
  6. 如何读论文?-如何写好科技论文之我见(八)
  7. 红包雨效果html,js+css实现红包雨效果
  8. Sharding-JDBC水平分表(环境搭建)_Sharding-Sphere,Sharding-JDBC分布式_分库分表工作笔记007
  9. MATLAB随机数生成器
  10. HTTPS and the TLS handshake protocol阅读笔记
  11. 系统可行性研究报告模板
  12. python连接微信运动_用Python霸屏微信运动,横扫支付宝榜单 !
  13. 13款用于Web的流行HTML5视频播放器
  14. 小型产生式系统——昆虫识别
  15. Twaver-HTML5基础学习(1)两点一线
  16. UEFI——EFI Systable Table
  17. blob写法的浏览器兼容性
  18. 波动率曲面(完整版)
  19. CVPR 2022 | 商汤/上交/港中文提出U2PL:使用不可靠伪标签的半监督语义分割
  20. mybatis高级映射一对多查询(一)

热门文章

  1. 可调电阻封装图_电阻你会选型了吗?
  2. 指针--用指针变量作函数参数的实例(按值调用与模拟按引用调用)、函数指针及其应用
  3. 脉冲信号的频谱分布(通过示波器观察与验证占空比与各阶频率分量幅值的关系)
  4. 7-1 迷宫问题 (10 分)
  5. RS232电平、CMOS电平、TTL电平是什么,区别是什么?
  6. python 会议室预约系统 开源_开源会议室预订系统-MRBS安装使用教程
  7. 计算机对电影工业的影响的英语作文,2019考研英语作文范文欣赏:电影电视对人们行为的影响...
  8. 微博签到打卡poi数据(2018年1月-2022年)
  9. linux脚本隐藏托盘,Shell_NotifyIcon实现任意托盘图标的隐藏与再现
  10. 如何在3ds max中创建可用于真人场景的巨型机器人:第 1部分