做数据采集的流程:
进入一个网站后首先要查看网页源代码,审查检测源代码中是否存在我们需要的内容,如果有则可以直接使用正则匹配的方式来进行数据的抓取和提取;
假如我们需要的内容是由网站的js动态生成的,我们就不能直接对网站进行正则匹配的方式进行数据抓取,这时我们需要打开(注:我用的火狐)Firebug网络中查看服务器传输回的数据里可以找到服务器返回的源码,反而更加便捷;
在PHP中有一些内置的函数可以帮助我们更快捷的抓取网页源代码比如:file_get_contents; 包括正则匹配里常用的preg_match,preg_match_all;正确并熟练的使用PHP内置函数和方法可以极大节省我们的时间;
class PHP1
{
/**
* 采集详情页
*/
public function getDetailPage($url)
{
//获取源代码
$str = Curl::get($url);
//提取标题内容
preg_match('/
(.*)<\/h1>.*发布日期:(.*)  来源.*(.*)<\/div>.*.*转载请注明来源.*.*<\/a>(.*)转载请注明来源.*<\/div>/isU', $str, $temp);
//创建pdo对象
$pdo = new PDO('mysql:host=localhost;dbname=lamp;charset=utf8;port=3306','root','');
//发送预处理指令
$stmt = $pdo->prepare('insert into article (title, con, intro, time)values(:title, :con, :intro, :time)');
//参数的绑定
$arr = array(
':title'=>$temp[1],
':con'=>$temp[4],
':intro'=>$temp[3],
':time'=>$temp[2]
);
$stmt->execute($arr);
$id = $pdo->lastInsertId();
return $id;
}
/**
* 采集列表页 获取详情页的url
*/
public function getListUrl($url)
{
//获取当前列表页中的源代码
$data = Curl::get($url);
if(empty($data)){
return false;
}
//正则匹配
preg_match_all('/
.*.*<\/li>/isU', $data, $temp);
//返回结果
return $temp[1];
}
/**
* 开始采集
*/
public function startCollect(){
$urls = $this->getListUrl('http://www.php1.cn/category/44.html');
//遍历
foreach ($urls as $key => $value) {
$this->getDetailPage($value);
}
}
}
/**
* curl工具类
*/
class Curl{
public static function get($url){
//初始化curl资源
$ch = curl_init($url);
//设置请求选项
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
//发送请求
$res = curl_exec($ch);
//
return $res;
}
}
// $res = get('http://www.php1.cn/Content/XiaoXinGaoXiaoLvDe_sql_ChaXunTaYeHuiDaoZhiWangZhanXiangYingBianMan.html');
//创建对象
// $obj = new PHP1;
// $url = 'http://www.php1.cn/Content/XiaoXinGaoXiaoLvDe_sql_ChaXunTaYeHuiDaoZhiWangZhanXiangYingBianMan.html';
// $res = $obj->getDetailPage($url);
//读取列表页的内容
// $obj->getListUrl('http://www.php1.cn/category/44.html');
// $obj -> startCollect();
//如果代码报错 curl_init undefined
//wampserver->php->php extensions->php_curl
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
上一篇:yii2 rbac权限控制详细操作步骤 - 白狼栈
下一篇:dede channelartlist 中引用channel 并且设置当前选择类的样式,currentstyle暂时没有效果.特发求助!!!! - samcao![千万级数据并发解决方案](//m.sbmmt.com/img/upload/course/000/000/071/627b97145319f588.png)
相关文章推荐
• 第一节--面向对象编程--ClassesandObjectsinPHP51• ZendOptimizer配置指南• BluePage通用分页类助开发者提高开发效率• 基于DB2及PHP的应用系统跨平台迁移详细步骤(二)• 在PHP中利用XML技术构造远程服务(1)相关课程推荐
![](//m.sbmmt.com/img/upload/course/000/000/001/5d1c6df423564706.jpg)
独孤九贱(3)_JavaScript视频教程
javascript是运行在浏览器上的脚本语言,连续多年,被评为全球最受欢迎的编程语言。是前端开发必备三大法器中,最具杀伤力。如果前端开发是降龙十八掌,好么javascript就是第18掌:亢龙有悔。没有它,你的前端生涯是不完整的。《php.cn独孤九贱(3)-JavaScript视频教程》课程特色:php中文网原创幽默段子系列课程,以恶搞,段子为主题风格的php视频教程!轻松的教学风格,简短的教学模式,让同学们在不知不觉中,学会了javascript知识。
JavaScript教程123987次播放
![](//m.sbmmt.com/img/upload/course/000/000/001/5d1c6e0d2b744633.jpg)
独孤九贱(6)_jQuery视频教程
jQuery是一个快速、简洁的JavaScript框架。设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。
核心特性可以总结为:具有独特的链式语法和短小清晰的多功能接口;具有高效灵活的css选择器,并且可对CSS选择器进行扩展;拥有便捷的插件扩展机制和丰富的插件。兼容各种主流浏览器,如IE 6.0+、FF 1.5+、Safari 2.0+、Opera 9.0+等,是全球最流行的前端开发框架之一。PHP中文网根据最新版本,独家录制jQuery最新视频教程,回馈PHP中文网的新老用户。
jQuery教程102483次播放
![](//m.sbmmt.com/img/upload/course/000/000/015/612f16c1e1c8e978.jpg)
jQuery与Ajax基础与实战
jQuery是最流行的JS函数库,封装了许多实用的功能,其中最引人入胜的就是Ajax。
jQuery中的Ajax操作,语法简单,操作方便,使Ajax从未如此轻松,前端人员从此不再为与服务器异步交互而发愁,本套课程,精选了最常用的几个方法,从基本的语法到每个参数,再到具体实例进行了全面的讲解。
AJAX教程3865次播放
![](//m.sbmmt.com/img/upload/course/000/000/015/617b8f8af2b97409.jpg)
Git教程(60分钟全程无废话版)
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持
JavaScript教程3202次播放
1/1![]()
//创建pdo对象
$pdo = new PDO('mysql:host=localhost;dbname=lamp;charset=utf8;port=3306','root','');
//发送预处理指令
$stmt = $pdo->prepare('insert into article (title, con, intro, time)values(:title, :con, :intro, :time)');
//参数的绑定
$arr = array(
':title'=>$temp[1],
':con'=>$temp[4],
':intro'=>$temp[3],
':time'=>$temp[2]
);
$stmt->execute($arr);
$id = $pdo->lastInsertId();
return $id;
}
/**
* 采集列表页 获取详情页的url
*/
public function getListUrl($url)
{
//获取当前列表页中的源代码
$data = Curl::get($url);
if(empty($data)){
return false;
}
//正则匹配
preg_match_all('/
<\/li>/isU', $data, $temp);
//返回结果
return $temp[1];
}
/**
* 开始采集
*/
public function startCollect(){
$urls = $this->getListUrl('http://www.php1.cn/category/44.html');
//遍历
foreach ($urls as $key => $value) {
$this->getDetailPage($value);
}
}
}
/**
* curl工具类
*/
class Curl{
public static function get($url){
//初始化curl资源
$ch = curl_init($url);
//设置请求选项
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
//发送请求
$res = curl_exec($ch);
//
return $res;
}
}
// $res = get('http://www.php1.cn/Content/XiaoXinGaoXiaoLvDe_sql_ChaXunTaYeHuiDaoZhiWangZhanXiangYingBianMan.html');
//创建对象
// $obj = new PHP1;
// $url = 'http://www.php1.cn/Content/XiaoXinGaoXiaoLvDe_sql_ChaXunTaYeHuiDaoZhiWangZhanXiangYingBianMan.html';
// $res = $obj->getDetailPage($url);
//读取列表页的内容
// $obj->getListUrl('http://www.php1.cn/category/44.html');
// $obj -> startCollect();
//如果代码报错 curl_init undefined
//wampserver->php->php extensions->php_curl
//返回结果
return $temp[1];
}
/**
* 开始采集
*/
public function startCollect(){
$urls = $this->getListUrl('http://www.php1.cn/category/44.html');
//遍历
foreach ($urls as $key => $value) {
$this->getDetailPage($value);
}
}
}
/**
* curl工具类
*/
class Curl{
public static function get($url){
//初始化curl资源
$ch = curl_init($url);
//设置请求选项
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
//发送请求
$res = curl_exec($ch);
//
return $res;
}
}
// $res = get('http://www.php1.cn/Content/XiaoXinGaoXiaoLvDe_sql_ChaXunTaYeHuiDaoZhiWangZhanXiangYingBianMan.html');
//创建对象
// $obj = new PHP1;
// $url = 'http://www.php1.cn/Content/XiaoXinGaoXiaoLvDe_sql_ChaXunTaYeHuiDaoZhiWangZhanXiangYingBianMan.html';
// $res = $obj->getDetailPage($url);
//读取列表页的内容
// $obj->getListUrl('http://www.php1.cn/category/44.html');
// $obj -> startCollect();
//如果代码报错 curl_init undefined
//wampserver->php->php extensions->php_curl
![千万级数据并发解决方案](http://m.sbmmt.com/img/upload/course/000/000/071/627b97145319f588.png)
相关文章推荐
• 第一节--面向对象编程--ClassesandObjectsinPHP51• ZendOptimizer配置指南• BluePage通用分页类助开发者提高开发效率• 基于DB2及PHP的应用系统跨平台迁移详细步骤(二)• 在PHP中利用XML技术构造远程服务(1)独孤九贱(3)_JavaScript视频教程
javascript是运行在浏览器上的脚本语言,连续多年,被评为全球最受欢迎的编程语言。是前端开发必备三大法器中,最具杀伤力。如果前端开发是降龙十八掌,好么javascript就是第18掌:亢龙有悔。没有它,你的前端生涯是不完整的。《php.cn独孤九贱(3)-JavaScript视频教程》课程特色:php中文网原创幽默段子系列课程,以恶搞,段子为主题风格的php视频教程!轻松的教学风格,简短的教学模式,让同学们在不知不觉中,学会了javascript知识。
JavaScript教程123987次播放
独孤九贱(6)_jQuery视频教程
jQuery是一个快速、简洁的JavaScript框架。设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。 核心特性可以总结为:具有独特的链式语法和短小清晰的多功能接口;具有高效灵活的css选择器,并且可对CSS选择器进行扩展;拥有便捷的插件扩展机制和丰富的插件。兼容各种主流浏览器,如IE 6.0+、FF 1.5+、Safari 2.0+、Opera 9.0+等,是全球最流行的前端开发框架之一。PHP中文网根据最新版本,独家录制jQuery最新视频教程,回馈PHP中文网的新老用户。
jQuery教程102483次播放
jQuery与Ajax基础与实战
jQuery是最流行的JS函数库,封装了许多实用的功能,其中最引人入胜的就是Ajax。 jQuery中的Ajax操作,语法简单,操作方便,使Ajax从未如此轻松,前端人员从此不再为与服务器异步交互而发愁,本套课程,精选了最常用的几个方法,从基本的语法到每个参数,再到具体实例进行了全面的讲解。
AJAX教程3865次播放
Git教程(60分钟全程无废话版)
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持
JavaScript教程3202次播放