当前位置:  编程技术>php
本页文章导读:
    ▪curl数据采集系列之单页面采集函数get_html      在做数据采集时经常要使用到curl+正则的方式采集需要的数据 根据自己的工作经验 把自己写的一些常用自定义函数 拿到博客园来分享 如果有写得不恰当的地方 请多多指教.........
    ▪PHP输出当前进程所有变量 / 常量 / 模块 / 函数 / 类      get_defined_vars()返回由所有已定义变量所组成的数组get_defined_constants()返回由所有已定义常量所组成的数组get_defined_functions ()获得所有已定义的函数get_loaded_extensions()获得所有可用的模块get_extensi.........
    ▪PHP面向对象编程-构造方法      在类中自定义构造方法的基本语法://php5这样[修饰符]function __construct([参数列表]){ }//php4 这样[修饰符]function 类名([参数列表]){ }看个列子就很好理解了:<?php cla.........

[1]curl数据采集系列之单页面采集函数get_html
    来源:    发布时间: 2013-11-07

在做数据采集时经常要使用到curl+正则的方式采集需要的数据 根据自己的工作经验 把自己写的一些常用自定义函数 拿到博客园来分享 如果有写得不恰当的地方 请多多指教

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

大致大纲:

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

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

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

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

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

、、、

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

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

 

最简单的写法:

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

由于使用频繁 可以利用curl_setopt_array写成函数的形式:

1 function get_html($url,$options = array()){
2 $options[CURLOPT_RETURNTRANSFER] = true;
3 $options[CURLOPT_TIMEOUT] = 5;
4 $ch = curl_init($url);
5 curl_setopt_array($ch,$options);
6 $html = curl_exec($ch);
7 curl_close($ch);
8 if($html === false){
9 return false;
10 }
11 return $html;
12 }
1 $url = 'http://www.baidu.com';
2 echo get_html($url);

有时候需要传递一些特定的参数才能得到正确的页面 如现在要得到网易的页面:

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

会看到一片空白 什么也没有 那么再利用curl_getinfo写一个函数 看看发生了什么:

1 function get_info($url,$options = array()){
2 $options[CURLOPT_RETURNTRANSFER] = true;
3 $options[CURLOPT_TIMEOUT] = 5;
4 $ch = curl_init($url);
5 curl_setopt_array($ch,$options);
6 $html = curl_exec($ch);
7 $info = curl_getinfo($ch);
8 curl_close($ch);
9 return $info;
10 }
11 $url = 'http://www.163.com';
12 var_dump(get_info($url));

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

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

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

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

看来还要传送USERAGENT

 


    
[2]PHP输出当前进程所有变量 / 常量 / 模块 / 函数 / 类
    来源:    发布时间: 2013-11-07

get_defined_vars()

返回由所有已定义变量所组成的数组

get_defined_constants()

返回由所有已定义常量所组成的数组

get_defined_functions ()

获得所有已定义的函数

get_loaded_extensions()

获得所有可用的模块

get_extension_funcs(string $module_name)

获取指定模块的可用函数

get_declared_classes()

获取由已定义类的名字所组成的数组

本文链接


    
[3]PHP面向对象编程-构造方法
    来源:    发布时间: 2013-11-07

在类中自定义构造方法的基本语法:

//php5这样
[修饰符]function __construct([参数列表]){

}
//php4 这样[修饰符]function 类名([参数列表]){

}

看个列子就很好理解了:
<?php

class Person{

public $name;
public $age;

//构造方法 php5
public function __construct($name,$age){

$this->name=$name;
$this->age=$age;
}

//构造方法 php4 写在这里是php5为了兼容PHP4
public function Person($name,$age){

$this->name=$name;
$this->age=$age;
}


}

$p1=new Person("老大",27);
echo $p1->name;
$p1=new Person("小二",26);
$p1=new Person("小三",24);

?>

注意地方:

$this 的理解:

1、$this 本质可以理解就是这个对象的地址

2. 哪个对象使用到$this, 就是哪个对象地址

3. $this不能在类外部使用
 
对构造方法的理解:
  • 构造方法名和类名相同(php4版),php5版的构造方法名可以和类名相同,也可以是__construct()
  • 构造方法的默认访问修饰符是public,同时构造方法没有返回值
  • 创建新对象成功后,系统自动的调用该类的构造方法   
  • 一个类有且只有一个构造方法,在php5后虽然__construct()  和 类名() 可以共存,但是实际上也只能使用一个。
  • 如果没有给类自定义构造方法,则该类使用系统默认的构造方法。
  • 如果给类自定义了构造方法,则该类的默认构造方法被覆盖。


本文链接


    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪PHP函数microtime()时间戳的定义与用法 iis7站长之家
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3