PHP 采集程序原理分析篇


Posted in PHP onMarch 05, 2010

苦想了几天,终于弄明白了里面的道理。在这里写出来,请高手指正。
采集程序的思路很简单,无非就是先打一个页面,一般都是列表页,取得里面全部链接的地址,然后打开逐条链接,寻找我们感兴趣的东西,如果找到,就把它入库或别的处理。下面以一个很简单的例子来说说。

首先确定一个采集页,一般就是列表面了。这里目标是:https://3water.com/article/11/index.htm。这是一个列表页,我们的目的就是采集这个列表页上全部的文章。

有列表页了,第一步先打开它,把它的内容纳入到我们的程序中来。一般用fopen或是file_get_contents这两个函数,我们这里用fopen作例子。怎么打开它呢?很简单:$source=fopen("https://3water.com/article/11/index.htm",'r');实际上已经把内容纳入到我们的程序中来了。注意得到的$source是一个资源,不是可处理的文本,所以再用函数fread将内容读到一个变量中,这次就是真正的可编辑的文本了。例子:
$content=fread($source,99999);后面的数字表示字节数,填个大的就行。你用file_put_contents将$content写入到一个文本文件,可以看出里面的内容其实就是网页的源码。得到了网页的源码,我们就要分析里面的文章链接地址,这里要用到正则表达式了,[推荐正则表达式教程(https://3water.com/article/7/all/545.1.htm)]。通过查看源代码,我们可以看到里面文章的链接地址全是这个样子<div class="in_arttitle"><a href="https://3water.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后面的数字就可以帮助我们实现循环,采集多个页面。这就是能真正循环起来的关键
}
脑子有点难受,写得有点乱,将就着看吧,在高手看来这可能没什么大不了的,可是对于我等菜鸟来说,实在是很有帮助。

PHP 相关文章推荐
一个oracle+PHP的查询的例子
Oct 09 PHP
第十节--抽象方法和抽象类
Nov 16 PHP
php你的验证码安全码?
Jan 02 PHP
php excel类 phpExcel使用方法介绍
Aug 21 PHP
php设计模式 Proxy (代理模式)
Jun 26 PHP
php explode函数实例代码
Feb 27 PHP
php读取纯真ip数据库使用示例
Jan 26 PHP
PHP连接MSSQL2008/2005数据库(SQLSRV)配置实例
Oct 22 PHP
php根据某字段对多维数组进行排序的方法
Mar 07 PHP
PHP 类与构造函数解析
Feb 06 PHP
基于PHP+Mysql简单实现了图书购物车系统的实例详解
Aug 06 PHP
有关PHP 中 config.m4 的探索
Aug 26 PHP
PHP 一个页面执行时间类代码
Mar 05 #PHP
一步一步学习PHP(8) php 数组
Mar 05 #PHP
一步一步学习PHP(7) php 字符串相关应用
Mar 05 #PHP
PHP 创建文件(文件夹)以及目录操作代码
Mar 04 #PHP
php &amp;&amp; 逻辑与运算符使用说明
Mar 04 #PHP
PHP MVC模式在网站架构中的实现分析
Mar 04 #PHP
通用PHP动态生成静态HTML网页的代码
Mar 04 #PHP
You might like
迅雷下载《中学科技》怀旧期刊下载
2021/02/27 无线电
网页游戏开发入门教程二(游戏模式+系统)
2009/11/02 PHP
PHP用星号隐藏部份用户名、身份证、IP、手机号等实例
2014/04/08 PHP
解析WordPress中函数钩子hook的作用及基本用法
2015/12/22 PHP
PHP实现多关键字加亮功能
2016/10/21 PHP
php+mysql+ajax 局部刷新点赞/取消点赞功能(每个账号只点赞一次)
2020/07/24 PHP
JS中typeof与instanceof之间的区别总结
2013/11/14 Javascript
Js获取下拉框选定项的值和文本的实现代码
2014/02/26 Javascript
js定时器(执行一次、重复执行)
2014/03/07 Javascript
JavaScript计时器示例分析
2015/02/05 Javascript
JQuery实现级联下拉框效果实例讲解
2015/09/17 Javascript
延时加载JavaScript代码提高速度
2015/12/27 Javascript
jQuery 调用WebService 实例讲解
2016/06/28 Javascript
jQuery插件HighCharts绘制2D半圆环图效果示例【附demo源码下载】
2017/03/09 Javascript
微信小程序实现图片轮播及文件上传
2017/04/07 Javascript
Vue组件的使用及个人理解与介绍
2019/02/09 Javascript
js+springMVC 提交数组数据到后台的实例
2019/09/21 Javascript
微信小程序实现同时上传多张图片
2020/02/03 Javascript
微信小程序学习总结(一)项目创建与目录结构分析
2020/06/04 Javascript
在antd4.0中Form使用initialValue操作
2020/11/02 Javascript
python和shell变量互相传递的几种方法
2013/11/20 Python
python整小时 整天时间戳获取算法示例
2019/02/20 Python
Python+numpy实现矩阵的行列扩展方式
2019/11/29 Python
python3获取文件中url内容并下载代码实例
2019/12/27 Python
通过实例了解Python str()和repr()的区别
2020/01/17 Python
python mysql中in参数化说明
2020/06/05 Python
详解Python IO口多路复用
2020/06/17 Python
Python切片列表字符串如何实现切换
2020/08/06 Python
香港永安旅游网:Wing On Travel
2017/04/10 全球购物
洛杉矶健身中心女性专用运动服饰品牌:Marika
2018/05/09 全球购物
结构和类有什么异同
2012/07/16 面试题
幼儿园教师师德师风演讲稿:爱我所爱 无悔青春
2014/09/10 职场文书
本科毕业答辩开场白
2015/05/27 职场文书
2016年4月份红领巾广播稿
2015/12/21 职场文书
党员公开承诺书(2016最新版)
2016/03/24 职场文书
table设置超出部分隐藏,鼠标移上去显示全部内容的方法
2022/12/24 HTML / CSS