基于curl数据采集之单页面采集函数get_html的使用


Posted in PHP onApril 28, 2013

这是一个系列 没办法在一两天写完 所以一篇一篇的发布

大致大纲:

1.curl数据采集系列之单页面采集函数get_html

2.curl数据采集系列之多页面并行采集函数get_htmls

3.curl数据采集系列之正则处理函数get _matches

4.curl数据采集系列之代码分离

5.curl数据采集系列之并行逻辑控制函数web_spider

单页面采集在数据采集过程中是最常用的一个功能 有时在服务器访问限制的情况下 只能使用这种采集方式 慢 但是可以简单的控制 所以写好一个常用的curl函数调用是很重要的

百度和网易比较熟悉 所以拿这两个网站首页采集来做例子讲解

最简单的写法:

$url = 'http://www.baidu.com';
 $ch = curl_init($url);
 curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
 curl_setopt($ch,CURLOPT_TIMEOUT,5);
 $html = curl_exec($ch);
 if($html !== false){
     echo $html;
 }

由于使用频繁 可以利用curl_setopt_array写成函数的形式:
function get_html($url,$options = array()){
     $options[CURLOPT_RETURNTRANSFER] = true;
     $options[CURLOPT_TIMEOUT] = 5;
     $ch = curl_init($url);
     curl_setopt_array($ch,$options);
     $html = curl_exec($ch);
     curl_close($ch);
     if($html === false){
         return false;
     }
     return $html;
 }

$url = 'http://www.baidu.com';
echo get_html($url);

有时候需要传递一些特定的参数才能得到正确的页面 如现在要得到网易的页面:
$url = 'http://www.163.com';
echo get_html($url);

会看到一片空白 什么也没有 那么再利用curl_getinfo写一个函数 看看发生了什么:
function get_info($url,$options = array()){
     $options[CURLOPT_RETURNTRANSFER] = true;
     $options[CURLOPT_TIMEOUT] = 5;
     $ch = curl_init($url);
     curl_setopt_array($ch,$options);
     $html = curl_exec($ch);
     $info = curl_getinfo($ch);
     curl_close($ch);
     return $info;
 }
 $url = 'http://www.163.com';
 var_dump(get_info($url));

基于curl数据采集之单页面采集函数get_html的使用

可以看到http_code 302 重定向了 这时候就需要传递一些参数了:

$url = 'http://www.163.com';
$options[CURLOPT_FOLLOWLOCATION] = true;
echo get_html($url,$options);

基于curl数据采集之单页面采集函数get_html的使用

会发现 怎么是这样的一个页面 和我们电脑访问的不同???

看来参数还是不够 不够服务器判断我们的客户端是什么设备上的 就返回了个普通版

看来还要传送USERAGENT

$url = 'http://www.163.com';
 $options[CURLOPT_FOLLOWLOCATION] = true;
 $options[CURLOPT_USERAGENT] = 'Mozilla/5.0 (Windows NT 6.1; rv:19.0) Gecko/20100101 Firefox/19.0';
 echo get_html($url,$options);

基于curl数据采集之单页面采集函数get_html的使用

 

OK现在页面已经出来了 这样基本这个get_html函数基本能实现这样扩展的功能

当然也有另外的办法可以实现,当你明确的知道网易的网页的时候就可以简单采集了:

 $url = 'http://www.163.com/index.html';
 echo get_html($url);

这样也可以正常的采集
PHP 相关文章推荐
967 个函式
Oct 09 PHP
php实现的MySQL通用查询程序
Mar 11 PHP
php图片验证码代码
Mar 27 PHP
IIS6+PHP5+MySQL5+Zend Optimizer+phpMyAdmin安装配置图文教程 2009年
Jun 08 PHP
PHP中利用substr_replace将指定两位置之间的字符替换为*号
Jan 27 PHP
jQuery+PHP实现的掷色子抽奖游戏实例
Jan 04 PHP
PHP实现上一篇下一篇的方法实例总结
Sep 22 PHP
Laravel利用gulp如何构建前端资源详解
Jun 03 PHP
Yii框架ACF(accessController)简单权限控制操作示例
Apr 26 PHP
PHP+MySQL实现在线测试答题实例
Jan 02 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
Feb 27 PHP
Laravel如何实现适合Api的异常处理响应格式
Jun 14 PHP
基于php上传图片重命名的6种解决方法的详细介绍
Apr 28 #PHP
PHP基础学习之流程控制的实现分析
Apr 28 #PHP
PHP基础之运算符的使用方法
Apr 28 #PHP
PHP数据类型之整数类型、浮点数的介绍
Apr 28 #PHP
PHP数据类型之布尔型的介绍
Apr 28 #PHP
PHP中最容易忘记的一些知识点总结
Apr 28 #PHP
php中is_null,empty,isset,unset 的区别详细介绍
Apr 28 #PHP
You might like
PHP MSSQL 存储过程的方法
2008/12/24 PHP
PHP 批量更新网页内容实现代码
2010/01/05 PHP
php 图片加水印与上传图片加水印php类
2010/05/12 PHP
提高PHP编程效率的方法
2013/11/07 PHP
PHP模块化安装教程
2016/06/01 PHP
php防止表单重复提交实例讲解
2019/02/11 PHP
JavaScript 图像动画的小demo
2012/05/23 Javascript
Google Maps API地图应用示例分享
2014/10/23 Javascript
浅谈jQuery中 wrap() wrapAll() 与 wrapInner()的差异
2014/11/12 Javascript
jQuery Validate表单验证插件 添加class属性形式的校验
2016/01/18 Javascript
浅析函数声明和函数表达式——函数声明的声明提前
2016/05/03 Javascript
jQuery插件formValidator实现表单验证
2016/05/23 Javascript
通过jquery实现页面的动画效果(实例代码)
2016/09/18 Javascript
JavaScript学习笔记整理_关于表达式和语句
2016/09/19 Javascript
yarn与npm的命令行小结
2016/10/20 Javascript
vue-cli 引入jQuery,Bootstrap,popper的方法
2018/09/03 jQuery
简单了解node npm cnpm的具体使用方法
2019/02/27 Javascript
深入学习Vue nextTick的用法及原理
2019/10/08 Javascript
JavaScript实现沿五角星形线摆动的小圆实例详解
2020/07/28 Javascript
python用ConfigObj读写配置文件的实现代码
2013/03/04 Python
python基于socket实现网络广播的方法
2015/04/29 Python
Python中的random()方法的使用介绍
2015/05/15 Python
Python双链表原理与实现方法详解
2020/02/22 Python
Python关键字及可变参数*args,**kw原理解析
2020/04/04 Python
CSS3 中filter(滤镜)属性使用详解
2020/04/07 HTML / CSS
HTML5声音录制/播放功能的实现代码
2018/05/03 HTML / CSS
会计应聘求职信范文
2013/12/17 职场文书
财务部出纳岗位职责
2013/12/22 职场文书
青春寄语大全
2014/04/09 职场文书
运动会演讲稿
2014/05/07 职场文书
报表员工作失误检讨书范文
2014/09/19 职场文书
公司领导班子四风对照检查材料
2014/09/27 职场文书
初三语文教学计划
2015/01/22 职场文书
项目负责人岗位职责
2015/02/15 职场文书
幸福终点站观后感
2015/06/04 职场文书
2016年小学“我们的节日·中秋节”活动总结
2016/04/05 职场文书